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