[38ba34]: / Body / AAUHuman / Arm / RadiusMuscleGeometry.any

Download this file

200 lines (149 with data), 10.1 kB

// Nodes for muscle attachments bml etc. data from MAYO sub2
AnyFolder &Radius=.Seg.Radius;
Radius = {
  
  
  AnyRefNode BicepsCyl = {

    sRel = .Scale(.Data.BicepsCyl_pos*.Mirror);
    AnyVec3 P2 = .Scale(.Data.BicepsCyl_P2_pos*.Mirror);										// TODO: ask MEL about the value, correction missing sRel
    AnyVec3 P3 = .Scale(.Data.BicepsCyl_P3_pos*.Mirror);        
    
    //Calculate rot matrix for cylinder using three points and switch axes
    ARel=RotMat(sRel,P3,P2)*RotMat(-90/180*pi, z)*RotMat(-90/180*pi, y);          
    
    AnySurfCylinder cyl = { 
      Radius=vnorm(.sRel-.P3);
      Length= vnorm(.sRel-.P2);
    };
  }; 
  
  // Cylinder fitted to the radius bone for wrapping of pronator teres, not from literature.
  AnyRefNode PronatorTeresCyl = {

    AnyVec3  P2= .Scale(.Data.PronatorTeresCyl_P2_pos*.Mirror);								// TODO: check with MEL if known why sRel was not used for data
    AnyVec3  P3= .Scale(.Data.PronatorTeresCyl_P3_pos*.Mirror);        
    sRel = .Scale(.Data.PronatorTeresCyl_pos*.Mirror);

    //Calculate orientation of the cylinder
    ARel=RotMat(sRel,P3,P2)*RotMat(-90/180*pi, z)*RotMat(-90/180*pi, y);          
    
    AnySurfCylinder cyl = { 
      Radius= vnorm(.sRel-.P3);
      Length= vnorm(.sRel-.P2);
    };
  }; 
  
  
  // Cylinder fitted to the radius bone for wrapping of supinator, not from literature.
  AnyRefNode SupinatorCyl = {																							// TODO: to be deleted
    
    AnyVec3 P2 =.Scale(.Data.SupinatorCyl_P2_pos*.Mirror);
    AnyVec3 P3 =.Scale(.Data.SupinatorCyl_P3_pos*.Mirror);
    sRel = .Scale(.Data.SupinatorCyl_pos*.Mirror);
    
    //Calculate orientation of the cylinder
    ARel=RotMat(sRel,P3,P2)*RotMat(-90/180*pi, z)*RotMat(-90/180*pi, y);          
    
    AnySurfCylinder cyl = { 
      Radius= vnorm(.sRel-.P3);
      Length= vnorm(.sRel-.P2);
      CapRatio=1;
    };    
  };
  
  AnyRefNode RadiusMuscleCyl = { 
    sRel = .Scale(.Data.RadiusMuscleCyl_pos*.Mirror);
    AnyVec3 P3 =.Scale(.Data.RadiusMuscleCyl_P3_pos*.Mirror); 
    AnyVec3 P2 =.Scale(.Data.RadiusMuscleCyl_P2_pos*.Mirror); 

    //Calculate orientation of the cylinder
    ARel=RotMat(sRel,P3,P2)*RotMat(-90/180*pi, z)*RotMat(-90/180*pi, y);          
    
    
    AnySurfCylinder cyl = { 
      Radius= vnorm(.sRel-.P3);
      Length= vnorm(.sRel-.P2);
      CapRatio=1;
    };
  };

  
   AnyRefNode MedialExtensorCyl = { 
     

     AnyVar length = 3.3*vnorm(P1-P2)-cyl.CapRatio*2*cyl.Radius;
     sRel = P1+length/2*(P1-P2)/vnorm(P1-P2);
     AnyVec3 P1 = .Scale(.Data.MedialExtensorCyl_pos*.Mirror);
     AnyVec3 P3 = .Scale(.Data.MedialExtensorCyl_P3_pos*.Mirror);
     AnyVec3 P2 = .Scale(.Data.MedialExtensorCyl_P2_pos*.Mirror);
     //Calculate orientation of the cylinder
     ARel=RotMat(P1,P3,P2)*RotMat(-90/180*pi, z)*RotMat(-90/180*pi, y);            
     AnySurfCylinder cyl = { 
       Radius=vnorm(.P1-.P3);
       Length= .length;
       CapRatio = 0.5;
     };
   };
    
  

  
   //It is used for wrapping of the flexor muscles.
   AnyRefNode FlexorMuscleCyl = { 
     

     AnyVar length = 0.075;
     sRel = P1+length/2*(P1-P2)/vnorm(P1-P2);
     AnyVec3 P1 = .Scale(.Data.WristFlexorCyl_pos*.Mirror);
     AnyVec3 P3 = .Scale(.Data.WristFlexorCyl_P3_pos*.Mirror);
     AnyVec3 P2 = .Scale(.Data.WristFlexorCyl_P2_pos*.Mirror);
     
     //Calculate orientation of the cylinder
     ARel=RotMat(P1,P3,P2)*RotMat(-90/180*pi, z)*RotMat(-90/180*pi, y);            
     
     AnySurfCylinder cyl = { 
       Radius=vnorm(.P1-.P3);
       Length= .length;
     };
   };
    
  
   // It is used for wrapping of flexor muscles at wrist
   AnyRefNode FlexorMuscleEllipsoid = {
     
     AnyVar DiameterXZ = vnorm(.Scale(.Data.Via_Palmaris_Longus_pos*.Mirror - .Data.Via_Extensor_Indicis_pos*.Mirror));
     AnyVar DiameterY = vnorm(.Scale(.Data.PS_pos*.Mirror - .Data.rs_pos*.Mirror));
     sRel = P1;
     AnyVec3 P1 = .Scale(.Data.WristFlexorEllipsoid_pos*.Mirror);
     AnyVec3 P3 = .Scale(.Data.WristFlexorEllipsoid_P3_pos*.Mirror);
     AnyVec3 P2 = .Scale(.Data.WristFlexorEllipsoid_P2_pos*.Mirror);
     
     //Calculate orientation of ellipsoid
     ARel = RotMat(P1,P3,P2);
     
     AnySurfEllipsoid ellipsoid = {
       Radius = 0.5*{.DiameterXZ,.DiameterY,.DiameterXZ};
     };
   };
   
   // It is used for wrapping of extensor muscles at wrist
   AnyRefNode ExtensorMuscleEllipsoid = {
     
     AnyVar DiameterXZ = vnorm(.Scale(.Data.Via_Palmaris_Longus_pos*.Mirror - .Data.Via_Extensor_Indicis_pos*.Mirror));
     AnyVar DiameterY = vnorm(.Scale(.Data.PS_pos*.Mirror - .Data.rs_pos*.Mirror));
     sRel = P1;
     AnyVec3 P1 = .Scale(.Data.WristExtensorEllipsoid_pos*.Mirror);
     AnyVec3 P3 = .Scale(.Data.WristExtensorEllipsoid_P3_pos*.Mirror);
     AnyVec3 P2 = .Scale(.Data.WristExtensorEllipsoid_P2_pos*.Mirror);
     
     //Calculate orientation of ellipsoid
     ARel = RotMat(P1,P3,P2);
     
     AnySurfEllipsoid ellipsoid = {
       Radius = 0.5*{.DiameterXZ,.DiameterY,.DiameterXZ};
     };
   };
   
  
  #include "../DrawSettings/SegmentAxes.any"
  
  AnyRefNode I_Biceps_LH                      = {sRel = .Scale(.Data.I_Biceps_LH_pos*.Mirror);};
  AnyRefNode I_Biceps_SH                      = {sRel = .Scale(.Data.I_Biceps_SH_pos*.Mirror);};
  AnyRefNode I_Brach_rad_1                    = {sRel = .Scale(.Data.I_Brach_rad_1_pos*.Mirror);};
  AnyRefNode I_Brach_rad_2                    = {sRel = .Scale(.Data.I_Brach_rad_2_pos*.Mirror);};
  AnyRefNode I_Pronator_teres_caput_humeral_1 = {sRel = .Scale(.Data.I_Pronator_teres_caput_humeral_1_pos*.Mirror);};
  AnyRefNode I_Pronator_teres_caput_humeral_2 = {sRel = .Scale(.Data.I_Pronator_teres_caput_humeral_2_pos*.Mirror);};
  AnyRefNode I_Pronator_teres_caput_ulnare_1  = {sRel = .Scale(.Data.I_Pronator_teres_caput_ulnare_1_pos*.Mirror);};  
  AnyRefNode I_Supinator_humerus_part_1       = {sRel = .Scale(.Data.I_Supinator_humerus_part_1_pos*.Mirror);};
  AnyRefNode I_Supinator_humerus_part_2       = {sRel = .Scale(.Data.I_Supinator_humerus_part_2_pos*.Mirror);};
  AnyRefNode I_Supinator_ulna_part_1          = {sRel = .Scale(.Data.I_Supinator_ulna_part_1_pos*.Mirror);};
  AnyRefNode I_Supinator_ulna_part_2          = {sRel = .Scale(.Data.I_Supinator_ulna_part_2_pos*.Mirror);};
  AnyRefNode I_Pron_quadr_1                   = {sRel = .Scale(.Data.I_Pron_quadr_1_pos*.Mirror);};  
  AnyRefNode I_Pron_quadr_2                   = {sRel = .Scale(.Data.I_Pron_quadr_2_pos*.Mirror);};  
  AnyRefNode O_Extensor_Pollicis_Brevis       = {sRel = .Scale(.Data.O_Extensor_Pollicis_Brevis_pos*.Mirror);};  
  AnyRefNode Via_Extensor_Indicis             = {sRel = .Scale(.Data.Via_Extensor_Indicis_pos*.Mirror);};  
  AnyRefNode Via_Extensor_Pollicis_Longus     = {sRel = .Scale(.Data.Via_Extensor_Pollicis_Longus_pos*.Mirror);};  
  AnyRefNode Via_Extensor_Pollicis_Brevis     = {sRel = .Scale(.Data.Via_Extensor_Pollicis_Brevis_pos*.Mirror);};
  AnyRefNode Via_Abductor_Pollicis_Longus     = {sRel = .Scale(.Data.Via_Abductor_Pollicis_Longus_pos*.Mirror);};  
  AnyRefNode Via_Flexor_Carpi_Ulnaris         = {sRel = .Scale(.Data.Via_Flexor_Carpi_Ulnaris_pos*.Mirror);};  
  AnyRefNode Via_Flexor_Carpi_Radialis        = {sRel = .Scale(.Data.Via_Flexor_Carpi_Radialis_pos*.Mirror);};  
  AnyRefNode O_Flexor_Pollicis_Longus         = {sRel = .Scale(.Data.O_Flexor_Pollicis_Longus_pos*.Mirror);};  
  AnyRefNode O_Flexor_Digitorum_Superficialis          = {sRel = .Scale(.Data.O_Flexor_Digitorum_Superficialis_pos*.Mirror);};  
  AnyRefNode Via_Extensor_Carpi_Radialis_Brevis        = {sRel = .Scale(.Data.Via_Extensor_Carpi_Radialis_Brevis_pos*.Mirror);};  
  AnyRefNode Via_Extensor_Carpi_Radialis_Longus        = {sRel = .Scale(.Data.Via_Extensor_Carpi_Radialis_Longus_pos*.Mirror);};  
  AnyRefNode Via_Extensor_Carpi_Ulnaris         =        {sRel = .Scale(.Data.Via_Extensor_Carpi_Ulnaris_pos*.Mirror);};  
  AnyRefNode Via_Flexor_Digitorum_Superficialis_Digit2 = {sRel = .Scale(.Data.Via_Flexor_Digitorum_Superficialis_Digit2_pos*.Mirror);};  
  AnyRefNode Via_Flexor_Digitorum_Superficialis_Digit3 = {sRel = .Scale(.Data.Via_Flexor_Digitorum_Superficialis_Digit3_pos*.Mirror);};  
  AnyRefNode Via_Flexor_Digitorum_Superficialis_Digit4 = {sRel = .Scale(.Data.Via_Flexor_Digitorum_Superficialis_Digit4_pos*.Mirror);};  
  AnyRefNode Via_Flexor_Digitorum_Superficialis_Digit5 = {sRel = .Scale(.Data.Via_Flexor_Digitorum_Superficialis_Digit5_pos*.Mirror);};
  AnyRefNode Via_Flexor_Digitorum_Profundus_Digit2     = {sRel = .Scale(.Data.Via_Flexor_Digitorum_Profundus_Digit2_pos*.Mirror);};  
  AnyRefNode Via_Flexor_Digitorum_Profundus_Digit3     = {sRel = .Scale(.Data.Via_Flexor_Digitorum_Profundus_Digit3_pos*.Mirror);};  
  AnyRefNode Via_Flexor_Digitorum_Profundus_Digit4     = {sRel = .Scale(.Data.Via_Flexor_Digitorum_Profundus_Digit4_pos*.Mirror);};  
  AnyRefNode Via_Flexor_Digitorum_Profundus_Digit5     = {sRel = .Scale(.Data.Via_Flexor_Digitorum_Profundus_Digit5_pos*.Mirror);}; 
  AnyRefNode Via_Extensor_Digitorum_Digit2             = {sRel = .Scale(.Data.Via_Extensor_Digitorum_Digit2_pos*.Mirror);};  
  AnyRefNode Via_Extensor_Digitorum_Digit3             = {sRel = .Scale(.Data.Via_Extensor_Digitorum_Digit3_pos*.Mirror);};  
  AnyRefNode Via_Extensor_Digitorum_Digit4             = {sRel = .Scale(.Data.Via_Extensor_Digitorum_Digit4_pos*.Mirror);};  
  AnyRefNode Via_Extensor_Digitorum_Digit5             = {sRel = .Scale(.Data.Via_Extensor_Digitorum_Digit5_pos*.Mirror);};  
  AnyRefNode Via_Extensor_Digiti_Minimi                = {sRel = .Scale(.Data.Via_Extensor_Digiti_Minimi_pos*.Mirror);};  
  AnyRefNode Via_Flexor_Pollicis_Longus                = {sRel = .Scale(.Data.Via_Flexor_Pollicis_Longus_pos*.Mirror);};
  AnyRefNode Via_Palmaris_Longus                       = {sRel = .Scale(.Data.Via_Palmaris_Longus_pos*.Mirror);};

};