Overview Schemas Index

KINEMATIC_STRUCTURE_SCHEMA (jsdai.SKinematic_structure_schema)


FUNCTION plane_angle_for_pair_in_radian
          (pair : kinematic_pair, angle : plane_angle_measure) : plane_angle_measure;

 LOCAL converted_angle : plane_angle_measure := angle ; link_rep : kinematic_link_representation := representation_of_link ( pair . joint . first_link ) ; link_cntxt : representation_context ; pa_units : SET OF  unit := [ ] ; pau : unit ; END_LOCAL ; link_cntxt := link_rep \ representation . context_of_items ; IF  NOT  ( 'measure_schema.global_unit_assigned_context' IN  TYPEOF  ( link_cntxt ) ) THEN  RETURN  ( ? ) ; END_IF  ; pa_units := QUERY ( unit <* link_cntxt \ global_unit_assigned_context . units | 'measure_schema.plane_angle_unit' IN  TYPEOF  ( unit ) ) ; IF  SIZEOF ( pa_units ) <> 1 THEN  RETURN  ( ? ) ; END_IF  ; pau := pa_units [ 1 ] ; IF  ( NOT  ( 'measure_schema.si_unit' IN  TYPEOF  ( pau ) ) AND  NOT  ( 'measure_schema.conversion_based_unit' IN  TYPEOF  ( pau ) ) ) THEN  RETURN  ( ? ) ; END_IF  ; REPEAT WHILE ( 'measure_schema.conversion_based_unit' IN  TYPEOF  ( pau ) ) ; converted_angle := converted_angle * pau \ conversion_based_unit . conversion_factor . value_component ; pau := pau \ conversion_based_unit . conversion_factor . unit_component ; IF  ( ( NOT  ( 'measure_schema.si_unit' IN  TYPEOF  ( pau ) ) AND NOT  ( 'measure_schema.conversion_based_unit' IN  TYPEOF  ( pau ) ) ) OR ( NOT ( 'measure_schema.plane_angle_unit' IN TYPEOF ( pau ) ) ) ) THEN  RETURN  ( ? ) ; END_IF  ; END_REPEAT ; IF ( pau \ si_unit . name <> si_unit_name . radian ) THEN RETURN  ( ? ) ; END_IF ; CASE pau \ si_unit . prefix OF si_prefix . exa : RETURN  ( 1.e18 * converted_angle ) ; si_prefix . peta : RETURN  ( 1.e15 * converted_angle ) ; si_prefix . tera : RETURN  ( 1.e12 * converted_angle ) ; si_prefix . giga : RETURN  ( 1.e9 * converted_angle ) ; si_prefix . mega : RETURN  ( 1.e6 * converted_angle ) ; si_prefix . kilo : RETURN  ( 1.e3 * converted_angle ) ; si_prefix . hecto : RETURN  ( 1.e2 * converted_angle ) ; si_prefix . deca : RETURN  ( 1.e1 * converted_angle ) ; si_prefix . deci : RETURN  ( 1.e-1 * converted_angle ) ; si_prefix . centi : RETURN  ( 1.e-2 * converted_angle ) ; si_prefix . milli : RETURN  ( 1.e-3 * converted_angle ) ; si_prefix . micro : RETURN  ( 1.e-6 * converted_angle ) ; si_prefix . nano : RETURN  ( 1.e-9 * converted_angle ) ; si_prefix . pico : RETURN  ( 1.e-12 * converted_angle ) ; si_prefix . femto : RETURN  ( 1.e-15 * converted_angle ) ; si_prefix . atto : RETURN  ( 1.e-18 * converted_angle ) ; OTHERWISE : RETURN ( converted_angle ) ; END_CASE ; 

END_FUNCTION; -- plane_angle_for_pair_in_radian

public class FPlane_angle_for_pair_in_radian
          public static Value run(SdaiContext _context, Value pair, Value angle)