Thread: simply overlapping objects View Single Post
#2
04-21-2008, 07:27 PM
 farshizzo WorldViz Team Member Join Date: Mar 2003 Posts: 2,849
You will need to use some 3D math to determine the orientation of the triangle. Here is some code that will return the transormation matrix of a triangle, given 3 points:
Code:
```import viz
viz.go()

P1 = [-1,1,2]
P2 = [-0.1,2,2.5]
P3 = [1,0.1,2.3]

def GetTriangleMatrix(p1,p2,p3):

#Get vector of p1 to p2
v1 = viz.Vector(p2) - viz.Vector(p1)

#Get vector of p1 to p3
v2 = viz.Vector(p3) - viz.Vector(p1)

#Take cross product to determine normal of triangle
normal = v2 ^ v1

#Determine rotation by rotating forward vector to normal
m = viz.Matrix()
m.makeVecRotVec([0,0,1],normal)

#Set position of matrix to center of triangle
p = viz.Vector(p1) + viz.Vector(p2) + viz.Vector(p3)
m.setPosition( p / 3.0 )

#Return the transformation matrix
return m

#Draw triangle
viz.startlayer(viz.TRIANGLES)
viz.vertexcolor(viz.RED)
viz.vertex(P1)
viz.vertex(P2)
viz.vertex(P3)
viz.endlayer()

#Get matrix of triangle
m = GetTriangleMatrix(P1,P2,P3)

#Create arrow to show triangle rotation/translation