Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- FUNCTION prj3(Point REF AS Vec3, LinePointA REF AS Vec3, LinePointB REF AS Vec3) // "Projection" Get ClosestPoint on Line from Point.
- DeltaAP_X AS FLOAT : DeltaAP_X = Point.x - LinePointA.x
- DeltaAP_Y AS FLOAT : DeltaAP_Y = Point.y - LinePointA.y
- DeltaAP_Z AS FLOAT : DeltaAP_Z = Point.z - LinePointA.z
- DeltaAB_X AS FLOAT : DeltaAB_X = LinePointB.x - LinePointA.x
- DeltaAB_Y AS FLOAT : DeltaAB_Y = LinePointB.y - LinePointA.y
- DeltaAB_Z AS FLOAT : DeltaAB_Z = LinePointB.z - LinePointA.z
- DotAP_AB AS FLOAT : DotAP_AB = (DeltaAP_X * DeltaAB_X) + (DeltaAP_Y * DeltaAB_Y) + (DeltaAP_Z * DeltaAB_Z)
- DotAB_AB AS FLOAT : DotAB_AB = (DeltaAB_X * DeltaAB_X) + (DeltaAB_Y * DeltaAB_Y) + (DeltaAB_Z * DeltaAB_Z) // This is almost Pythagorean. It's the Squared Length of DeltaAB.
- ProjectedPoint_DistanceFrom_LinePointA_AsMultipleOf_DeltaAB AS FLOAT // lol
- ProjectedPoint_DistanceFrom_LinePointA_AsMultipleOf_DeltaAB = DotAP_AB / DotAB_AB
- Result AS Vec3
- Result.x = LinePointA.x + (DeltaAB_X * ProjectedPoint_DistanceFrom_LinePointA_AsMultipleOf_DeltaAB)
- Result.y = LinePointA.y + (DeltaAB_Y * ProjectedPoint_DistanceFrom_LinePointA_AsMultipleOf_DeltaAB)
- Result.z = LinePointA.z + (DeltaAB_Z * ProjectedPoint_DistanceFrom_LinePointA_AsMultipleOf_DeltaAB)
- ENDFUNCTION Result
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- FUNCTION prj3n(Point REF AS Vec3, LinePosition REF AS Vec3, LineNormal REF AS Vec3) // "Projection" Get ClosestPointOnLine from Point.
- DeltaAP_X AS FLOAT : DeltaAP_X = Point.x - LinePosition.x
- DeltaAP_Y AS FLOAT : DeltaAP_Y = Point.y - LinePosition.y
- DeltaAP_Z AS FLOAT : DeltaAP_Z = Point.z - LinePosition.z
- DotAP_AB AS FLOAT : DotAP_AB = (DeltaAP_X * LineNormal.x) + (DeltaAP_Y * LineNormal.y) + (DeltaAP_Z * LineNormal.z)
- Result AS Vec3
- Result.x = LinePosition.x + (LineNormal.x * DotAP_AB)
- Result.y = LinePosition.y + (LineNormal.y * DotAP_AB)
- Result.z = LinePosition.z + (LineNormal.z * DotAP_AB)
- ENDFUNCTION Result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement