AsignToTriangle Code
Übersicht

![]() |
tftBetreff: AsignToTriangle Code |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo ....
Ich habe mir nach etlichem suchen im Internet volgenden Code zusammen geschustert. Code: [AUSKLAPPEN] Global vectorx# Global vectory# Global vectorz# Global vectorw# Graphics3D 640, 480, 0, 2 AppTitle "Use Arrow Keys to turn" cam = CreateCamera () MoveEntity cam, 0, 0, -10 Global cone = CreateCone () EntityColor cone, 0, 0, 255 light = CreateLight () MoveEntity light, -50, -5, 10 mesh=CreateCube() ScaleMesh mesh,.5,.5,.5 PositionEntity mesh,0,-1,0 surf=GetSurface(mesh,1) anzTri=CountTriangles(surf)-1 Repeat If KeyHit(2) Then tri=tri+1 If tri>anzTri Then tri=0 AlignToTriangle(cone,mesh,surf,tri) If KeyDown (203) TurnEntity mesh, 0, -1, 0, 1 If KeyDown (205) TurnEntity mesh, 0, 1, 0, 1 If KeyDown (200) TurnEntity mesh, 1, 0, 0 If KeyDown (208) TurnEntity mesh, -1, 0, 0 RenderWorld Flip Until KeyHit (1) End Function AlignToTriangle(obj,mesh,surf,tri=0) Local v0,v1,v2 Local d#,x0#,y0#,z0#,x1#,y1#,z1#,x2#,y2#,z2# v0 = TriangleVertex (surf, tri, 0) v1 = TriangleVertex (surf, tri, 1) v2 = TriangleVertex (surf, tri, 2) x0# = VertexX (surf, v0) y0# = VertexY (surf, v0) z0# = VertexZ (surf, v0) x1# = VertexX (surf, v1) y1# = VertexY (surf, v1) z1# = VertexZ (surf, v1) x2# = VertexX (surf, v2) y2# = VertexY (surf, v2) z2# = VertexZ (surf, v2) d#=TriangleNormal#(x0#,y0#,z0#,x1#,y1#,z1#,x2#,y2#,z2#) TFormVector vectorx, vectory, vectorz,mesh,0 AlignToVector obj, TFormedX (), TFormedY (), TFormedZ (), 2,.05 End Function Function TriangleNormal#(Ax#,Ay#,Az#,Bx#,By#,Bz#,Cx#,Cy#,Cz#) Local ux#,uy#,uz#,vx#,vy#,vz# SubVector Bx#,By#,Bz#,Ax#,Ay#,Az# ux#=VectorX() uy#=VectorY() uz#=VectorZ() SubVector Cx#,Cy#,Cz#,Bx#,By#,Bz# vx#=VectorX() vy#=VectorY() vz#=VectorZ() CrossProduct vx#,vy#,vz#,ux#,uy#,uz# Normalize vectorx,vectory,vectorz Return Ax#*vectorx+Ay#*vectory+Az#*vectorz End Function Function VectorX#() Return vectorx End Function Function VectorY#() Return vectory End Function Function VectorZ#() Return vectorz End Function Function VectorW#() Return vectorw End Function Function SubVector(Ax#,Ay#,Az#,Bx#,By#,Bz#) vectorx#=ax#-bx# vectory#=ay#-by# vectorz#=az#-bz# End Function Function Normalize(nx#,ny#,nz#) If nx=0 And ny=0 And nz=0 Return m#=Magnitude(nx#,ny#,nz#) vectorx#=nx#/m# vectory#=ny#/m# vectorz#=nz#/m# End Function Function CrossProduct(Ax#,Ay#,Az#,Bx#,By#,Bz#) vectorx#=Ay#*Bz#-Az#*By# vectory#=Az#*Bx#-Ax#*Bz# vectorz#=Ax#*By#-Ay#*Bx# End Function Function Magnitude(nx#,ny#,nz#) m#= Sqr( (nx*nx) + (ny*ny) + (nz*nz) ) Return m# End Function Sinn der Sache ist es , ein Object nach einer Fläche auszurichten. Das funktioniert auch . Aber das ist mir fiel zu umständlich. Gibt es nicht einen einfacheren weg. |
||
TFT
https://www.sourcemagic.ch Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!! |
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
entsprechende stelle am mesh picken, ql:pickednx()yz nutzen und daran alignen? | ||
MrKeks.net |
![]() |
tft |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi ....
ne .... das funktioniert nur grob. Und macht bei Z=0 nur einen Roll wirbel. |
||
TFT
https://www.sourcemagic.ch Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group