133 lines (117 with data), 8.4 kB
// This file introduces ligaments of the forearm. All ligament attachments are selected according to available anatomy drawings.
Seg.Ulna = {
AnyMatrix UlnaLigPoints = {
{0.01027256, 0.03053437, 0.02646607}, // proximal oblique cord
{0.006864461, 0.05870442, 0.01586979}, // dorsal oblique accessory cord
{0.009631072, 0.1128575, 0.005968544}, // accessory band proximal 0
{0.01082234, 0.1189339, 0.006503247}, // accessory band proximal 1
{0.01223949, 0.1269595, 0.006456108}, // accessory band proximal 2
{0.01812999, 0.1877319, 0.0004640078}, // central band
{0.01834608, 0.1922168, 0.0003194993}, // accessory band distal 0
{0.01852999, 0.197458, -0.0005442755}, // accessory band distal 1
{0.01869039, 0.2049211, -0.0005149381},// accessory band distal 2
{0.01841907, 0.216593, 0.0002533193}, // distal oblique bundle
//{0.001087829, 0.02615658, 0.007038541},// quadrate ligament
{0.001295929, 0.02336322, -0.001982712}, {0.0005675815, 0.02301031, 0.006880792}, // quadrate ligament
//{0.0315614, 0.2646999, -0.003707551}, // anterior radioulnar ligament
{0.02775658, 0.2693356, 0.00204358} // anterior radioulnar ligament, 49min
};
AnyRefNode IO_ProximalObliqueCord_I = {sRel=.Scale(.UlnaLigPoints[0])*.Mirror;};
AnyRefNode IO_DorsalObliqueAccCord_I= {sRel=.Scale(.UlnaLigPoints[1])*.Mirror;};
AnyRefNode IO_AccBandProximal_0_I = {sRel=.Scale(.UlnaLigPoints[2])*.Mirror;};
AnyRefNode IO_AccBandProximal_1_I = {sRel=.Scale(.UlnaLigPoints[3])*.Mirror;};
AnyRefNode IO_AccBandProximal_2_I = {sRel=.Scale(.UlnaLigPoints[4])*.Mirror;};
AnyRefNode IO_CentralBand_I = {sRel=.Scale(.UlnaLigPoints[5])*.Mirror;};
AnyRefNode IO_AccBandDistal_0_I = {sRel=.Scale(.UlnaLigPoints[6])*.Mirror;};
AnyRefNode IO_AccBandDistal_1_I = {sRel=.Scale(.UlnaLigPoints[7])*.Mirror;};
AnyRefNode IO_AccBandDistal_2_I = {sRel=.Scale(.UlnaLigPoints[8])*.Mirror;};
AnyRefNode IO_DistalObliqueBundle_I = {sRel=.Scale(.UlnaLigPoints[9])*.Mirror;};
AnyRefNode QuadrateLig0_I = {sRel=.Scale(.UlnaLigPoints[10])*.Mirror;};
AnyRefNode QuadrateLig1_I = {sRel=.Scale(.UlnaLigPoints[11])*.Mirror;};
AnyRefNode AnteriorPalmarRULig_I = {sRel=.Scale(.UlnaLigPoints[12])*.Mirror;};
AnyMatrix DistalCyl = {
{-0.01282776, 0.02179041, 0.000504263},
{0.02257921, 0.2679321, -0.001825629}
};
AnyRefNode PalmarCylNode1 = {
sRel=.Scale(.DistalCyl[1])*.Mirror;
AnyDrawRefFrame rf={ScaleXYZ={1,1,1}*0.1;RGB={1,1,0};};
AnyRefNode cylNode = {
ARel = RotMat(..Mirror[1][1]*pi/2,x);
AnySurfCylinder PalmarLigWrapping = {
Radius = 0.008;
Length = 0.05;
AnyDrawParamSurf srf = {RGB={0,1,0};};
};
};
};
};
Seg.Radius = {
AnyMatrix RadLigPoints = {
{-0.005243996, 0.006595548, 0.005220886}, // proximal oblique cord
{-0.07546981, -0.01007519, 0.003868241} , // dorsal oblique accessory cord
{-0.07104317, -0.00911907, 0.003925403} , // accessory band proximal 0
{-0.08044681, -0.01109175, 0.003798664} , // accessory band proximal 1
{-0.08849236, -0.01277326, 0.003921999} , // accessory band proximal 2
{-0.09975465, -0.01431068, 0.003828944} , // central band
{-0.1099578, -0.01490942, 0.004024862} , // accessory band distal 0
{-0.12291, -0.0166468, 0.005292012} , // accessory band distal 1
{-0.1281647, -0.01762517, 0.006072823} , // accessory band distal 2
{-0.2001862, -0.01125255, 0.009823908} , // distal oblique bundle
{0.01185857, 0.001999571, -0.005426232}, // quadrate ligament
{0.010682, 0.005532369, -0.002935296}, // quadrate ligament
{-0.2227529, -0.006527175, 0.0003172417}
};
AnyRefNode IO_ProximalObliqueCord_O = {sRel=.Scale(.RadLigPoints[0])*.Mirror;};
AnyRefNode IO_DorsalObliqueAccCord_O= {sRel=.Scale(.RadLigPoints[1])*.Mirror;};
AnyRefNode IO_AccBandProximal_0_O = {sRel=.Scale(.RadLigPoints[2])*.Mirror;};
AnyRefNode IO_AccBandProximal_1_O = {sRel=.Scale(.RadLigPoints[3])*.Mirror;};
AnyRefNode IO_AccBandProximal_2_O = {sRel=.Scale(.RadLigPoints[4])*.Mirror;};
AnyRefNode IO_CentralBand_O = {sRel=.Scale(.RadLigPoints[5])*.Mirror;};
AnyRefNode IO_AccBandDistal_0_O = {sRel=.Scale(.RadLigPoints[6])*.Mirror;};
AnyRefNode IO_AccBandDistal_1_O = {sRel=.Scale(.RadLigPoints[7])*.Mirror;};
AnyRefNode IO_AccBandDistal_2_O = {sRel=.Scale(.RadLigPoints[8])*.Mirror;};
AnyRefNode IO_DistalObliqueBundle_O = {sRel=.Scale(.RadLigPoints[9])*.Mirror;};
AnyRefNode QuadrateLig0_O = {sRel=.Scale(.RadLigPoints[10])*.Mirror;};
AnyRefNode QuadrateLig1_O = {sRel=.Scale(.RadLigPoints[11])*.Mirror;};
AnyRefNode AnteriorPalmarRULig_O = {sRel=.Scale(.RadLigPoints[12])*.Mirror;};
PointPS2.latCondCenter = {
AnyRefNode cylNode = {
ARel = RotMat(-pi/2, y);
AnySurfCylinder QuadLigWrapping = {
AnyDrawParamSurf srf = {RGB={0,0,1};};
Length = 0.1;
Radius = 0.0056;
};
};
};
};
Jnt = {
AnyFolder ForearmLigaments = {
AnyKinPLine IO_ProximalObliqueCord = {AnyRefFrame &rf0 = ...Seg.Radius.IO_ProximalObliqueCord_O ; AnyRefFrame &rf1 = ...Seg.Ulna.IO_ProximalObliqueCord_I ; AnyDrawPLine drwLig = {Thickness=0.0025;RGB={1,1,0};};};
AnyKinPLine IO_DorsalObliqueAccCord= {AnyRefFrame &rf0 = ...Seg.Radius.IO_DorsalObliqueAccCord_O; AnyRefFrame &rf1 = ...Seg.Ulna.IO_DorsalObliqueAccCord_I; AnyDrawPLine drwLig = {Thickness=0.0025;RGB={1,1,0};};};
AnyKinPLine IO_AccBandProximal_0 = {AnyRefFrame &rf0 = ...Seg.Radius.IO_AccBandProximal_0_O ; AnyRefFrame &rf1 = ...Seg.Ulna.IO_AccBandProximal_0_I ; AnyDrawPLine drwLig = {Thickness=0.0025;RGB={1,1,0};};};
AnyKinPLine IO_AccBandProximal_1 = {AnyRefFrame &rf0 = ...Seg.Radius.IO_AccBandProximal_1_O ; AnyRefFrame &rf1 = ...Seg.Ulna.IO_AccBandProximal_1_I ; AnyDrawPLine drwLig = {Thickness=0.0025;RGB={1,1,0};};};
AnyKinPLine IO_AccBandProximal_2 = {AnyRefFrame &rf0 = ...Seg.Radius.IO_AccBandProximal_2_O ; AnyRefFrame &rf1 = ...Seg.Ulna.IO_AccBandProximal_2_I ; AnyDrawPLine drwLig = {Thickness=0.0025;RGB={1,1,0};};};
AnyKinPLine IO_CentralBand = {AnyRefFrame &rf0 = ...Seg.Radius.IO_CentralBand_O ; AnyRefFrame &rf1 = ...Seg.Ulna.IO_CentralBand_I ; AnyDrawPLine drwLig = {Thickness=0.0025;RGB={1,1,0};};};
AnyKinPLine IO_AccBandDistal_0 = {AnyRefFrame &rf0 = ...Seg.Radius.IO_AccBandDistal_0_O ; AnyRefFrame &rf1 = ...Seg.Ulna.IO_AccBandDistal_0_I ; AnyDrawPLine drwLig = {Thickness=0.0025;RGB={1,1,0};};};
AnyKinPLine IO_AccBandDistal_1 = {AnyRefFrame &rf0 = ...Seg.Radius.IO_AccBandDistal_1_O ; AnyRefFrame &rf1 = ...Seg.Ulna.IO_AccBandDistal_1_I ; AnyDrawPLine drwLig = {Thickness=0.0025;RGB={1,1,0};};};
AnyKinPLine IO_AccBandDistal_2 = {AnyRefFrame &rf0 = ...Seg.Radius.IO_AccBandDistal_2_O ; AnyRefFrame &rf1 = ...Seg.Ulna.IO_AccBandDistal_2_I ; AnyDrawPLine drwLig = {Thickness=0.0025;RGB={1,1,0};};};
AnyKinPLine IO_DistalObliqueBundle = {AnyRefFrame &rf0 = ...Seg.Radius.IO_DistalObliqueBundle_O ; AnyRefFrame &rf1 = ...Seg.Ulna.IO_DistalObliqueBundle_I ; AnyDrawPLine drwLig = {Thickness=0.0025;RGB={1,1,0};};};
AnyKinSPLine QuadrateLig0 = {
AnyRefFrame &rf0 = ...Seg.Radius.QuadrateLig0_O ;
AnyRefFrame &rf1 = ...Seg.Ulna.QuadrateLig0_I ;
AnyDrawPLine drwLig = {Thickness=0.0025;RGB={1,1,0};};
StringMesh = 10;
AnySurface &srf = ...Seg.Radius.PointPS2.latCondCenter.cylNode.QuadLigWrapping;
};
AnyKinSPLine QuadrateLig1 = {
AnyRefFrame &rf0 = ...Seg.Radius.QuadrateLig1_O ;
AnyRefFrame &rf1 = ...Seg.Ulna.QuadrateLig1_I ;
AnyDrawPLine drwLig = {Thickness=0.0025;RGB={1,1,0};};
StringMesh = 10;
AnySurface &srf = ...Seg.Radius.PointPS2.latCondCenter.cylNode.QuadLigWrapping;
};
AnyKinPLine AnteriorPalmarRULig = {AnyRefFrame &rf0 = ...Seg.Radius.AnteriorPalmarRULig_O ; AnyRefFrame &rf1 = ...Seg.Ulna.AnteriorPalmarRULig_I ; AnyDrawPLine drwLig = {Thickness=0.0025;RGB={1,1,0};};};
};
};