本文整理汇总了C++中YsAtt3::SetForwardVector方法的典型用法代码示例。如果您正苦于以下问题:C++ YsAtt3::SetForwardVector方法的具体用法?C++ YsAtt3::SetForwardVector怎么用?C++ YsAtt3::SetForwardVector使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类YsAtt3
的用法示例。
在下文中一共展示了YsAtt3::SetForwardVector方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
YSRESULT YsCollisionOfPolygon::PrecomputeProjectionOfPolygon2(void)
{
if(np2>0 && p2!=NULL)
{
if(pln2.GetNormal()!=YsOrigin())
{
YsAtt3 att;
YsVec3 prj;
YsBoundingBoxMaker2 makeBbx;
int i;
att.SetForwardVector(pln2.GetNormal());
att.GetMatrix4x4(p2PrjMat);
p2PrjMat.Invert();
p2PrjMat.Translate(-pln2.GetOrigin());
p2Prj.Set(np2,NULL);
makeBbx.Begin();
for(i=0; i<np2; i++)
{
prj=p2PrjMat*p2[i];
p2Prj[i].GetXY(prj);
makeBbx.Add(p2Prj[i]);
}
makeBbx.Get(p2PrjMin,p2PrjMax);
return YSOK;
}
else
{
YsErrOut("YsCollisionOfPolygon::PrecomputeProjectionOfPolygon2()\n");
YsErrOut(" Normal of polygon2 is not set.\n");
return YSERR;
}
}
else
{
YsErrOut("YsCollisionOfPolygon::PrecomputeProjectionOfPolygon2()\n");
YsErrOut(" This function must be called after SetPolygon2()\n");
return YSERR;
}
}
示例2: if
//.........这里部分代码省略.........
}
glLineWidth(1);
}
else if(type==IFTYPE_SLIDER)
{
}
else if(type==IFTYPE_ROTATION)
{
if(dragging==YSTRUE)
{
glColor3d(1.0,0.0,5.0);
}
else
{
glColor3d(0.0,1.0,0.0);
}
glLineWidth(3);
glBegin(GL_LINES);
glVertex3dv((rot_center+rot_axis*infiniteLongLine).GetValue());
glVertex3dv((rot_center-rot_axis*infiniteLongLine).GetValue());
glEnd();
glLineWidth(1);
YsVec3 iVec=rot_iVec;
YsVec3 jVec=rot_jVec;
YsVec3 kVec=rot_kVec;
YsMatrix4x4 mat,axisMat;
YsAtt3 att;
att.SetForwardVector(rot_axis);
att.GetMatrix4x4(axisMat);
mat.Initialize();
mat.Rotate(rot_axis.x(),rot_axis.y(),rot_axis.z(),rot_angle);
mat=mat*axisMat;
mat.Scale(1.0,1.0,rot_mirror);
mat.Scale(rot_ref_size,rot_ref_size,rot_ref_size);
axisMat.Invert();
mat=mat*axisMat;
iVec=mat*iVec;
jVec=mat*jVec;
kVec=mat*kVec;
glBegin(GL_LINES);
for(int i=0; i<360; i+=30)
{
YsVec3 p[2];
double a;
a=YsPi*2.0*double(i)/360.0;
p[0]=rot_center+iVec*cos(a)+jVec*1.0+kVec*sin(a);
p[1]=rot_center+iVec*cos(a)-jVec*1.0+kVec*sin(a);
glVertex3dv(p[0].GetValue());
glVertex3dv(p[1].GetValue());
}
glEnd();
glBegin(GL_LINE_LOOP);
for(int i=0; i<360; i+=10)
{
double a;
YsVec3 p;