那我应该怎么设计函数gluNurbsSurface()中的参数呢?

ieihauko 2010-12-02 10:20:47
P区参数如下:
128,1,6,1,3,0,0,0,0,0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.0,0.5,0.5, 565P 782
0.5,1.0,1.0,1.0,1.0,1.0,1.0,0.333333333333333,0.333333333333333, 565P 783
0.333333333333333,0.333333333333333,1.0,1.0,0.333333333333333, 565P 784
0.333333333333333,0.333333333333333,0.333333333333333,1.0,1.0, 565P 785
-10.0858413951808,-3.71691367767959,-0.3,-10.0858413951808, 565P 786
-3.71691367767959,3.3,-10.0858413951808,-2.71691367767959,-0.3, 565P 787
-10.0858413951808,-2.71691367767959,3.3,-11.0858413951808, 565P 788
-2.71691367767959,-0.3,-11.0858413951808,-2.71691367767959,3.3, 565P 789
-11.0858413951808,-3.71691367767959,-0.3,-11.0858413951808, 565P 790
-3.71691367767959,3.3,-11.0858413951808,-4.71691367767959,-0.3, 565P 791
-11.0858413951808,-4.71691367767959,3.3,-10.0858413951808, 565P 792
-4.71691367767959,-0.3,-10.0858413951808,-4.71691367767959,3.3, 565P 793
-10.0858413951808,-3.71691367767959,-0.3,-10.0858413951808, 565P 794
-3.71691367767959,3.3,0.0,1.0,0.0,1.0,0,0; 565P 795


我设计的控制点坐标数组如下:

GLfloat CtrlPoints[3][8][4] = {
{{-10.0858413951808,-3.71691367767959,-0.3,1.0},
{-10.0858413951808,-3.71691367767959,3.3,1.0},
{-10.0858413951808,-2.71691367767959,-0.3,0.333333333333333},
{-10.0858413951808,-2.71691367767959,3.3,0.333333333333333},
{0.333333333333333,-2.71691367767959,-0.3,0.333333333333333},
{-11.0858413951808,-2.71691367767959,3.3,0.333333333333333 },
{-11.0858413951808,-3.71691367767959,-0.3,1.0},
{-11.0858413951808, -3.71691367767959,3.3,1.0}},
{{-11.0858413951808,-4.71691367767959,-0.3,0.333333333333333},
{-11.0858413951808,-4.71691367767959,3.3,0.333333333333333},
{-10.0858413951808,-4.71691367767959,-0.3,0.333333333333333},
{-10.0858413951808,-4.71691367767959,3.3,0.333333333333333},
{-10.0858413951808,-3.71691367767959,-0.3,1.0},
{-10.0858413951808,-3.71691367767959,3.3,1.0}},
};

阶数:1,3;节点序列分别为:GLfloat sknots[4] = {0.0,0.0,1.0,1.0};//节点序列
GLfloat tknots[11]={0.0,0.0,0.0,0.0,0.5,0.5,0.5,1.0,1.0,1.0,1.0};
那我应该怎么设计gluNurbsSurface(。。。。)中的参数呢?
...全文
168 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
处处闻啼鸟 2012-01-14
  • 打赏
  • 举报
回复
你这是要读IGES文件吧,,,你这样一个一个面画到神马时候~~
处处闻啼鸟 2012-01-14
  • 打赏
  • 举报
回复
GLfloat *sknot = new GLfloat[RBSS.S.size()]; // S方向节点数组指针
GLfloat *tknot = new GLfloat[RBSS.T.size()]; // T方向节点数组指针
for (i = 0; i < RBSS.S.size(); i ++)
sknot[i] = RBSS.S[i];
for (i = 0; i < RBSS.T.size(); i ++)
tknot[i] = RBSS.T[i];

for (int j = 0; j <= RBSS.K2; j ++)
{
for (i = 0; i <= RBSS.K1; i ++)
{
ctrlpoints[j][i][0] = RBSS.X[i + (RBSS.K1 + 1) * j] * RBSS.W[i + (RBSS.K1 + 1) * j];
ctrlpoints[j][i][1] = RBSS.Y[i + (RBSS.K1 + 1) * j] * RBSS.W[i + (RBSS.K1 + 1) * j];
ctrlpoints[j][i][2] = RBSS.Z[i + (RBSS.K1 + 1) * j] * RBSS.W[i + (RBSS.K1 + 1) * j];
ctrlpoints[j][i][3] = RBSS.W[i + (RBSS.K1 + 1) * j];
}
}
GLint sknot_count = RBSS.S.size();
GLint tknot_count = RBSS.T.size();
GLint s_stride = 4*(RBSS.K2 + 1);
GLint t_stride = 4;
GLint sorder = RBSS.S.size() - RBSS.K1 - 1;
GLint torder = RBSS.T.size() - RBSS.K2 - 1;
gluNurbsSurface(theNurb1, sknot_count, sknot, tknot_count, tknot, s_stride, t_stride, &ctrlpoints[0][0][0], sorder, torder, GL_MAP2_VERTEX_4);

我i是这样的,,能画但是不正常,,求讨论,求研究~
ieihauko 2010-12-03
  • 打赏
  • 举报
回复
搞JJ呀,没人回复!
hongkun18 2010-12-02
  • 打赏
  • 举报
回复
找sdk看下吧.好像参数还挺多的.
fandh 2010-12-02
  • 打赏
  • 举报
回复
好早以前搞过,现在都没有印象了!

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧