通过gp_Pnt类中的Translated函数可以实现沿着一个点的矢量方向平移一段距离生成另一个点。
gp_Pnt p1,p2;
gp_Vec aVec;//p1的向量
gp_Dir aVec1=aVec;//转换为单位向量
gp_Vec aVec2=d*aVec1;
p2=p1.Translated(aVec2);//P2为沿着p1矢量方向平移距离d后的点
应用:在一个圆柱面上画一个圆锥面,组合成一个箭头。
gp_Pnt p1,p2;
gp_Vec aVec;//p1的向量
gp_Dir aVec1=aVec;//转换为单位向量
gp_Vec aVec2=d*aVec1;
p2=p1.Translated(aVec2);//P2为沿着p1矢量方向平移距离d后的点
gp_Ax2 ax1=(p1,aVec1);
gp_Ax2 ax2=(p2,aVec2);
//创建圆柱
TopoDS_Shape cylinder = BRepPrimAPI_MakeCylinder(ax1,R,H1).Shape();
Handle(AIS_Shape) ais_cylinder = new AIS_Shape(cylinder);
m_context->Display(ais_cylinder, Standard_True);
创建圆锥
TopoDS_Shape cone = BRepPrimAPI_MakeCone(ax2,R1,R2,H2).Shape();
Handle(AIS_Shape) ais_cone = new AIS_Shape(cone);
m_context->Display(ais_cone, Standard_True);
得到的图形显示结果为