330 lines (255 with data), 19.5 kB
// This file contains muscle attachment points for the clavicle segment data from VU sub 2.
// The original coordinates have been transformed from global coordinates to the segment local
// coordinate system
AnyFolder &Humerus =.Seg.Humerus;
Humerus = {
#include "../DrawSettings/SegmentAxes.any"
AnyRefNode art_gh_hum = {
sRel = .Scale(.Data.art_gh_hum_pos*.Mirror);
AnyVar Radius=0.0266;
AnyVec3 P1=.Scale(.Data.art_gh_hum_P1_pos*.Mirror);
AnyVec3 P2=.Scale(.Data.art_gh_hum_P2_pos*.Mirror);
AnyVec3 P3=.Scale(.Data.art_gh_hum_P3_pos*.Mirror);
//These three numbers are the distance from srel to P1, P2 and P3
AnyVar P1Radius= vnorm(sRel-P1);
AnyVar P2Radius= vnorm(sRel-P2);
AnyVar P3Radius= vnorm(sRel-P3);
//The art_gh_hum surf is made as an ellipsoid this is the only way to ensure that when
//scaling the bone the muscle insertation points will remain outside the surface
AnySurfEllipsoid art_gh_humSurf = {Radius ={.P1Radius,.P2Radius,.P3Radius};};
};
AnyRefNode SubscapularisHumerusWrapping = {
AnyVec3 CenterOffset = {0.005,0.005,0.00};
sRel = .Scale((.Data.gh_pos+CenterOffset)*.Mirror);
ARel = RotMat(pi/2, x);
AnyVec3 humerus_top=.Scale(.Data.art_gh_hum_P2_pos*.Mirror);
AnyVec3 i_subscapularis = .I_subscapularis_1.sRel;
AnySurfCylinder cyl = {
Radius = 0.99*vnorm(.sRel-.i_subscapularis);
Length = 0*Radius;
viewSurface.Opacity = 0.5;
CapRatio2 = vnorm(.sRel-.humerus_top)/Radius;
CapRatio = 2.7;
};
};
//Used for deltoid muscle wrapping
AnyRefNode art_tub_minus_tub_majus = {
sRel = .Scale(.Data.art_tub_minus_tub_majus_pos*.Mirror);
//Two points lying with an angle of 90 deg between are used for to control
//the scaling of the sphere
AnyVar Radius =0.036;
AnyVec3 P1=.Scale(.Data.art_tub_minus_tub_majus_P1_pos*.Mirror);
AnyVec3 P2=.Scale(.Data.art_tub_minus_tub_majus_P2_pos*.Mirror);
//These two numbers are the distance from srel to P1 and P2
AnyVar P1Radius= vnorm(sRel-P1);
AnyVar P2Radius= vnorm(sRel-P2);
//Take the average and use this as the radius
AnyVar RadiusAverage =(P1Radius+P2Radius)/2;
ARel={ {0,0,1}, {1,0,0}, {0,1,0}};
AnySurfSphere art_tub_minus_tub_majusSurf = {Radius =.RadiusAverage;};
};
AnyRefNode art_tub_minus ={sRel = .Scale(.Data.art_tub_minus_pos*.Mirror);};
AnyRefNode art_tub_majus ={sRel = .Scale(.Data.art_tub_majus_pos*.Mirror);};
AnyRefNode sulcus_intertubercularis ={sRel = .Scale(.Data.sulcus_intertubercularis_pos*.Mirror);};
AnyRefNode sulcus_intertubercularisTop ={sRel = .Scale(.Data.sulcus_intertubercularisTop_pos*.Mirror);};
AnyRefNode collum_hum = {
AnyVec3 P2 =.Scale(.Data.collum_hum_P2_pos*.Mirror); ////Point used for radius
AnyVec3 P3 =.Scale(.Data.collum_hum_P3_pos*.Mirror); //End point
sRel = .Scale(.Data.collum_hum_pos*.Mirror);
//Calculate orientation of the cylinder (A little different to all other surfaces)
ARel=RotMat(sRel,P3,P2)*RotMat(90/180*pi, x)*RotMat(90/180*pi, y);
AnySurfCylinder collum_hum= {
Radius=vnorm(.sRel-.P2);
Length=vnorm(.sRel-.P3);
};
};
AnyRefNode collum_hum_teres_minor_major = {
AnyMatrix p = .Scale(.Data.HumerusWrapLandmarks*.Mirror);
AnyFloat lengthscalefactor = 1;
AnyFloat radiusscalefactor = 0.92;
AnyVar Z_rotation =0.5*pi*(1-...Sign);
#include "<ANYBODY_PATH_MODELUTILS>/WrappingSurfaces/WrappingCylinder5PointFit.any"
cyl ={CapRatio =1;};
};
AnyRefNode teres_minor_humurus_wrap = {
AnyVar minor_radius = 0.90*abs(.gh.sRel-.I_teres_minor_1.sRel)[0];
AnyVar major_radius = minor_radius*1.9;
AnyVec3 minor_center = {0, .I_teres_minor_3.sRel[1],0};
AnyMat33 orientation = RotMat(0.0*...Sign,y);
AnyVec3 major_center = minor_center+major_radius*...Sign*orientation'[0];
sRel=major_center;
ARel = orientation;
//viewRefFrame.Visible = Off;
AnySurfTorus torus = {
MajorRadius = .major_radius;
MinorRadius = .minor_radius;
//viewSurface.Visible=On;
};
};
AnyRefNode infraspinatus_humurus_wrap = {
AnyVar minor_radius = 0.96*abs(.gh.sRel-.I_infraspinatus_5.sRel)[0];
AnyVar major_radius = minor_radius*1.9;
AnyVec3 minor_center = {0, .I_infraspinatus_5.sRel[1],0};
AnyMat33 orientation = RotMat(0.0*...Sign,y);
AnyVec3 major_center = minor_center+major_radius*...Sign*orientation'[0];
sRel=major_center;
ARel = orientation;
//viewRefFrame.Visible = Off;
AnySurfTorus torus = {
MajorRadius = .major_radius;
MinorRadius = .minor_radius;
//viewSurface.Visible=On;
};
};
AnyRefNode tricpes_gh_sphere = {
sRel=.gh.sRel;
ARel =RotMat(...Sign*0.25*pi,y);
AnySurfSphere surf = {
AnyVar ra= 1*..art_gh_hum.Radius;
Radius=ra ;
};
};
// This is a collum which visually has been fitted to the distal end of humerus
// it is used for wrapping of elbow flexor muscles.
AnyRefNode condylus_hum= {
AnyMatrix p = .Scale(.Data.condylus_hum_landmarks *.Mirror);
AnyFloat lengthscalefactor = 5;
AnyFloat radiusscalefactor = 1.2;
AnyVar Z_rotation =iffun(eqfun(1.0,...Sign),1,0)*pi;
#include "<ANYBODY_PATH_MODELUTILS>/WrappingSurfaces/WrappingCylinder5PointFit.any"
cyl = {
CapRatio = 0.8;
};
};
// This is a collum which visually has been fitted to the distal end of humerus
// it is used for wrapping of Triceps muscles
AnyRefNode condylus_humT = {
AnyVec3 P2 =.Scale(.Data.condylus_humT_P2_pos*.Mirror); //End point
AnyVec3 P3 =.Scale(.Data.condylus_humT_P3_pos*.Mirror); //Point used for radius
sRel = .Scale(.Data.condylus_humT_pos*.Mirror);
//Calculate orientation of the cylinder
ARel=RotMat(sRel,P3,P2)*RotMat(-90/180*pi, z)*RotMat(-90/180*pi, y);
AnySurfCylinder condylus_humT= {
Radius=vnorm(.sRel-.P3);
Length=vnorm(.sRel-.P2);
};
};
#if BM_ARM_DELTOID_WRAPPING == _DELTOID_WRAPPING_RAKE_
AnyRefNode I_deltoideus_scapular_part_1 = {sRel = .Scale(.Data.I_deltoideus_scapular_part_1_pos*.Mirror);};
AnyRefNode I_deltoideus_scapular_part_2 = {sRel = .Scale(.Data.I_deltoideus_scapular_part_2_pos*.Mirror);};
AnyRefNode I_deltoideus_scapular_part_3 = {sRel = .Scale(.Data.I_deltoideus_scapular_part_3_pos*.Mirror);};
AnyRefNode I_deltoideus_scapular_part_4 = {sRel = .Scale(.Data.I_deltoideus_scapular_part_4_pos*.Mirror);};
AnyRefNode I_deltoideus_scapular_part_5 = {sRel = .Scale(.Data.I_deltoideus_scapular_part_5_pos*.Mirror);};
AnyRefNode I_deltoideus_scapular_part_6 = {sRel = .Scale(.Data.I_deltoideus_scapular_part_6_pos*.Mirror);};
AnyRefNode I_deltoideus_clavicular_part_1 = {sRel = .Scale(.Data.I_deltoideus_clavicular_part_1_pos*.Mirror);};
AnyRefNode I_deltoideus_clavicular_part_2 = {sRel = .Scale(.Data.I_deltoideus_clavicular_part_2_pos*.Mirror);};
AnyRefNode I_deltoideus_clavicular_part_3 = {sRel = .Scale(.Data.I_deltoideus_clavicular_part_3_pos*.Mirror);};
AnyRefNode I_deltoideus_clavicular_part_4 = {sRel = .Scale(.Data.I_deltoideus_clavicular_part_4_pos*.Mirror);};
AnyRefNode I_deltoideus_clavicular_part_5 = {sRel = .Scale(.Data.I_deltoideus_clavicular_part_5_pos*.Mirror);};
AnyRefNode I_deltoideus_clavicular_part_6 = {sRel = .Scale(.Data.I_deltoideus_clavicular_part_6_pos*.Mirror);};
#else
AnyRefNode I_deltoideus_posterior_part_1 = {sRel = .Scale(.Data.I_deltoideus_posterior_part_1_pos*.Mirror);};
AnyRefNode I_deltoideus_posterior_part_2 = {sRel = .Scale(.Data.I_deltoideus_posterior_part_2_pos*.Mirror);};
AnyRefNode I_deltoideus_posterior_part_3 = {sRel = .Scale(.Data.I_deltoideus_posterior_part_3_pos*.Mirror);};
AnyRefNode I_deltoideus_posterior_part_4 = {sRel = .Scale(.Data.I_deltoideus_posterior_part_4_pos*.Mirror);};
AnyRefNode I_deltoideus_lateral_part_1 = {sRel = .Scale(.Data.I_deltoideus_lateral_part_1_pos*.Mirror);};
AnyRefNode I_deltoideus_lateral_part_2 = {sRel = .Scale(.Data.I_deltoideus_lateral_part_2_pos*.Mirror);};
AnyRefNode I_deltoideus_lateral_part_3 = {sRel = .Scale(.Data.I_deltoideus_lateral_part_3_pos*.Mirror);};
AnyRefNode I_deltoideus_lateral_part_4 = {sRel = .Scale(.Data.I_deltoideus_lateral_part_4_pos*.Mirror);};
AnyRefNode I_deltoideus_anterior_part_1 = {sRel = .Scale(.Data.I_deltoideus_anterior_part_1_pos*.Mirror);};
AnyRefNode I_deltoideus_anterior_part_2 = {sRel = .Scale(.Data.I_deltoideus_anterior_part_2_pos*.Mirror);};
AnyRefNode I_deltoideus_anterior_part_3 = {sRel = .Scale(.Data.I_deltoideus_anterior_part_3_pos*.Mirror);};
AnyRefNode I_deltoideus_anterior_part_4 = {sRel = .Scale(.Data.I_deltoideus_anterior_part_4_pos*.Mirror);};
#endif
AnyRefNode I_subscapularis_1 = {sRel = .Scale(.Data.I_subscapularis_1_pos*.Mirror);};
AnyRefNode I_subscapularis_2 = {sRel = .Scale(.Data.I_subscapularis_2_pos*.Mirror);};
AnyRefNode I_subscapularis_3 = {sRel = .Scale(.Data.I_subscapularis_3_pos*.Mirror);};
AnyRefNode I_subscapularis_4 = {sRel = .Scale(.Data.I_subscapularis_4_pos*.Mirror);};
AnyRefNode I_subscapularis_5 = {sRel = .Scale(.Data.I_subscapularis_5_pos*.Mirror);};
AnyRefNode I_subscapularis_6 = {sRel = .Scale(.Data.I_subscapularis_6_pos*.Mirror);};
AnyRefNode I_supraspinatus_1 = {sRel = .Scale(.Data.I_supraspinatus_1_pos*.Mirror);};
AnyRefNode I_supraspinatus_2 = {sRel = .Scale(.Data.I_supraspinatus_2_pos*.Mirror);};
AnyRefNode I_supraspinatus_3 = {sRel = .Scale(.Data.I_supraspinatus_3_pos*.Mirror);};
AnyRefNode I_supraspinatus_4 = {sRel = .Scale(.Data.I_supraspinatus_4_pos*.Mirror);};
AnyRefNode I_supraspinatus_5 = {sRel = .Scale(.Data.I_supraspinatus_5_pos*.Mirror);};
AnyRefNode I_supraspinatus_6 = {sRel = .Scale(.Data.I_supraspinatus_6_pos*.Mirror);};
AnyRefNode I_infraspinatus_1 = {sRel = .Scale(.Data.I_infraspinatus_1_pos*.Mirror);};
AnyRefNode I_infraspinatus_2 = {sRel = .Scale(.Data.I_infraspinatus_2_pos*.Mirror);};
AnyRefNode I_infraspinatus_3 = {sRel = .Scale(.Data.I_infraspinatus_3_pos*.Mirror);};
AnyRefNode I_infraspinatus_4 = {sRel = .Scale(.Data.I_infraspinatus_4_pos*.Mirror);};
AnyRefNode I_infraspinatus_5 = {sRel = .Scale(.Data.I_infraspinatus_5_pos*.Mirror);};
AnyRefNode I_infraspinatus_6 = {sRel = .Scale(.Data.I_infraspinatus_6_pos*.Mirror);};
AnyRefNode I_teres_minor_1 = {sRel = .Scale(.Data.I_teres_minor_1_pos*.Mirror);};
AnyRefNode I_teres_minor_2 = {sRel = .Scale(.Data.I_teres_minor_2_pos*.Mirror);};
AnyRefNode I_teres_minor_3 = {sRel = .Scale(.Data.I_teres_minor_3_pos*.Mirror);};
AnyRefNode I_teres_minor_4 = {sRel = .Scale(.Data.I_teres_minor_4_pos*.Mirror);};
AnyRefNode I_teres_minor_5 = {sRel = .Scale(.Data.I_teres_minor_5_pos*.Mirror);};
AnyRefNode I_teres_minor_6 = {sRel = .Scale(.Data.I_teres_minor_6_pos*.Mirror);};
AnyRefNode I_teres_major_1 = {sRel = .Scale(.Data.I_teres_major_1_pos*.Mirror);};
AnyRefNode I_teres_major_2 = {sRel = .Scale(.Data.I_teres_major_2_pos*.Mirror);};
AnyRefNode I_teres_major_3 = {sRel = .Scale(.Data.I_teres_major_3_pos*.Mirror);};
AnyRefNode I_teres_major_4 = {sRel = .Scale(.Data.I_teres_major_4_pos*.Mirror);};
AnyRefNode I_teres_major_5 = {sRel = .Scale(.Data.I_teres_major_5_pos*.Mirror);};
AnyRefNode I_teres_major_6 = {sRel = .Scale(.Data.I_teres_major_6_pos*.Mirror);};
AnyRefNode I_coracobrachialis_1 = {sRel = .Scale(.Data.I_coracobrachialis_1_pos*.Mirror);};
AnyRefNode I_coracobrachialis_2 = {sRel = .Scale(.Data.I_coracobrachialis_2_pos*.Mirror);};
AnyRefNode I_coracobrachialis_3 = {sRel = .Scale(.Data.I_coracobrachialis_3_pos*.Mirror);};
AnyRefNode I_coracobrachialis_4 = {sRel = .Scale(.Data.I_coracobrachialis_4_pos*.Mirror);};
AnyRefNode I_coracobrachialis_5 = {sRel = .Scale(.Data.I_coracobrachialis_5_pos*.Mirror);};
AnyRefNode I_coracobrachialis_6 = {sRel = .Scale(.Data.I_coracobrachialis_6_pos*.Mirror);};
AnyRefNode I_triceps_brachii_1 = {sRel = .Scale(.Data.I_triceps_brachii_1_pos*.Mirror);};
AnyRefNode I_triceps_brachii_2 = {sRel = .Scale(.Data.I_triceps_brachii_2_pos*.Mirror);};
AnyRefNode I_latissimus_dorsi_1 = {sRel = .Scale(.Data.I_latissimus_dorsi_1_pos*.Mirror);};
AnyRefNode I_latissimus_dorsi_2 = {sRel = .Scale(.Data.I_latissimus_dorsi_2_pos*.Mirror);};
AnyRefNode I_latissimus_dorsi_3 = {sRel = .Scale(.Data.I_latissimus_dorsi_3_pos*.Mirror);};
AnyRefNode I_latissimus_dorsi_4 = {sRel = .Scale(.Data.I_latissimus_dorsi_4_pos*.Mirror);};
AnyRefNode I_latissimus_dorsi_5 = {sRel = .Scale(.Data.I_latissimus_dorsi_5_pos*.Mirror);};
AnyRefNode I_latissimus_dorsi_6 = {sRel = .Scale(.Data.I_latissimus_dorsi_6_pos*.Mirror);};
AnyRefNode I_latissimus_dorsi_7 = {sRel = .Scale(.Data.I_latissimus_dorsi_7_pos*.Mirror);};
AnyRefNode I_latissimus_dorsi_8 = {sRel = .Scale(.Data.I_latissimus_dorsi_8_pos*.Mirror);};
AnyRefNode I_latissimus_dorsi_9 = {sRel = .Scale(.Data.I_latissimus_dorsi_9_pos*.Mirror);};
AnyRefNode I_latissimus_dorsi_10 = {sRel = .Scale(.Data.I_latissimus_dorsi_10_pos*.Mirror);};
AnyRefNode I_latissimus_dorsi_11 = {sRel = .Scale(.Data.I_latissimus_dorsi_11_pos*.Mirror);};
AnyRefNode I_pectoralis_major_thoracic_part_1 = {sRel = .Scale(.Data.I_pectoralis_major_thoracic_part_1_pos*.Mirror);};
AnyRefNode I_pectoralis_major_thoracic_part_2 = {sRel = .Scale(.Data.I_pectoralis_major_thoracic_part_2_pos*.Mirror);};
AnyRefNode I_pectoralis_major_thoracic_part_3 = {sRel = .Scale(.Data.I_pectoralis_major_thoracic_part_3_pos*.Mirror);};
AnyRefNode I_pectoralis_major_thoracic_part_4 = {sRel = .Scale(.Data.I_pectoralis_major_thoracic_part_4_pos*.Mirror);};
AnyRefNode I_pectoralis_major_thoracic_part_5 = {sRel = .Scale(.Data.I_pectoralis_major_thoracic_part_5_pos*.Mirror);};
AnyRefNode I_pectoralis_major_thoracic_part_6 = {sRel = .Scale(.Data.I_pectoralis_major_thoracic_part_6_pos*.Mirror);};
AnyRefNode I_pectoralis_major_thoracic_part_7 = {sRel = .Scale(.Data.I_pectoralis_major_thoracic_part_7_pos*.Mirror);};
AnyRefNode I_pectoralis_major_thoracic_part_8 = {sRel = .Scale(.Data.I_pectoralis_major_thoracic_part_8_pos*.Mirror);};
AnyRefNode I_pectoralis_major_thoracic_part_9 = {sRel = .Scale(.Data.I_pectoralis_major_thoracic_part_9_pos*.Mirror);};
AnyRefNode I_pectoralis_major_thoracic_part_10 = {sRel = .Scale(.Data.I_pectoralis_major_thoracic_part_10_pos*.Mirror);};
AnyRefNode I_pectoralis_major_clavicular_part_1 = {sRel = .Scale(.Data.I_pectoralis_major_clavicular_part_1_pos*.Mirror);};
AnyRefNode I_pectoralis_major_clavicular_part_2 = {sRel = .Scale(.Data.I_pectoralis_major_clavicular_part_2_pos*.Mirror);};
AnyRefNode I_pectoralis_major_clavicular_part_3 = {sRel = .Scale(.Data.I_pectoralis_major_clavicular_part_3_pos*.Mirror);};
AnyRefNode I_pectoralis_major_clavicular_part_4 = {sRel = .Scale(.Data.I_pectoralis_major_clavicular_part_4_pos*.Mirror);};
AnyRefNode I_pectoralis_major_clavicular_part_5 = {sRel = .Scale(.Data.I_pectoralis_major_clavicular_part_5_pos*.Mirror);};
AnyRefNode O_Brachialis_1 = {sRel = .Scale(.Data.O_Brachialis_1_pos*.Mirror);};
AnyRefNode O_Brachialis_2 = {sRel = .Scale(.Data.O_Brachialis_2_pos*.Mirror);};
AnyRefNode Via_Triceps_LH_1 = {sRel = .Scale(.Data.Via_Triceps_LH_1_pos*.Mirror);};
AnyRefNode Via_Triceps_LH_2 = {sRel = .Scale(.Data.Via_Triceps_LH_2_pos*.Mirror);};
AnyRefNode O_Triceps_ME_1 = {sRel = .Scale(.Data.O_Triceps_ME_1_pos*.Mirror);};
AnyRefNode O_Triceps_ME_2 = {sRel = .Scale(.Data.O_Triceps_ME_2_pos*.Mirror);};
AnyRefNode O_Triceps_LA_1 = {sRel = .Scale(.Data.O_Triceps_LA_1_pos*.Mirror);};
AnyRefNode O_Triceps_LA_2 = {sRel = .Scale(.Data.O_Triceps_LA_2_pos*.Mirror);};
AnyRefNode O_Brach_rad_1 = {sRel = .Scale(.Data.O_Brach_rad_1_pos*.Mirror);};
AnyRefNode O_Brach_rad_2 = {sRel = .Scale(.Data.O_Brach_rad_2_pos*.Mirror);};
AnyRefNode O_Anconeus_1 = {sRel = .Scale(.Data.O_Anconeus_1_pos*.Mirror);};
AnyRefNode O_Anconeus_2 = {sRel = .Scale(.Data.O_Anconeus_2_pos*.Mirror);};
AnyRefNode O_Pronator_teres_caput_humeral_1 = {sRel = .Scale(.Data.O_Pronator_teres_caput_humeral_1_pos*.Mirror);};
AnyRefNode O_Pronator_teres_caput_humeral_2 = {sRel = .Scale(.Data.O_Pronator_teres_caput_humeral_2_pos*.Mirror);};
AnyRefNode O_Supinator_humerus_part_1 = {sRel = .Scale(.Data.O_Supinator_humerus_part_1_pos*.Mirror);};
AnyRefNode O_Supinator_humerus_part_2 = {sRel = .Scale(.Data.O_Supinator_humerus_part_2_pos*.Mirror);};
AnyRefNode I_Cor_brach_1 = {sRel = .Scale(.Data.I_Cor_brach_1_pos*.Mirror);};
AnyRefNode I_Cor_brach_2 = {sRel = .Scale(.Data.I_Cor_brach_2_pos*.Mirror);};
AnyRefNode O_Extensor_Carpi_Ulnaris = {sRel = .Scale(.Data.O_Extensor_Carpi_Ulnaris_pos*.Mirror);};
AnyRefNode O_Extensor_Carpi_Radialis_Brevis = {sRel = .Scale(.Data.O_Extensor_Carpi_Radialis_Brevis_pos*.Mirror);};
AnyRefNode O_Extensor_Carpi_Radialis_Longus = {sRel = .Scale(.Data.O_Extensor_Carpi_Radialis_Longus_pos*.Mirror);};
AnyRefNode O_Flexor_Carpi_Ulnaris = {sRel = .Scale(.Data.O_Flexor_Carpi_Ulnaris_pos*.Mirror);};
AnyRefNode O_Flexor_Carpi_Radialis = {sRel = .Scale(.Data.O_Flexor_Carpi_Radialis_pos*.Mirror);};
AnyRefNode O_Palmaris_Longus = {sRel = .Scale(.Data.O_Palmaris_Longus_pos*.Mirror);};
AnyRefNode O_Flexor_Digitorum_Superficialis = {sRel = .Scale(.Data.O_Flexor_Digitorum_Superficialis_pos*.Mirror);};
AnyRefNode O_Extensor_Digitorum = {sRel = .Scale(.Data.O_Extensor_Digitorum_pos*.Mirror);};
AnyRefNode O_Extensor_Digiti_Minimi = {sRel = .Scale(.Data.O_Extensor_Digiti_Minimi_pos*.Mirror);};
};