All pastes #551182 Raw Edit

Ray to plane intersect function

public text v1 · immutable
·published 2007-06-08 17:58 UTC
rendered paste body
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