Overview Schemas Index

GEOMETRY_SCHEMA (jsdai.SGeometry_schema)


FUNCTION vector_difference
          (arg1 : vector_or_direction, arg2 : vector_or_direction) : vector;

 LOCAL result : vector ; res , vec1 , vec2 : direction ; mag , mag1 , mag2 : REAL ; ndim : INTEGER ; END_LOCAL ; IF  ( ( NOT  EXISTS  ( arg1 ) ) OR  ( NOT EXISTS ( arg2 ) ) ) OR ( arg1 . dim <> arg2 . dim ) THEN  RETURN  ( ? ) ; ELSE  BEGIN IF  'geometry_schema.vector' IN  TYPEOF  ( arg1 ) THEN  mag1 := arg1 \ vector . magnitude ; vec1 := arg1 \ vector . orientation ; ELSE  mag1 := 1.0 ; vec1 := arg1 ; END_IF  ; IF  'geometry_schema.vector' IN TYPEOF ( arg2 ) THEN  mag2 := arg2 \ vector . magnitude ; vec2 := arg2 \ vector . orientation ; ELSE  mag2 := 1.0 ; vec2 := arg2 ; END_IF  ; vec1 := normalise ( vec1 ) ; vec2 := normalise ( vec2 ) ; ndim := SIZEOF ( vec1 . direction_ratios ) ; mag := 0.0 ; res := dummy_gri || direction ( vec1 . direction_ratios ) ; REPEAT i := 1 TO ndim ; res . direction_ratios [ i ] := mag1 * vec1 . direction_ratios [ i ] - mag2 * vec2 . direction_ratios [ i ] ; mag := mag + ( res . direction_ratios [ i ] * res . direction_ratios [ i ] ) ; END_REPEAT ; IF ( mag > 0.0 ) THEN result := dummy_gri || vector ( res , SQRT ( mag ) ) ; ELSE result := dummy_gri || vector ( vec1 , 0.0 ) ; END_IF  ; END ; END_IF ; RETURN ( result ) ; 

END_FUNCTION; -- vector_difference

public class FVector_difference
          public static Value run(SdaiContext _context, Value arg1, Value arg2)