Function ray_plane:Int(p1x#,p1y#,p1z#, p2x#,p2y#,p2z#, pax#,pay#,paz#, pbx#,pby#,pbz#, pcx#,pcy#,pcz#) Local d# Local total#,denom#,mu# Local nx#,ny#,nz# Local dx1#=(pcx - pax) Local dy1#=(pcy - pay) Local dz1#=(pcz - paz) Local dx2#=(pbx - pax) Local dy2#=(pby - pay) Local dz2#=(pbz - paz) nx#=(dy1*dz2)-(dz1*dy2) ny#=(dz1*dx2)-(dx1*dz2) nz#=(dx1*dy2)-(dy1*dx2) d = - nx * pax - ny * pay - nz * paz 'Calculate the position on the Line that intersects the plane denom = nx * (p2x - p1x) + ny * (p2y - p1y) + nz * (p2z - p1z); If (Abs(denom) < 0.0001) Then Return 0 'Line and plane don't intersect mu = - (d + nx * p1x + ny * p1y + nz * p1z) / denom vecX = p1x + mu * (p2x - p1x) vecY = p1y + mu * (p2y - p1y) vecZ = p1z + mu * (p2z - p1z) Return 1 End Function