Estimating 3d transformation of two triangles

In summary: R u1 has three unknowns and there are two equations, so there is a 1-parameter family of solutions. Assuming the angle is positive, take theta = acos((trace(R)-1)/2).In summary, To calculate the transformation matrix between two triangles in 3D, you can solve a set of linear systems with constraints on the initial and final points. For rigid transformations, you only need the direction vectors as inputs, but for non-rigid transformations, there will be a subspace of possibilities. To rotate one vector to another, you can use the axis of rotation given by a unit vector and the rotation matrix formula. You can then determine the angle using the trace of the rotation matrix and solve for the transformation matrix
  • #1
nimmie
1
0
I have two triangles in 3d. I need to calculate transformation matrix(3X3) between two triangles in 3D.

1)How can I calculate the transformation matrix(rigid) while fixing one of the points to the origin(to get rid of the translation part)?

2)How does it affect if the deformation is non rigid?
 
Mathematics news on Phys.org
  • #2
nimmie said:
I have two triangles in 3d. I need to calculate transformation matrix(3X3) between two triangles in 3D.

1)How can I calculate the transformation matrix(rigid) while fixing one of the points to the origin(to get rid of the translation part)?

2)How does it affect if the deformation is non rigid?

1) You can, in the general case solve a chunk of linear systems where the determinant of the matrix is 1, given the constraints of initial and final points that satisfy the transformation. If you can calculate something that makes sense, that is your answer (you may also have free parameters depending on your initial/final points as well the dimension of your space).

2) If the deformation is non-rigid then you won't have a pure-rotation, but some thing a lot more general and you will have to provide the relaxed constraints (i.e. det <> 1).

For finding the matrix given two points I recommend you find two orthogonal rotations in the way that one rotation transforms triangle so one point is positioned and then the next rotation axis is aligned with the vertex that has the proper position and the angle corresponds to rotating the other vertex into position.

The idea of this is that if you try and rotate a vertex around an axis that is parallel to the vertex itself, it won't change. Because you have two vertices, I think this idea is optimal for your situation.

If you need to know how to create axis-angle rotation matrices look here:

http://en.wikipedia.org/wiki/Rotation_matrix#Rotation_matrix_from_axis_and_angle
 
  • #3
I assume you mean you've normalised each triangle to have a vertex at the origin.
If it's rigid there are only 3 degrees of freedom, and only the direction vectors are needed as inputs.
If it's non-rigid then there will be a subspace of possibilities. There will be 9 unknowns but only 6 equations. And that's assuming the association of the vertices of one to those of the other is given.
 
  • #4
Suppose you want to rotate vector u1 to u2 and v1 to v2.
The axis of rotation is given by w where w.u1 = w.u2 and w.v1 = w.v2. w might as well be a unit vector, so that's two equations, two unknowns.
If w = (x, y, z), the matrix which rotates space an angle theta around w is (from http://www.fastgraph.com/makegames/3drotation/) R =
tx2+c txy-sz txz+sy
txy+sz ty2+c tyz-sx
txz-sy tyz+sx tz2+c
where c = cos(theta), s = sin(theta), t = 1-c.
It remains to determine theta from R u1 = u2.
 
  • #5


1) To calculate the rigid transformation matrix between two triangles in 3D, you can use a combination of translation, rotation, and scaling. First, you will need to choose a point on one of the triangles to serve as the origin point. Then, you can calculate the translation vector from this chosen point to the origin. Next, you can use the known points of the two triangles to calculate the rotation and scaling factors. Once you have these values, you can construct the 3x3 transformation matrix by combining the translation, rotation, and scaling components.

2) If the deformation is non-rigid, meaning that the triangles are not simply being translated, rotated, or scaled, the calculation of the transformation matrix becomes more complex. In this case, you will need to use advanced mathematical techniques such as least squares optimization or finite element analysis to accurately determine the transformation between the two triangles. Additionally, the resulting transformation matrix may not be a 3x3 matrix, but rather a higher dimensional matrix that takes into account the non-rigid deformation. This type of analysis is often used in computer graphics and animation to simulate realistic movements and deformations of objects in 3D space.
 

What is 3D transformation?

3D transformation refers to the process of changing the position, size, or orientation of an object in a 3D space. It involves using mathematical equations to calculate the new coordinates of the object's vertices after applying the transformation.

What is the purpose of estimating 3D transformation of two triangles?

The purpose of estimating 3D transformation of two triangles is to determine how the two triangles will be transformed in relation to each other in a 3D space. This can help in various applications such as computer graphics, animation, and geometric modeling.

What are the steps involved in estimating 3D transformation of two triangles?

The steps involved in estimating 3D transformation of two triangles include identifying the vertices of the two triangles, calculating the transformation matrix using the vertices, applying the transformation to the vertices of one triangle, and then comparing the transformed vertices to the vertices of the other triangle to determine the overall transformation.

What are the different types of 3D transformations?

There are several types of 3D transformations, including translation, rotation, scaling, and shearing. Translation involves moving an object in a specific direction, rotation involves rotating an object around a fixed point, scaling involves changing the size of an object, and shearing involves changing the shape of an object.

What are some applications of estimating 3D transformation of two triangles?

Estimating 3D transformation of two triangles has a wide range of applications, including computer graphics, animation, virtual reality, and architectural design. It can also be used in video games, medical imaging, and engineering simulations.

Similar threads

  • General Math
Replies
3
Views
875
  • General Math
Replies
1
Views
994
Replies
5
Views
2K
  • Classical Physics
Replies
4
Views
191
  • Mechanics
Replies
3
Views
108
Replies
5
Views
2K
Replies
2
Views
2K
  • General Math
Replies
1
Views
2K
  • General Math
Replies
7
Views
4K
Back
Top