为什么变换后会有失真?

时间:2019-06-01 18:34:27

标签: 3d rotation transform

在这里,我有一头3d的狮子,我想将狮子的脸变向前。

但是在使用Rodriguez公式进行转换之后,狮子面朝前方,并且它也变成了一只狗,或者只是一只没有狮子的东西。

我不知道为什么?

我用眼睛的向量将狮子调整为平行于x坐标,而鼻子使用的向量将狮子调整为平行于z坐标。

def rotate_center(points1):

up = np.array(points1[506]).reshape((1, 3))
down =  np.array(points1[591]).reshape((1, 3))

upDown_orig = np.array(up - down).reshape((1, 3))
d_upDown = np.sqrt(np.power(upDown_orig[0, 0], 2) + np.power(upDown_orig[0, 1], 2) + np.power(upDown_orig[0, 2], 2))
upDown_new = np.array([[0, 0, d_upDown]])

rotate_matrix_1 = rotate(upDown_orig, upDown_new)
result_1 = np.dot(rotate_matrix_1, points1.T).T

right = np.array(result_1[1104]).reshape((1, 3))
left =  np.array(result_1[463]).reshape((1, 3))

LR_orig = np.array(left - right).reshape((1, 3))
d_LR = np.sqrt(np.power(LR_orig[0, 0], 2) + np.power(LR_orig[0, 1], 2) + np.power(LR_orig[0, 2], 2))
LR_new = np.array([[d_LR, 0, 0]])

rotate_matrix_2 = rotate(LR_orig, LR_new)
result_2 = np.dot(rotate_matrix_2, result_1.T).T

#plot_3d(result_2)

return result_2

0 个答案:

没有答案