Overview Schemas Index

GEOMETRY_SCHEMA (jsdai.SGeometry_schema)


FUNCTION normalise
          (arg : vector_or_direction) : vector_or_direction;

 LOCAL ndim : INTEGER ; v : direction ; result : vector_or_direction ; vec : vector ; mag : REAL ; END_LOCAL ; IF  NOT EXISTS ( arg ) THEN  result := ? ; ELSE  ndim := arg . dim ; IF  'geometry_schema.vector' IN  TYPEOF  ( arg ) THEN  BEGIN v := dummy_gri || direction ( arg \ vector . orientation . direction_ratios ) ; IF  arg \ vector . magnitude = 0.0 THEN  RETURN  ( ? ) ; ELSE  vec := dummy_gri || vector ( v , 1.0 ) ; END_IF  ; END ; ELSE  v := dummy_gri || direction ( arg . direction_ratios ) ; END_IF  ; mag := 0.0 ; REPEAT  i := 1 TO  ndim ; mag := mag + v . direction_ratios [ i ] * v . direction_ratios [ i ] ; END_REPEAT  ; IF  mag > 0.0 THEN  mag := SQRT ( mag ) ; REPEAT i := 1 TO ndim ; v . direction_ratios [ i ] := v . direction_ratios [ i ] / mag ; END_REPEAT ; IF 'geometry_schema.vector' IN TYPEOF ( arg ) THEN vec . orientation := v ; result := vec ; ELSE  result := v ; END_IF  ; ELSE RETURN  ( ? ) ; END_IF  ; END_IF ; RETURN ( result ) ; 

END_FUNCTION; -- normalise

public class FNormalise
          public static Value run(SdaiContext _context, Value arg)