本文整理汇总了C++中ON_NurbsSurface::Create方法的典型用法代码示例。如果您正苦于以下问题:C++ ON_NurbsSurface::Create方法的具体用法?C++ ON_NurbsSurface::Create怎么用?C++ ON_NurbsSurface::Create使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ON_NurbsSurface
的用法示例。
在下文中一共展示了ON_NurbsSurface::Create方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetNurbForm
int ON_Cylinder::GetNurbForm( ON_NurbsSurface& s ) const
{
int rc = 0;
if ( IsValid() && height[0] != height[1] ) {
ON_NurbsCurve n0, n1;
int i;
ON_Circle c0 = CircleAt(height[0]);
ON_Circle c1 = CircleAt(height[1]);
if ( height[0] <= height[1] ) {
c0.GetNurbForm(n0);
c1.GetNurbForm(n1);
}
else {
c0.GetNurbForm(n1);
c1.GetNurbForm(n0);
}
if ( n0.m_dim != n1.m_dim
|| n0.m_is_rat != n1.m_is_rat
|| n0.m_order != n1.m_order
|| n0.m_cv_count != n1.m_cv_count )
return 0;
s.Create(3,TRUE, n0.m_order, 2, n0.m_cv_count, 2 );
if ( height[0] <= height[1] ) {
s.m_knot[1][0] = height[0];
s.m_knot[1][1] = height[1];
}
else {
s.m_knot[1][0] = height[1];
s.m_knot[1][1] = height[0];
}
for ( i = 0; i < n0.KnotCount(); i++ )
s.m_knot[0][i] = n0.m_knot[i];
for ( i = 0; i < n0.m_cv_count; i++ ) {
s.SetCV(i,0,ON::homogeneous_rational,n0.CV(i));
s.SetCV(i,1,ON::homogeneous_rational,n1.CV(i));
}
rc = 2;
}
return rc;
}
示例2: GetNurbForm
int ON_Cone::GetNurbForm( ON_NurbsSurface& s ) const
{
int rc = 0;
if ( IsValid() ) {
ON_Circle c = CircleAt(height);
ON_NurbsCurve n;
c.GetNurbForm(n);
ON_3dPoint apex = ApexPoint();
ON_4dPoint cv;
int i, j0, j1;
s.Create(3,TRUE,3,2,9,2);
for ( i = 0; i < 10; i++ )
s.m_knot[0][i] = n.m_knot[i];
if ( height >= 0.0 ) {
s.m_knot[1][0] = 0.0;
s.m_knot[1][1] = height;
j0 = 0;
j1 = 1;
}
else {
s.m_knot[1][0] = height;
s.m_knot[1][1] = 0.0;
j0 = 1;
j1 = 0;
}
for ( i = 0; i < 9; i++ ) {
cv = n.CV(i);
s.SetCV(i, j1, ON::homogeneous_rational, &cv.x );
cv.x = apex.x*cv.w;
cv.y = apex.y*cv.w;
cv.z = apex.z*cv.w;
s.SetCV(i, j0, cv);
}
rc = 2;
}
return rc;
}
示例3: GetNurbForm
int ON_Sphere::GetNurbForm( ON_NurbsSurface& s ) const
{
int rc = 0;
if ( IsValid() ) {
s.Create(3,true,3,3,9,5);
s.m_knot[0][0] = s.m_knot[0][1] = 0.0;
s.m_knot[0][2] = s.m_knot[0][3] = 0.5*ON_PI;
s.m_knot[0][4] = s.m_knot[0][5] = ON_PI;
s.m_knot[0][6] = s.m_knot[0][7] = 1.5*ON_PI;
s.m_knot[0][8] = s.m_knot[0][9] = 2.0*ON_PI;
s.m_knot[1][0] = s.m_knot[1][1] = -0.5*ON_PI;
s.m_knot[1][2] = s.m_knot[1][3] = 0.0;
s.m_knot[1][4] = s.m_knot[1][5] = 0.5*ON_PI;
ON_4dPoint* CV = (ON_4dPoint*)s.m_cv;
const ON_3dVector x = radius*plane.xaxis;
const ON_3dVector y = radius*plane.yaxis;
const ON_3dVector z = radius*plane.zaxis;
ON_3dPoint p[9] = {plane.origin+x,
plane.origin+x+y,
plane.origin+y,
plane.origin-x+y,
plane.origin-x,
plane.origin-x-y,
plane.origin-y,
plane.origin+x-y,
plane.origin+x};
const double w = 1.0/sqrt(2.0);
double w13;
int i;
ON_4dPoint southpole = plane.origin - z;
ON_4dPoint northpole = plane.origin + z;
for ( i = 0; i < 8; i++ ) {
CV[5*i ] = southpole;
CV[5*i+1] = p[i] - z;
CV[5*i+2] = p[i];
CV[5*i+3] = p[i] + z;
CV[5*i+4] = northpole;
if ( i%2) {
CV[5*i ].x *= w;
CV[5*i ].y *= w;
CV[5*i ].z *= w;
CV[5*i ].w = w;
CV[5*i+2].x *= w;
CV[5*i+2].y *= w;
CV[5*i+2].z *= w;
CV[5*i+2].w = w;
CV[5*i+4].x *= w;
CV[5*i+4].y *= w;
CV[5*i+4].z *= w;
CV[5*i+4].w = w;
w13 = 0.5;
}
else {
w13 = w;
}
CV[5*i+1].x *= w13;
CV[5*i+1].y *= w13;
CV[5*i+1].z *= w13;
CV[5*i+1].w = w13;
CV[5*i+3].x *= w13;
CV[5*i+3].y *= w13;
CV[5*i+3].z *= w13;
CV[5*i+3].w = w13;
}
CV[40] = CV[0];
CV[41] = CV[1];
CV[42] = CV[2];
CV[43] = CV[3];
CV[44] = CV[4];
rc = 2;
}
return rc;
}