|
FUNCTION build_direction_node (node_1 : node_representation, node_2 : node_representation) : LIST [2:3] OF REAL; LOCAL nodal_direction_ratios : LIST [ 2 : 3 ] OF REAL ; u : direction ; i : INTEGER ; ndim : INTEGER ; rep_items : SET [ 1 : ? ] OF representation_item ; node_1_point : cartesian_point ; node_2_point : cartesian_point ; END_LOCAL ; rep_items := node_1 . items ; REPEAT i := 1 TO SIZEOF ( rep_items ) ; IF ( 'geometry_schema.cartesian_point' IN TYPEOF ( rep_items [ i ] ) ) THEN node_1_point := rep_items [ i ] ; ESCAPE ; END_IF ; END_REPEAT ; rep_items := node_2 . items ; REPEAT i := 1 TO SIZEOF ( rep_items ) ; IF ( 'geometry_schema.cartesian_point' IN TYPEOF ( rep_items [ i ] ) ) THEN node_2_point := rep_items [ i ] ; ESCAPE ; END_IF ; END_REPEAT ; ndim := HIINDEX ( node_2_point . coordinates ) ; REPEAT i := 1 TO ndim ; u . direction_ratios [ i ] := node_2_point . coordinates [ i ] - node_1_point . coordinates [ i ] ; END_REPEAT ; u := normalise ( u ) ; REPEAT i := 1 TO ndim ; nodal_direction_ratios [ i ] := u . direction_ratios [ i ] ; END_REPEAT ; RETURN ( nodal_direction_ratios ) ; END_FUNCTION; -- build_direction_node |
|
public class FBuild_direction_node public static Value run(SdaiContext _context, Value node_1, Value node_2) |