181 lines (133 with data), 5.3 kB
#class_template TripodOnPlane (AnyRefFrame &Base,AnyMechOpr &Study,LinOnOffX,LinOnOffY,LinOnOffZ,RotOnOffX,RotOnOffY,RotOnOffZ){
#var AnyVec3 GlobalPos ; // Variable with obligatory initialization
#var AnyVec3 GlobalRotZYX ; // Variable with obligatory initialization
#var AnyVec3 LocalPos ; // Variable with obligatory initialization
#var AnyVec3 LocalRotZYX ; // Variable with obligatory initialization
#var AnyVar TripodSize;// Variable with obligatory initialization
AnyDrawWidgetLin DrwWidget1 = {
RefFrame = &.Main.Model.EnvironmentModel.GlobalRef;
Target = &.Box.Origin;
AxisOnOff = {.LinOnOffX ,.LinOnOffY ,.LinOnOffZ };
UpdateEvent = OnMouseRelease;
Operation = &.Study;
MaxDrawSize=0.15;
AnyVec3 tt=.Box.BoxRot.CenterOfBox.sRel;
RelPos=&tt;
Opacity=0.5;
};
AnyDrawWidgetRot DrwWidget2 = {
RefFrame = &.Box;
Target = &.Box.BoxRot.ARel;
AxisOnOff = {.RotOnOffX ,.RotOnOffY ,.RotOnOffZ };
UpdateEvent = OnMouseRelease;
Operation = &.Study;
MaxDrawSize=0.05;
Opacity=0.5;
};
AnyFixedRefFrame Box ={
Origin =.GlobalPos;
AnyRefNode BoxRot={
ARel=RotMat(..GlobalRotZYX[0]*pi/180,z)*RotMat(..GlobalRotZYX[1]*pi/180,y)*RotMat(..GlobalRotZYX[2]*pi/180,x);
AnyRefNode CenterContactNode ={
AnyDrawNode drw1={ RGB={1,0,0}; ScaleXYZ=0.01*{1,1,1};};
sRel={-0.5*...TripodSize,0,0};
};
AnyRefNode MedialContactNode ={
sRel={0.5*...TripodSize,-0.5*...TripodSize,0};
AnyDrawNode drw1={ RGB={1,0,0}; ScaleXYZ=0.01*{1,1,1};};
};
AnyRefNode LateralContactNode ={
sRel={0.5*...TripodSize,0.5*...TripodSize,0};
AnyDrawNode drw1={ RGB={1,0,0}; ScaleXYZ=0.01*{1,1,1};};
};
AnyKinPLine Line ={
AnyRefNode &ref1= .CenterContactNode ;
AnyRefNode &ref2= .MedialContactNode ;
AnyRefNode &ref3= .LateralContactNode;
AnyRefNode &ref4= .CenterContactNode ;
AnyDrawPLine drw={Thickness=.001; RGB={1,0,0};};
};
AnyRefNode CenterOfBox ={
sRel={0,0,0};
};
// AnyRefNode BoxNode ={
// sRel={...TripodSize*0.5,0,0}-{DrwBox.ScaleXYZ[0]*0.5,0,-0.5*DrwBox.ScaleXYZ[2] };
//// AnyDrawSurf DrwBox = {
//// FileName = "UnityBox";
//// RGB = 0.45*{1,1,1};
//// ScaleXYZ={....TripodSize,....TripodSize,....TripodSize*0.1};
//// Opacity =0.15;
//// Face=-1;
//// };
//
// };
};
};
// AnySeg &Base=Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Hand;
Base={
AnyRefNode CenterContactNode ={
sRel=..LocalPos;
ARel=RotMat(..LocalRotZYX[0]*pi/180,z)*RotMat(..LocalRotZYX[1]*pi/180,y)*RotMat(..LocalRotZYX[2]*pi/180,x);
AnyDrawNode node={ ScaleXYZ=0.01*{1,1,1}; RGB={0,0,1};};
AnyDrawRefFrame drw2={ RGB = 0.45*{1,1,1}; ScaleXYZ=0.05*{1,1,1}; };
};
AnyRefNode MedialContactNode ={
AnyDrawNode drw2={ ScaleXYZ=0.01*{1,1,1}; RGB={0,0,1};};
sRel={-..TripodSize,0.5*..TripodSize,0}*ARel+.CenterContactNode.sRel;
ARel=.CenterContactNode.ARel;
};
AnyRefNode LateralContactNode ={
AnyDrawNode drw2={ ScaleXYZ=0.01*{1,1,1}; RGB={0,0,1};};
sRel={-..TripodSize,-0.5*..TripodSize,0}*ARel+.CenterContactNode.sRel;
ARel=.CenterContactNode.ARel;
};
};
AnyKinEqSimpleDriver CenterNode ={
AnyKinLinear Lin={
Ref=0;
AnyRefNode &ref1=..Base.CenterContactNode ;
AnyRefNode &ref2=..Box.BoxRot.CenterContactNode;
};
DriverPos={0,0,0};
DriverVel={0,0,0};
Reaction.Type={Off,Off,Off};
CType={Soft,Soft,Soft};
};
AnyKinPLine CenterNodeLine ={
AnyRefFrame &ref1=.CenterNode.Lin.ref1;
AnyRefFrame &ref2=.CenterNode.Lin.ref2;
AnyDrawPLine drw={Thickness=0.001; RGB={0,0,1};};
};
AnyKinEqSimpleDriver MedialContactNode ={
AnyKinLinear Lin={
Ref=0;
AnyRefNode &ref1=..Base.MedialContactNode ;
AnyRefNode &ref2=..Box.BoxRot.MedialContactNode ;
};
DriverPos={0,0,0};
DriverVel={0,0,0};
Reaction.Type={Off,Off,Off};
CType={Soft,Soft,Soft};
};
AnyKinPLine MedialContactNodeLine ={
AnyRefFrame &ref1=.MedialContactNode.Lin.ref1;
AnyRefFrame &ref2=.MedialContactNode.Lin.ref2;
AnyDrawPLine drw={Thickness=0.001; RGB={0,0,1};};
};
AnyKinEqSimpleDriver LateralContactNode ={
AnyKinLinear Lin={
Ref=0;
AnyRefNode &ref1=..Base.LateralContactNode ;
AnyRefNode &ref2=..Box.BoxRot.LateralContactNode ;
};
DriverPos={0,0,0};
DriverVel={0,0,0};
Reaction.Type={Off,Off,Off};
CType={Soft,Soft,Soft};
};
AnyKinPLine LateralContactNodeLine ={
AnyRefFrame &ref1=.LateralContactNode.Lin.ref1;
AnyRefFrame &ref2=.LateralContactNode.Lin.ref2;
AnyDrawPLine drw={Thickness=0.0001; RGB={0,0,1};};
};
};