Нахождение матриц вращения для угла треугольника с учетом вращения смежных граней - PullRequest
0 голосов
/ 24 мая 2019

Учитывая исходную и трансформированную сетку треугольника, а также матрицы вращения для каждой грани, как мне вычислить повороты вершин?Это просто одна из матриц вращения со смежной грани?Если я не ошибаюсь, вращение не уникально, так что было бы полезно использовать одно вращение лица.

Это способ вычисления преобразования лица.

# template is the positions of the vertices in the original mesh, 
# m respectively those of the transformed one.
# v denotes the triangle corners
origin = template[v[0], :].T
e1 = template[v[1], :].T - origin
e2 = template[v[2], :].T - origin
n = np.cross(e1, e2)
n = n / np.linalg.norm(n)
src = np.asarray([e1, e2, n]).T

to = m[v[0], :].T
t1 = m[v[1], :].T - to
t2 = m[v[2], :].T - to
tn = np.cross(t1, t2)
tn = tn / np.linalg.norm(tn)
tgt = np.asarray([t1, t2, tn]).T

# solve t @ src = tgt for t
t = (np.linalg.solve(src.T, tgt.T)).T 

r = t
u, _,v = np.linalg.svd(r)
r = u @ v

The rotations of the vertices are supposed to compute the rigigity matrix.

...