|
FUNCTION above_plane (p1 : cartesian_point, p2 : cartesian_point, p3 : cartesian_point, p4 : cartesian_point) : REAL; LOCAL dir2 , dir3 , dir4 : direction := dummy_gri || direction ( [ 1.0 , 0.0 , 0.0 ] ) ; val , mag : REAL ; END_LOCAL ; IF ( p1 . dim <> 3 ) THEN RETURN ( ? ) ; END_IF ; REPEAT i := 1 TO 3 ; dir2 . direction_ratios [ i ] := p2 . coordinates [ i ] - p1 . coordinates [ i ] ; dir3 . direction_ratios [ i ] := p3 . coordinates [ i ] - p1 . coordinates [ i ] ; dir4 . direction_ratios [ i ] := p4 . coordinates [ i ] - p1 . coordinates [ i ] ; mag := dir4 . direction_ratios [ i ] * dir4 . direction_ratios [ i ] ; END_REPEAT ; mag := SQRT ( mag ) ; val := mag * dot_product ( dir4 , cross_product ( dir2 , dir3 ) . orientation ) ; RETURN ( val ) ; END_FUNCTION; -- above_plane |
|
public class FAbove_plane public static Value run(SdaiContext _context, Value p1, Value p2, Value p3, Value p4) |