Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss
Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

The graph it would be interesting. I'm positive I got the parameters voiced correctly now, this sniplet is cut & paste ready to go, if you have the dll I posted few messages ago. Attempting restore to describe traingles for this DLL's tri_tri_intersect().

0 views
Skip to first unread message

Nicholas Randall Forystek

unread,
Aug 24, 2016, 5:16:42 AM8/24/16
to
Public Type Vector3D
X As Single
Y As Single
Z As Single
End Type

Public Declare Function VertexPoint_Behind_TrianglePlane Lib
"maxlandlib.dll" Alias "PointBehindPoly" _
(ByVal VertexPointX As Single, ByVal VertexPointY As
Single, ByVal VertexPointZ As Single, _
ByVal TrianglePlaneNormalX As Single, ByVal
TrianglePlaneNormalY As Single, ByVal TrianglePlaneNormalZ As Single, _
ByVal TriangleSideLength1 As Single, ByVal
TriangleSideLength2 As Single, ByVal TriangleSideLength3 As Single) As
Boolean

Public Sub Main()

Dim v As Vector3D
Dim n As Vector3D
Dim p As Vector3D
Dim t1 As Vector3D
Dim t2 As Vector3D
Dim t3 As Vector3D

'make three points of a triangle
t1.X = 20: t1.Y = 0: t1.Z = 0
t2.X = 20: t2.Y = 20: t2.Z = 0
t3.X = -20: t3.Y = -20: t3.Z = 0

'get plane normal of a triangle
n = GetPlaneNormal(t1, t2, t3)

'get lengths of triangle sides
v.X = Distance(t3, t1)
v.Y = Distance(t1, t2)
v.Z = Distance(t2, t3)

'make up a point test scenario
p.X = 0: p.Y = 0: p.Z = -80
'check to see if the point is behind the illogical spun traingular
sphere in back spuns
Debug.Print VertexPoint_Behind_TrianglePlane(p.X, p.Y, p.Z, n.X, n.Y,
n.Z, v.X, v.Y, v.Z)

'make up a point test scenario
p.X = 0: p.Y = 0: p.Z = 60
'check to see if the point is behind the illogical spun traingular
sphere in back spuns
Debug.Print VertexPoint_Behind_TrianglePlane(p.X, p.Y, p.Z, n.X, n.Y,
n.Z, v.X, v.Y, v.Z)

'make up a point test scenario
p.X = 30: p.Y = 30: p.Z = 60
'check to see if the point is behind the illogical spun traingular
sphere in back spuns
Debug.Print VertexPoint_Behind_TrianglePlane(p.X, p.Y, p.Z, n.X, n.Y,
n.Z, v.X, v.Y, v.Z)

'make up a point test scenario
p.X = 30: p.Y = 30: p.Z = -60
'check to see if the point is behind the illogical spun traingular
sphere in back spuns
Debug.Print VertexPoint_Behind_TrianglePlane(p.X, p.Y, p.Z, n.X, n.Y,
n.Z, v.X, v.Y, v.Z)

End Sub

Public Function Distance(ByRef p1 As Vector3D, ByRef p2 As Vector3D) As
Single
Distance = Sqr(((p1.X - p2.X) * (p1.X - p2.X)) + ((p1.Y - p2.Y) *
(p1.Y - p2.Y)) + ((p1.Z - p2.Z) * (p1.Z - p2.Z)))
End Function

Public Function GetPlaneNormal(ByRef v0 As Vector3D, ByRef v1 As Vector3D,
ByRef v2 As Vector3D) As Vector3D
GetPlaneNormal = VectorNormalize(VectorCrossProduct(VectorSubtract(v0,
v1), VectorSubtract(v1, v2)))
End Function

Public Function VectorCrossProduct(ByRef v As Vector3D, ByRef u As Vector3D)
As Vector3D
VectorCrossProduct.X = ((v.Y * u.Z) - (v.Z * u.Y))
VectorCrossProduct.Y = ((v.Z * u.X) - (v.X * u.Z))
VectorCrossProduct.Z = ((v.X * u.Y) - (v.Y * u.X))
End Function

Public Function VectorSubtract(ByRef v As Vector3D, ByRef u As Vector3D) As
Vector3D
VectorSubtract.X = (v.X - u.X)
VectorSubtract.Y = (v.Y - u.Y)
VectorSubtract.Z = (v.Z - u.Z)
End Function

Public Function VectorNormalize(ByRef v As Vector3D) As Vector3D
Dim l As Single
l = Sqr(((v.X * v.X) + (v.Y * v.Y) + (v.Z * v.Z)))
If l = 0 Then l = 1
VectorNormalize.X = (v.X / l)
VectorNormalize.Y = (v.Y / l)
VectorNormalize.Z = (v.Z / l)
End Function


0 new messages