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);
};
};