--- a +++ b/Application/Examples/LegPressMachine/Model/HumanRefNodes.any @@ -0,0 +1,329 @@ +AnyFolder HumanRefNodes = +{ + AnySeg& ThoraxSeg = Main.HumanModel.BodyModel.Trunk.SegmentsThorax.ThoraxSeg; + ThoraxSeg = + { + AnyFolder EllipDef = + { + AnyVec3 p_top = .Scale({0.141,0.266,0.0}*1.15); + AnyVec3 p_side_pos = .Scale( {0.044, 0.2475, 0.16}*1.05); + AnyVec3 p_side_neg = .Scale( {0.044, 0.2475, -0.16}*1.05); + AnyVec3 p_front = .Scale({-0.04988194, 0.5019326, 0}); + AnyVec3 org = (p_side_pos + p_side_neg) / 2.0 ; + AnyVec3 axis_x = (p_top - org) / vnorm(p_top - org) ; + AnyVec3 axis_z = (p_side_pos - org) / vnorm(p_side_pos - org) ; + AnyVec3 axis_y = cross(axis_z, axis_x) ; + + AnyMat33 rotMat = {axis_x, axis_y, axis_z}'; + AnyVec3 p_front_local = (p_front - org) * rotMat ; + + AnyVar Rx = vnorm(p_top - org); + AnyVar Rz = vnorm(p_side_pos - org); + AnyVar Ry = p_front_local[1] ; + }; + + AnyRefNode GeomCenterNode = + { + + sRel = .EllipDef.org; + ARel = .EllipDef.rotMat ; + AnySurfEllipsoid geom = + { + Radius = {..EllipDef.Rx, ..EllipDef.Ry, ..EllipDef.Rz}; +// AnyDrawParamSurf drw = +// { +// RGB = {1,1,0}; +// Opacity = 0.5; +// }; + }; +// AnyDrawRefFrame drw = +// { +// ScaleXYZ = 0.1 * {1,1,1}; +// RGB = {1,0,0}; +// }; + AnyRefNode SubGeomNode_Left_Hand = + { + AnyVar a = .geom.Radius[0]; + AnyVar b = .geom.Radius[1]; + AnyVar c = .geom.Radius[2]; + AnyVar alpha = 0 * pi / 180; + AnyVar beta = -20 * pi / 180; + AnyVar pt_x = a * cos(alpha) * cos(beta); + AnyVar pt_y = b * cos(alpha) * sin(beta); + AnyVar pt_z = c * sin(alpha); + sRel = {pt_x, pt_y, pt_z}; + //-->Test + AnyVec3 normal_vec = 2*{pt_x/pow(a,2), pt_y/pow(b,2), pt_z/pow(c,2)}; + AnyVec3 new_x = {0,0,1}; + AnyVec3 new_y = normal_vec / vnorm(normal_vec); + AnyVec3 new_z = cross(new_x, new_y); + ARel = {new_x, new_y, new_z}'; + //<--Test + }; + AnyRefNode SubGeomNode_Right_Hand = + { + AnyVar a = .geom.Radius[0]; + AnyVar b = .geom.Radius[1]; + AnyVar c = .geom.Radius[2]; + AnyVar alpha = 0 * pi / 180; + AnyVar beta = -20 * pi / 180; + + AnyVar pt_x = a * cos(alpha) * cos(beta); + AnyVar pt_y = b * cos(alpha) * sin(beta); + AnyVar pt_z = c * sin(alpha); + sRel = {pt_x, pt_y, pt_z}; + //-->Test + AnyVec3 normal_vec = 2*{pt_x/pow(a,2), pt_y/pow(b,2), pt_z/pow(c,2)}; + AnyVec3 new_x = {0,0,1}; + AnyVec3 new_y = normal_vec / vnorm(normal_vec); + AnyVec3 new_z = cross(new_x, new_y); + ARel = {new_x, new_y, new_z}'; + //<--Test + }; + AnyRefNode SubGeomNode_Back = + { + sRel = {-.geom.Radius[0], 0, 0}; + }; + }; + AnyRefNode GeomLeftNode = + { + sRel = .iji.sRel + (.iji.O_serratus_anterior_4.sRel * .iji.ARel'); + ARel = RotMat(20*pi/180, z); + + AnySurfEllipsoid geom = + { + Radius = {0.06, 0.1, 0.11}; +// AnyDrawParamSurf drw = +// { +// RGB = {1,1,0}; +// Opacity = 0.5; +// }; + }; + AnyRefNode SubUpperGeomNode = + { + AnyVar a = .geom.Radius[0]; + AnyVar b = .geom.Radius[1]; + AnyVar c = .geom.Radius[2]; + AnyVar alpha = -20 * pi / 180; + AnyVar beta = 0 * pi / 180; + AnyVar pt_x = a * cos(alpha) * cos(beta); + AnyVar pt_y = b * cos(alpha) * sin(beta); + AnyVar pt_z = c * sin(alpha); + sRel = {pt_x, pt_y, pt_z}; + //-->Test + AnyVec3 normal_vec = 2*{pt_x/pow(a,2), pt_y/pow(b,2), pt_z/pow(c,2)}; + AnyVec3 new_x = normal_vec / vnorm(normal_vec); + AnyVec3 new_y = {0,1,0}; + AnyVec3 new_z = cross(new_x, new_y); + ARel = {new_x, new_y, new_z}'; + //<--Test + }; + }; + AnyRefNode GeomRightNode = + { + sRel = .ij.sRel + (.ij.O_serratus_anterior_4.sRel * .ij.ARel'); + ARel = RotMat(20*pi/180, z); + + AnySurfEllipsoid geom = + { + Radius = {0.06, 0.1, 0.11}; +// AnyDrawParamSurf drw = +// { +// RGB = {1,1,0}; +// Opacity = 0.5; +// }; + }; + AnyRefNode SubUpperGeomNode = + { + AnyVar a = .geom.Radius[0]; + AnyVar b = .geom.Radius[1]; + AnyVar c = .geom.Radius[2]; + AnyVar alpha = 20 * pi / 180; + AnyVar beta = 0 * pi / 180; + AnyVar pt_x = a * cos(alpha) * cos(beta); + AnyVar pt_y = b * cos(alpha) * sin(beta); + AnyVar pt_z = c * sin(alpha); + sRel = {pt_x, pt_y, pt_z}; + //-->Test + AnyVec3 normal_vec = 2*{pt_x/pow(a,2), pt_y/pow(b,2), pt_z/pow(c,2)}; + AnyVec3 new_x = normal_vec / vnorm(normal_vec); + AnyVec3 new_y = {0,1,0}; + AnyVec3 new_z = cross(new_x, new_y); + ARel = {new_x, new_y, new_z}'; + //<--Test + }; + }; + AnyRefNode GeomNode_Waist_Left = + { + sRel = {.OEC11_CINodeL.sRel[0]*1.6, + .OEC11_CINodeL.sRel[1], + .OEC11_CINodeL.sRel[2]*1.3}; + }; + AnyRefNode GeomNode_Waist_Right = + { + sRel = {.OEC11_CINodeR.sRel[0]*1.6, + .OEC11_CINodeR.sRel[1], + .OEC11_CINodeR.sRel[2]*1.3}; + }; + + }; + + AnySeg& PelvisSeg = Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.PelvisSeg; + PelvisSeg = + { + AnyRefNode CenterNode = + { + sRel = .Scale({0.0,0.0,0.0}); + ARel = RotMat(-110*pi/180,z); + AnyDrawRefFrame drw = + { + ScaleXYZ = 0.1 * {1,1,1}; + RGB = {1,0,0}; + }; + + }; + AnyRefNode GeomCenterNode = + { + sRel = (.ILptC5SIPSNodeL.sRel + .ILptC5SIPSNodeR.sRel + + .Seat_contactL.sRel + .Seat_contactR.sRel + + .OICI_RS3NodeL.sRel + .OICI_RS3NodeR.sRel + + .OICI_C10NodeL.sRel + .OICI_C10NodeR.sRel) / 8; +// AnyDrawRefFrame drw = +// { +// ScaleXYZ = 0.1 * {1,1,1}; +// RGB = {1,0,0}; +// }; + AnySurfEllipsoid geom = + { + Radius = {0.12, 0.135, 0.165}; +// AnyDrawParamSurf drw = +// { +// RGB = {1,1,0}; +// Opacity = 0.5; +// }; + }; + }; + AnyRefNode LeftWaistNode = + { + sRel = {.OICI_C10NodeL.sRel[0], + .OICI_C11NodeL.sRel[1], + .OICI_C10NodeL.sRel[2]*1}; +// AnyDrawRefFrame drw = +// { +// ScaleXYZ = 0.1 * {1,1,1}; +// RGB = {1,0,0}; +// }; + }; + AnyRefNode RightWaistNode = + { + sRel = {.OICI_C10NodeR.sRel[0], + .OICI_C11NodeR.sRel[1], + .OICI_C10NodeR.sRel[2]*1}; +// AnyDrawRefFrame drw = +// { +// ScaleXYZ = 0.1 * {1,1,1}; +// RGB = {1,0,0}; +// }; + }; + }; + + AnySeg& RightGlove = Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Glove; + RightGlove = + { + AnyRefNode PalmNode = + { + sRel = .Scale({0.0,0.0,0.0}); + ARel = RotMat(90*pi/180,x); + AnyDrawRefFrame drw = + { + ScaleXYZ = 0.05 * {1,1,1}; + RGB = {1,0,0}; + }; + }; + }; + AnySeg& LeftGlove = Main.HumanModel.BodyModel.Left.ShoulderArm.Seg.Glove; + LeftGlove = + { + AnyRefNode PalmNode = + { + sRel = .Scale({0.0,0.0,0.0}); + ARel = RotMat(180*pi/180,z)*RotMat(-90*pi/180,x); + AnyDrawRefFrame drw = + { + ScaleXYZ = 0.05 * {1,1,1}; + RGB = {1,0,0}; + }; + }; + }; + + AnySeg& RightFoot = Main.HumanModel.BodyModel.Right.Leg.Seg.Foot; + RightFoot = + { + AnyRefNode FootNode = + { + sRel = 0.5*(.ToeLateralContactNode.sRel + .ToeMedialContactNode.sRel); + ARel = .ScalingNode.ARel; +// AnyDrawRefFrame drw = +// { +// ScaleXYZ = 0.05 * {1,1,1}; +// RGB = {1,0,0}; +// }; + AnyRefNode DrwNode = + { + ARel = RotMat(90*pi/180, y); +// AnyDrawRefFrame drw = +// { +// ScaleXYZ = 0.1 * {1,1,1}; +// RGB = {0,1,0}; +// }; + }; + }; + AnyRefNode ToeNode = + { + sRel = .MetatarsalJoint2Node.sRel; + ARel = .ScalingNode.ARel; + AnyDrawRefFrame drw = + { + ScaleXYZ = 0.05 * {1,1,1}; + RGB = {1,0,0}; + }; + + }; + + }; + AnySeg& LeftFoot = Main.HumanModel.BodyModel.Left.Leg.Seg.Foot; + LeftFoot = + { + AnyRefNode FootNode = + { + sRel = 0.5*(.ToeLateralContactNode.sRel + .ToeMedialContactNode.sRel); + ARel = .ScalingNode.ARel; +// AnyDrawRefFrame drw = +// { +// ScaleXYZ = 0.05 * {1,1,1}; +// RGB = {1,0,0}; +// }; + AnyRefNode DrwNode = + { + ARel = RotMat(90*pi/180, y); +// AnyDrawRefFrame drw = +// { +// ScaleXYZ = 0.1 * {1,1,1}; +// RGB = {0,1,0}; +// }; + }; + }; + AnyRefNode ToeNode = + { + sRel = .MetatarsalJoint2Node.sRel; + ARel = .ScalingNode.ARel; + AnyDrawRefFrame drw = + { + ScaleXYZ = 0.05 * {1,1,1}; + RGB = {1,0,0}; + }; + + }; + }; + +}; \ No newline at end of file