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

Download this file

294 lines (221 with data), 13.4 kB

//-------------------------------------------------------
// Definition of the points which are used by the arm for various attachements on thorax segment
// Adding geometry for wrapping to the throax segment
//-------------------------------------------------------

AnyFolder &L1SegRef=.L1Ref;
AnyFolder &L2SegRef=.L2Ref;
AnyFolder &L3SegRef=.L3Ref;
AnyFolder &L4SegRef=.L4Ref;
AnyFolder &L5SegRef=.L5Ref;
AnyFolder &PelvisSegRef=.PelvisRef;
AnyFolder &ThoraxSegRef=.ShoulderRef;

AnyFolder &SkullSegRef=.SkullSegRef;
//
AnyFolder &C1SegRef=.C1SegRef;
AnyFolder &C2SegRef=.C2SegRef;
AnyFolder &C3SegRef=.C3SegRef;
AnyFolder &C4SegRef=.C4SegRef;
AnyFolder &C5SegRef=.C5SegRef;
AnyFolder &C6SegRef=.C6SegRef;
AnyFolder &C7SegRef=.C7SegRef;

ThoraxSegRef ={

  #include "../DrawSettings/Nodes.any"
  //These nodes are made as nodes in nodes, i.e. AnyRefNodes inserted in the reference frame of other nodes.
  //The reason for using this procedure instead of putting the nodes directly on the 
  //thorax where they eventually will end up, is that it makes it possible to have the arm as a self-contained block.
  //The nodes defined in the lines below are used by the shoulder and arm model for muscle attachements on the thorax.
  
  
  //The content of this folder has to be scaled in a special way because the node in which this 
  //the nodes in this folder is inserted in are rotated wrt. to thorax
  //This means that when scaling, the nodes should scale together with thorax but since the reference system they are
  //made in is rotated wrt. to thorax the vector has to be rotated back into the thorax ref frame, then scaled and rotated back again 
  
  
  AnyRefNode O_latissimus_dorsi_1              = {sRel = .Scale({-0.155280, -0.15, 0}*.M)*.Mirror; };
  AnyRefNode O_latissimus_dorsi_2              = {sRel = .Scale({-0.156440, -0.172 , 0}*.M)*.Mirror; };
  AnyRefNode O_latissimus_dorsi_3              = {sRel = .Scale({-0.15, -0.21 , 0}*.M)*.Mirror; };
  AnyRefNode O_latissimus_dorsi_4              = {sRel = .Scale({-0.145, -0.24 , 0}*.M)*.Mirror; };
  AnyRefNode O_latissimus_dorsi_5              = {sRel = .Scale({-0.14, -0.27 , 0}*.M)*.Mirror; };

  AnyRefNode O_latissimus_dorsi_8_via            = {sRel = .Scale({-0.13602333, -0.22246667,  0.10542667}*.M)*.Mirror;};
  AnyRefNode O_latissimus_dorsi_7_via            = {sRel = .Scale({-0.14535667, -0.21313333,  0.09309333}*.M)*.Mirror;};
  AnyRefNode O_latissimus_dorsi_6_via            = {sRel = .Scale({-0.15469   , -0.2038    ,  0.08076 }*.M)*.Mirror;};

  AnyRefNode O_latissimus_dorsi_9_via             = {sRel = .Scale({-0.11102333, -0.24013333,  0.12276}*.M)*.Mirror;};
  AnyRefNode O_latissimus_dorsi_10_via            = {sRel = .Scale({-0.09535667, -0.24846667,  0.12776}*.M)*.Mirror;};
  AnyRefNode O_latissimus_dorsi_11_via            = {sRel = .Scale({-0.07969   , -0.2568    ,  0.13276}*.M)*.Mirror;};

  
  
  AnyRefNode O_trapezius_clavicular_part_1        = {sRel = .Scale({-0.112990, 0.086220 , 0.006930}*.M)*.Mirror; };
  AnyRefNode O_trapezius_clavicular_part_2        = {sRel = .Scale({-0.112320, 0.088620 , 0.006650}*.M)*.Mirror; };
  AnyRefNode O_trapezius_clavicular_part_3        = {sRel = .Scale({-0.111460, 0.092010 , 0.006240}*.M)*.Mirror; };
  AnyRefNode O_trapezius_clavicular_part_4        = {sRel = .Scale({-0.110460, 0.096850 , 0.005650}*.M)*.Mirror; };
  AnyRefNode O_trapezius_clavicular_part_5        = {sRel = .Scale({-0.109560, 0.103610 , 0.004830}*.M)*.Mirror; };
  AnyRefNode O_trapezius_clavicular_part_6        = {sRel = .Scale({-0.109380, 0.112810 , 0.003690}*.M)*.Mirror; };
  
  AnyRefNode O_trapezius_scapular_part_1          = {sRel = .Scale({-0.155970, -0.222180 , 0.022540}*.M)*.Mirror; };
  AnyRefNode O_trapezius_scapular_part_2          = {sRel = .Scale({-0.164270, -0.140550 , 0.018790}*.M)*.Mirror; };
  AnyRefNode O_trapezius_scapular_part_3          = {sRel = .Scale({-0.166070, -0.045060 , 0.016950}*.M)*.Mirror; };
  AnyRefNode O_trapezius_scapular_part_4          = {sRel = .Scale({-0.139710, 0.026940 , 0.012960}*.M)*.Mirror; };
  AnyRefNode O_trapezius_scapular_part_5          = {sRel = .Scale({-0.120240, 0.066790 , 0.009150}*.M)*.Mirror; };
  AnyRefNode O_trapezius_scapular_part_6          = {sRel = .Scale({-0.114440, 0.081650 , 0.007470}*.M)*.Mirror; };
  
  AnyRefNode O_rhomboideus_1                      = {sRel = .Scale({-0.166810,-0.025580, 0.016450}*.M)*.Mirror; };
  AnyRefNode O_rhomboideus_2                      = {sRel = .Scale({-0.145790, 0.022420 , 0.014450}*.M)*.Mirror; };
  AnyRefNode O_rhomboideus_3                      = {sRel = .Scale({-0.124770, 0.070420 , 0.012450}*.M)*.Mirror; };
  AnyRefNode O_levator_scapulae_1                 = {sRel = .Scale({-0.062910, 0.089410 , 0.028230}*.M)*.Mirror; };
  AnyRefNode O_levator_scapulae_2                 = {sRel = .Scale({-0.060420, 0.112760 , 0.025670}*.M)*.Mirror; };
  AnyRefNode O_levator_scapulae_3                 = {sRel = .Scale({-0.057920, 0.136100 , 0.023100}*.M)*.Mirror; };
  
  AnyRefNode O_pectoralis_major_thoracic_part_1   = {sRel = .Scale({0.03620, -0.14139, 0.07997}*.M)*.Mirror; };
  AnyRefNode O_pectoralis_major_thoracic_part_2   = {sRel = .Scale({0.03620, -0.14139, 0.05797}*.M)*.Mirror; };
  AnyRefNode O_pectoralis_major_thoracic_part_3   = {sRel = .Scale({0.03620, -0.14139, 0.03597}*.M)*.Mirror; };  
  AnyRefNode O_pectoralis_major_thoracic_part_4   = {sRel = .Scale({0.03210, -0.13013, 0.01294}*.M)*.Mirror; };
  AnyRefNode O_pectoralis_major_thoracic_part_5   = {sRel = .Scale({0.03210, -0.10263, 0.01294}*.M)*.Mirror; };
  AnyRefNode O_pectoralis_major_thoracic_part_6   = {sRel = .Scale({0.03010, -0.08513, 0.00694}*.M)*.Mirror; };
  AnyRefNode O_pectoralis_major_thoracic_part_7   = {sRel = .Scale({0.02534, -0.06715, 0.00245}*.M)*.Mirror; };
  AnyRefNode O_pectoralis_major_thoracic_part_8   = {sRel = .Scale({0.01534, -0.04215, 0.00245}*.M)*.Mirror; };
  AnyRefNode O_pectoralis_major_thoracic_part_9   = {sRel = .Scale({0.00239, -0.01540, 0.01272}*.M)*.Mirror; };
  AnyRefNode O_pectoralis_major_thoracic_part_10  = {sRel = .Scale({-0.0052,  0.01199, 0.03604}*.M)*.Mirror; };
  
  AnyRefNode O_pectoralis_minor_1                 = {sRel = .Scale({0.010080, -0.061220 , 0.068410}*.M)*.Mirror; };
  AnyRefNode O_pectoralis_minor_2                 = {sRel = .Scale({0.005300, -0.084470 , 0.087410}*.M)*.Mirror; };
  AnyRefNode O_pectoralis_minor_3                 = {sRel = .Scale({-0.011250, -0.100900 , 0.112520}*.M)*.Mirror; };
  
  AnyRefNode O_serratus_anterior_1                  = {sRel = .Scale({0.043730-0.04, -0.224850 , 0.150810-0.01}*.M)*.Mirror; };
  AnyRefNode O_serratus_anterior_2                = {sRel = .Scale({ 0.011390, -0.160650 , 0.108850}*.M)*.Mirror; };
  AnyRefNode O_serratus_anterior_3                = {sRel = .Scale({-0.007660, -0.093810 , 0.104800}*.M)*.Mirror; };
  AnyRefNode O_serratus_anterior_4                = {sRel = .Scale({-0.041050, -0.043890 , 0.112270}*.M)*.Mirror; };
  AnyRefNode O_serratus_anterior_5                = {sRel = .Scale({-0.056390, -0.015300 , 0.106520}*.M)*.Mirror; };
  AnyRefNode O_serratus_anterior_6                = {sRel = .Scale({-0.058720, -0.005190 , 0.099190}*.M)*.Mirror; };
  
  AnyRefNode SternocleidomastoidNode = {sRel = .Scale({-0.025, 0.002, 0.018}*.M)*.Mirror; };
  
  // Ellipsoid which are used for wrapping of pectoralis.
  AnySurfEllipsoid PectoralisWrappingSurface = { 
    sRel = .Scale(...Trunk.SegmentsThorax.ThoraxSeg.StdPar.Thorax.ij_EllipsoidPectoralisOrigin_pos)*.Mirror;  // Helm 1992 subject k2.
    ARel = RotMat(5*pi/180, x);
    
    //This is the standard values of the elipsoid before any scaling
    AnyVec3 RadiusUnscaled = {0.15, 0.145, 0.10}; 
    
    /// Creating three "points" representing the ellipsoid main axes in the ellipsoid origin frame.
    /// Scaling is done in the parent reference frame
    AnyMat33 P = .Scale((diag(RadiusUnscaled) * .Mirror) + repmat(1, 3, ...Trunk.SegmentsThorax.ThoraxSeg.StdPar.Thorax.ij_EllipsoidPectoralisOrigin_pos))' - repmat(1, 3, sRel)'; 
    Radius = vnorm(P);
  };
  
  
  // Ellipsoid which are used for wrapping of serratus anterior.
  AnySurfEllipsoid SerratusAnteriorWrappingSurface = { 
    sRel = .Scale(...Trunk.SegmentsThorax.ThoraxSeg.StdPar.Thorax.ij_EllipsoidSerratusAnteriorOrigin_pos)*.Mirror; 
    ARel = RotMat(sRel, P1, P3);

    //These three points are sued for controlling the elipsoid
    AnyVec3 P1 = .Scale({-0.165000, -0.296000, 0.037000})*.Mirror; 
    AnyVec3 P2 = .Scale({0.000000, -0.278635, -0.061481})*.Mirror; 
    AnyVec3 P3 = .Scale({0.000000, 0.038835+0.025,0.096040})*.Mirror; 
    
    AnyVar R1=((sRel[0]-P1[0])^2+(sRel[1]-P1[1])^2+(sRel[2]-P1[2])^2)^0.5;
    AnyVar R2=((sRel[0]-P2[0])^2+(sRel[1]-P2[1])^2+(sRel[2]-P2[2])^2)^0.5;
    AnyVar R3=((sRel[0]-P3[0])^2+(sRel[1]-P3[1])^2+(sRel[2]-P3[2])^2)^0.5;
    Radius = {R1,R3,R2};
  };
  
  
  // Ellipsoid which are used for wrapping of Latisimus dorsi
  AnySurfEllipsoid LatissimusWrappingSurface = { 
    ARel = RotMat(sRel,P1,P3);
    sRel = .Scale(
      ...Trunk.SegmentsThorax.ThoraxSeg.StdPar.Thorax.ij_EllipsoidLatissimusOrigin_pos
    )*.Mirror;  

    AnyVec3 P1 = .Scale({0.16, -0.15, 0.05})*.Mirror;  
    AnyVec3 P2 = .Scale({0.015, 0.0, 0.05})*.Mirror;  
    AnyVec3 P3 = .Scale({0.015, -0.15,0.155})*.Mirror;  
    
    //The length of the three axis are calculated using the scaled points
    AnyVar R1=((sRel[0]-P1[0])^2+(sRel[1]-P1[1])^2+(sRel[2]-P1[2])^2)^0.5;
    AnyVar R2=((sRel[0]-P2[0])^2+(sRel[1]-P2[1])^2+(sRel[2]-P2[2])^2)^0.5;
    AnyVar R3=((sRel[0]-P3[0])^2+(sRel[1]-P3[1])^2+(sRel[2]-P3[2])^2)^0.5;
    Radius = {R1, R3, R2}; 
  };  
};


PelvisSegRef={
  AnyRefNode O_latissimus_dorsi_11  = {
    sRel = .Scale({0.01, 0.042, ...Sign*0.065});

  };
};

L1SegRef={

  AnyRefNode O_latissimus_dorsi_6  = {
    sRel= .Scale({-0.01000, 0.107, 0.000000});
  };
};

L2SegRef={
  AnyRefNode O_latissimus_dorsi_7  = {
    sRel= .Scale({-0.008, 0.077, 0.000000});
  };
};

L3SegRef={
  AnyRefNode O_latissimus_dorsi_8 = {
    sRel=.Scale({0.000000, 0.051, 0.000000}); 
  };
};

L4SegRef={
  AnyRefNode O_latissimus_dorsi_9 = {
    sRel=.Scale({0.00000, 0.028, 0.000000}); 
  };
};

L5SegRef={
  AnyRefNode O_latissimus_dorsi_10 = {
    sRel=.Scale({0.00, 0.008, 0.000000}); 
  };
};

SkullSegRef={
    AnyFunTransform3D &Scale =....Trunk.SegmentsCervicalSpine.SkullSeg.Scale;
    AnyMat33 Mirror ={{1,0,0},{0,1,0},{0,0,..Sign}};
    AnyRefNode O_trapezius_clavicular_part_6        = { 
      sRel = (.Scale(({-0.06, -0.02, 0.020})*.Mirror));
    };
   AnyRefNode SternocleidomastoidNode = {sRel = .Scale({-0.034+0.018+0.01,-0.025+0.005,0.074})*.Mirror;};
};


C1SegRef={
  AnyMat33 MirrorC1 ={{1,0,0},{0,1,0},{0,0,..Sign}};
  AnyFunTransform3D &ScaleC1 =....Trunk.SegmentsCervicalSpine.C1Seg.Scale;
  AnyRefNode O_levator_scapulae_1 = {
    sRel = (.ScaleC1(({0.025, 0.575 , 0.039}))*.MirrorC1); 
  };
  
  AnyRefNode O_trapezius_clavicular_part_5 = { 
      sRel = (.ScaleC1(({-0.01, 0.57 , 0.005}))*.MirrorC1);
  };
};


C2SegRef={
  
  AnyFunTransform3D &ScaleC2 =....Trunk.SegmentsCervicalSpine.C2Seg.Scale;
  
  AnyMat33 MirrorC2 ={{1,0,0},{0,1,0},{0,0,..Sign}};
  
  AnyRefNode O_levator_scapulae_2                 = {
    sRel = (.ScaleC2(({0.025, 0.565 , 0.025670}))*.MirrorC2);
  };
  
  AnyRefNode O_trapezius_clavicular_part_4        = { 
     sRel = (.ScaleC2(({-0.01, 0.545 , 0.005}))*.MirrorC2);
  };
  
};


C3SegRef={
  AnyFunTransform3D &ScaleC3 =....Trunk.SegmentsCervicalSpine.C3Seg.Scale;
  
  AnyMat33 MirrorC3 ={{1,0,0},{0,1,0},{0,0,..Sign}};
  
  AnyRefNode O_levator_scapulae_3                 = {
    sRel = (.ScaleC3(({0.024, 0.55 , 0.023100}))*.MirrorC3);
  };
  AnyRefNode O_trapezius_clavicular_part_3        = { 
    sRel = (.ScaleC3(({-0.012, 0.535 , 0.005}))*.MirrorC3);
  };
};


C4SegRef={
  AnyFunTransform3D &ScaleC4 =....Trunk.SegmentsCervicalSpine.C4Seg.Scale;
  
  AnyMat33 MirrorC4 ={{1,0,0},{0,1,0},{0,0,..Sign}};
  
  AnyRefNode O_levator_scapulae_4                 = {
    sRel = (.ScaleC4(({0.023, 0.535 , 0.023100}))*.MirrorC4);
  };
  
  AnyRefNode O_trapezius_clavicular_part_2        = { 
    sRel = (.ScaleC4(({-0.014, 0.522 , 0.005}))*.MirrorC4);
  };
};

C5SegRef={
  AnyFunTransform3D &ScaleC5 =....Trunk.SegmentsCervicalSpine.C5Seg.Scale;
  
  AnyMat33 MirrorC5 ={{1,0,0},{0,1,0},{0,0,..Sign}};
  
  AnyRefNode O_trapezius_clavicular_part_1        = { 
    sRel = (.ScaleC5(({-0.022, 0.513 , 0.005}))*.MirrorC5);
  };
  
};

C6SegRef={
  AnyFunTransform3D &ScaleC6 =....Trunk.SegmentsCervicalSpine.C6Seg.Scale;
  
  AnyMat33 MirrorC6 ={{1,0,0},{0,1,0},{0,0,..Sign}};
  
  AnyRefNode O_trapezius_clavicular_part_7 = { 
     sRel = (.ScaleC6(({-0.026, 0.495 , 0.005}))*.MirrorC6);
  };
  
};

C7SegRef={
  
  AnyFunTransform3D &ScaleC7 =....Trunk.SegmentsCervicalSpine.C7Seg.Scale;
 
  AnyMat33 MirrorC7 ={{1,0,0},{0,1,0},{0,0,..Sign}};
  AnyRefNode O_trapezius_clavicular_part_8 = { 
     sRel = (.ScaleC7(({-0.030, 0.47 , 0.005}))*.MirrorC7);
  };
  AnyRefNode O_rhomboideus_1 = { 
    sRel = (.ScaleC7(({-0.027, 0.47 , 0.005}))*.MirrorC7);
  };
  
};