ie8打不开建设银行网站,wordpress评论模版,php和mysql网站毕业设计,python开发订阅号1、通过参数进行分割
分别获得曲线的 FirstParameter 和 LastParameter #xff0c;然后对参数进行分割#xff0c;获得n个ui#xff0c;并对每个ui调用D0#xff08;获得这个点的坐标值#xff09;或D1#xff08;获得这个点的坐标值和切向量#xff09;。这个方法的优…1、通过参数进行分割
分别获得曲线的 FirstParameter 和 LastParameter 然后对参数进行分割获得n个ui并对每个ui调用D0获得这个点的坐标值或D1获得这个点的坐标值和切向量。这个方法的优点是简单易行好操作缺点均分参数轴获得的曲线的分割可能不是均匀的。
#include Geom_CylindricalSurface.hxx
#include gp_Ax3.hxx
#include GeomAPI_Interpolate.hxx
#include BRepAdaptor_Curve.hxx
#include BRepBuilderAPI_MakeEdge.hxx
#include Geom2d_TrimmedCurve.hxx
#include GCE2d_MakeSegment.hxx
#include GeomAPI_PointsToBSpline.hxx
#include BRepBuilderAPI_MakeFace.hxx
#include GC_MakeCircle.hxx
#include BRepBuilderAPI_MakeWire.hxx
#include BRepOffsetAPI_MakePipe.hxx
#include GC_MakeArcOfCircle.hxx
#include BRepAlgoAPI_Fuse.hxx
#include gp_GTrsf.hxx
#include BRepBuilderAPI_Transform.hxx
#includeViewer.h
#include BRepBuilderAPI_MakeVertex.hxx
#include BRepBuilderAPI_GTransform.hxx
int main(int argc, char* argv[])
{gp_Dir Z(0.0, 0.0, 1.0);gp_Pnt center(0, 0, 0.0);gp_Pnt xr(0.5, 0, 0.0);gp_Pnt yr(0.0, 1.0, 0.0);gp_Pnt zr(0.0, 0.0, 7.0);gp_Ax2 wb(center, Z);gp_Circ wbcircle(wb, 0.125 / 2);TopoDS_Edge wbe BRepBuilderAPI_MakeEdge(wbcircle);TopoDS_Edge xline BRepBuilderAPI_MakeEdge(center, xr);TopoDS_Edge yline BRepBuilderAPI_MakeEdge(center, yr);TopoDS_Edge zline BRepBuilderAPI_MakeEdge(center, zr);gp_Pnt p1(-5, 0, 0.0);gp_Pnt p2(5, 0, 0.0);gp_Ax2 sr(center, Z);gp_Circ bcircle(sr, 5);Handle(Geom_TrimmedCurve) bc GC_MakeArcOfCircle(bcircle, p1, p2, 0);TopoDS_Edge anEdge BRepBuilderAPI_MakeEdge(bc);Standard_Integer splitN 10;Standard_Real firstParam bc-FirstParameter();Standard_Real lastParam bc-LastParameter();Viewer vout(50, 50, 500, 500);for (Standard_Integer i 0; i splitN 1; i){Standard_Real ui i * (lastParam - firstParam) / splitN;gp_Pnt pi;gp_Vec veci;bc-D1(ui, pi, veci);TopoDS_Vertex verti BRepBuilderAPI_MakeVertex(pi);vout verti;}vout anEdge;vout xline;vout yline;vout zline;vout.StartMessageLoop();return 0;
}
2、直接对曲线分割
通过类 GCPnts_UniformAbscissa 实现对一个Geom_Curve对象的平均分割获得分割点的坐标及对应的参数将坐标和参数存入一个列表中供其他操作使用。
#include Geom_CylindricalSurface.hxx
#include gp_Ax3.hxx
#include GeomAPI_Interpolate.hxx
#include BRepAdaptor_Curve.hxx
#include BRepBuilderAPI_MakeEdge.hxx
#include Geom2d_TrimmedCurve.hxx
#include GCE2d_MakeSegment.hxx
#include GeomAPI_PointsToBSpline.hxx
#include BRepBuilderAPI_MakeFace.hxx
#include GC_MakeCircle.hxx
#include BRepBuilderAPI_MakeWire.hxx
#include BRepOffsetAPI_MakePipe.hxx
#include GC_MakeArcOfCircle.hxx
#include BRepAlgoAPI_Fuse.hxx
#include gp_GTrsf.hxx
#include BRepBuilderAPI_Transform.hxx
#includeViewer.h
#include BRepBuilderAPI_MakeVertex.hxx
#include GCPnts_UniformAbscissa.hxx
int main(int argc, char* argv[])
{gp_Dir Z(0.0, 0.0, 1.0);gp_Pnt center(0, 0, 0.0);gp_Pnt xr(0.5, 0, 0.0);gp_Pnt yr(0.0, 1.0, 0.0);gp_Pnt zr(0.0, 0.0, 7.0);gp_Ax2 wb(center, Z);gp_Circ wbcircle(wb, 0.125 / 2);TopoDS_Edge wbe BRepBuilderAPI_MakeEdge(wbcircle);TopoDS_Edge xline BRepBuilderAPI_MakeEdge(center, xr);TopoDS_Edge yline BRepBuilderAPI_MakeEdge(center, yr);TopoDS_Edge zline BRepBuilderAPI_MakeEdge(center, zr);gp_Pnt p1(-5, 0, 0.0);gp_Pnt p2(5, 0, 0.0);gp_Ax2 sr(center, Z);gp_Circ bcircle(sr, 5);Handle(Geom_TrimmedCurve) bc GC_MakeArcOfCircle(bcircle, p1, p2, 0);TopoDS_Edge anEdge BRepBuilderAPI_MakeEdge(bc);Standard_Integer splitN 10;GeomAdaptor_Curve GAC(bc);GCPnts_UniformAbscissa UA(GAC, splitN 1);gp_Pnt* pnts new gp_Pnt[splitN 1];Standard_Real* params new Standard_Real[splitN 1];Viewer vout(50, 50, 500, 500);if (UA.IsDone()){Standard_Real n UA.NbPoints();Standard_Integer index 0;for (; index n 1; index){Standard_Real parami UA.Parameter(index 1);params[index] parami;gp_Pnt tpnt;bc-D0(parami, tpnt);pnts[index] tpnt;TopoDS_Vertex verti BRepBuilderAPI_MakeVertex(tpnt);vout verti;}}vout anEdge;vout xline;vout yline;vout zline;vout.StartMessageLoop();return 0;
}