![]() |
|
|
|
#1
|
|||
|
|||
|
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
arrow = viz.add('marker.wrl')
arrow.setMatrix(m)
#Setup pivot camera
import vizcam
vizcam.PivotNavigate(center=m.getPosition(),distance=10)
#Add ground
viz.add('tut_ground.wrl')
|
|
#2
|
|||
|
|||
|
Wow that's exactly what I needed thanks!
I also didn't know about ^, that makes life a bit easier. However this brings up another issue. While my actual project is a bit more complex then the example I asked for, the solution transfered to it extremely well. The issue now is I'm applying this transformation matrix to an on the fly object, which in itself works, however the transformation is applied at the objects current center, which geometrically is not its center at all. All attempts at object.center have failed. I was wondering if there was a simple solution for this one. |
|
#3
|
|||
|
|||
|
The best solution is to create the triangles so their geometric center corresponds to the origin (0,0,0). Is this not a viable option for you?
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Could not find plugin to load objects... | halley | Vizard | 1 | 05-30-2006 12:01 PM |
| putting objects on the screen | jargon | Vizard | 7 | 05-24-2005 12:31 PM |
| Changing the Color of On-the-Fly Objects | vjosh | Vizard | 1 | 01-05-2005 12:48 AM |
| limits on number of objects | benelux | Vizard | 3 | 07-22-2004 02:26 PM |
| 3D sound & child objects | FlyingWren | Vizard | 1 | 09-19-2003 01:13 PM |