导航:首页 > 源码编译 > nurbs曲线算法

nurbs曲线算法

发布时间:2022-09-22 08:04:45

① 如何用C语言编程画出nurbs曲线

NURBS曲线本身的表达比较复杂,如果完全用C语言写,显示用MFC会耗费很大的工作量,比较方便的方法是用OPENGL。你可搜下OPENGL的使用方法,和VC是可以完全集成的。
VC里配置好OPENGL后(可以参阅NeHe或者洞庭散人的文章,google下就知道了),可以直接google OpENGL和NURBS,OPENGL有直接的命令根据NURBS的控制点画NURBS曲线的。
很多人更关心的是如何基于NURBS做曲线拟合,网上这方面的开源程序很难找到,基本没有。需要自己去学习啊算法,比如参阅Piegl的NURBS book。这是项很大的工作。
关于NURBS有一些C的开源代码,你可以容易搜到的是如NURBS++之类,但是这些代码一般不是在windows平台下开发,想要很快的学习和编译这些代码对于初学者来说并不比直接学习算法自己编程来的快。
希望以上的内容对你有帮助。

② 如何在VC++中用OpenGL绘制NURBS曲线曲面

基本几何图元是OpenGL进行建模的最基本的方法,但其对较复杂真实物体的建模则比较困难。对于这些复杂物体的建模,需要用到OpenGL基本库和功能库函数(gl库和glu库)以对图元进行扩展并完成法向计算、曲线生成和曲面构造等内容。这种对基本图元的扩展实际也就是对点、线及多边形的扩展。OpenGL中定义的点可具有不同大小的尺寸,其扩展的函数形式为:

void glPointSize(GLfloat size);

其参数size以象素为单位设置了点的宽度,其值必须为正,缺省值1.0。对于线的扩展,可通过下面的函数来分别指定其宽度和绘制类型:

void glLineWidth(GLfloat width);
void glLineStipple(GLint factor,GLushort pattern);

glLineWidth()的参数width以象素为单位指定线宽,其值必须为正,缺省值为1.0。glLineStipple()的参数factor为对模式进行拉伸的比例因子,参数pattern指定了线的模式(例如11001100将绘制一条虚线,为1时绘制,为0时不绘制)。该函数只有在启用了函数glEnable(GL_LINE_STIPPLE)后才可以使用,当不再使用时调用glDisable(GL_LINE_STIPPLE)将其关闭。扩展多边形的绘制模式包括全填充式、轮廓点式、轮廓线式及图案填充式等几种。使用时,首先调用glPolygonMode()设置多边形的模式设置:

void glPolygonMode(GLenum face,GLenum mode);

参数face为GL_FRONT、GL_BACK或GL_FRONT_AND BACK;mode取值可以是GL_POINT、GL_LINE或GL_FILL,分别表示多边型的轮廓点、轮廓线和填充模式的绘制方式。缺省设置为填充模式。设置完成后可进行图案填充的设置:

void glPolygonStipple(const GLubyte *mask);

其参数mask必须为一指向32×32大小的位图的指针,值为1时绘制、为0不绘制。该函数的使用同样也需要进行如下启动、关闭设置:

glEnable(GL_POLYGON-STIPPLE);
glDisable(GL_POLYGON_STIPPLE);

复杂模型的建模不同与简单模型的建模,在简单模型中一个平面上各点的法向(mormal vector)是一样的,均等于此平面的法向。对于复杂模型中由众多小的平面多边形逼近而成的曲面,其每个顶点的法向量都不一样,因此曲面上每个点的法向计算结果根据采取的不同算法而有不同的结果。OpenGL只提供赋予当前顶点法向量的函数,而不提供对法向量计算的方法,法向量的计算需要由开发者来完成。下面给出一种简单的计算方法:

void getNormal(GLfloat gx[3],GLfloat gy[3],GLfloat gz[3],GLfloat *ddnv)
{
GLfloat w0,w1,w2,v0,v1,v2,nr,nx,ny,nz;
w0=gx[0]-gx[1];
w1=gy[0]-gy[1];
w2=gz[0]-gz[1];
v0=gx[2]-gx[1];
v1=gy[2]-gy[1];
v2=gz[2]-gz[1];
nx=(w1*v2-w2*v1);
ny=(w2*v0-w0*v2);
nz=(w0*v1-w1*v0);
nr=sqrt(nx*nx+ny*ny+nz*nz);
ddnv[0]=nx/nr;
ddnv[1]=ny/nr;
ddnv[2]=nz/nr;
}

其参数gx[3],gy[3]和gz[3]为逼近曲面的一个三角形的三个顶点P0,P1和P2。通过计算矢量P0-P1与矢量P2-P1的叉乘而得到其平面法向量,并在归一化后保存到由参数ddnv所指向的数组中。至于顶点法向的计算则多是取邻近平面法向量的均值。OpenGL提供的法向定义函数为:

void glNormal3{bsifd}(TYPE nx,TYPE ny,TYPE nz);
void glNormal3{bsifd}v(const TYPE *v);

③ 如何用C语言编程画出nurbs曲线

NURBS曲线本身的表达比较复杂,如果完全用C语言写,显示用MFC会耗费很大的工作量,比较方便的方法是用OPENGL。你可搜下OPENGL的使用方法,和VC是可以完全集成的。
VC里配置好OPENGL后(可以参阅NeHe或者洞庭散人的文章,google下就知道了),可以直接google
OpENGL和NURBS,OPENGL有直接的命令根据NURBS的控制点画NURBS曲线的。
很多人更关心的是如何基于NURBS做曲线拟合,网上这方面的开源程序很难找到,基本没有。需要自己去学习啊算法,比如参阅Piegl的NURBS
book。这是项很大的工作。
关于NURBS有一些C的开源代码,你可以容易搜到的是如NURBS++之类,但是这些代码一般不是在windows平台下开发,想要很快的学习和编译这些代码对于初学者来说并不比直接学习算法自己编程来的快。
希望以上的内容对你有帮助。

④ 如何用MATLAB画一段任意NURBS曲线,以及求解其基函数

画合成图有两种方法用plot一次画图例程:x=1:100;y1=sin(2*pi*100*x);y2=sin(2*pi*50*x);y3=sin(2*pi*300*x);plot(x,y1,x,y2,x,y3);用holdon分次叠加画图例程:x=1:100;y1=sin(2*pi*100*x);y2=sin(2*pi*50*x);y3=sin(2*pi*300*x);plot(x,y1);holdon; plot(x,y2); plot(x,y3);

⑤ 1、Nurbs曲线的光顺性如何判定

nurbs焊接点和线在“Edit nurbs”里的“stitch”里,“s”里的三个功能分别是合点,合线,全局缝合。合点就是选中两个面上的点,合线,就是选择两个面上的iso线,全局缝合就是全部缝合。但是这种缝合时一种假缝合,只能够达到无缝效果,两个物体并没有合为一个物体,还要进行“attch sufaces”,把两个物体合为一个物体。
合点合线时一定注意,不可以删历史,否则就等于白做了

⑥ 关于nurbs曲线插值问题

NURBS是Non-Uniform Rational B-Splines的缩写,是非统一有理B样条的意思。具体解释是:

.Non-Uniform(非统一):是指一个控制顶点的影响力的范围能够改变。当创建一个不规则曲面的时候这一点非常有用。同样,统一的曲线和曲面在透视投影下也不是无变化的,对于交互的3D建模来说这是一个严重的缺陷。

.Rational(有理):是指每个NURBS物体都可以用数学表达式来定义。

.B-Spline(B样条):是指用路线来构建一条曲线,在一个或更多的点之间以内插值替换的。

简单地说,NURBS就是专门做曲面物体的一种造型方法。NURBS造型总是由曲线和曲面来定义的,所以要在NURBS表面里生成一条有棱角的边是很困难的。就是因为这一特点,我们可以用它做出各种复杂的曲面造型和表现特殊的效果,如人的皮肤,面貌或流线型的跑车等。

最后lz也不要这样说嘛
你还不是中国人

⑦ 3D中,NURBS曲面及NURBS曲线是什么意思

具体解释是: .Non-Uniform(非统一):是指一个控制顶点的影响力的范围能够改变。当创建一个不规则曲面的时候这一点非常有用。同样,统一的曲线和曲面在透视投影下也不是无变化的,对于交互的3D建模来说这是一个严重的缺陷。 .Rational(有理):是指每个NURBS物体都可以用数学表达式来定义。 .B-Spline(B样条):是指用路线来构建一条曲线,在一个或更多的点之间以内插值替换的。

⑧ ug中如何设计nurbs曲线

nurbs线即艺术样条线,在UG软件中,绘制艺术样条线的指令有:样条曲线、拟合样条曲线,它们即可以在草图中使用,也可以在建模下应用,不过,要想设计出自己想要的nurbs曲线,还需要UG设计师具有非凡的创意才行。附样条线应用截图:

⑨ 3D中,NURBS曲面及NURBS曲线是什么意思

NURBS是Non-Uniform Rational B-Splines的缩写,是非统一有理B样条的意思。具体解释是:
.Non-Uniform(非统一):是指一个控制顶点的影响力的范围能够改变。当创建一个不规则曲面的时候这一点非常有用。同样,统一的曲线和曲面在透视投影下也不是无变化的,对于交互的3D建模来说这是一个严重的缺陷。
.Rational(有理):是指每个NURBS物体都可以用数学表达式来定义。
.B-Spline(B样条):是指用路线来构建一条曲线,在一个或更多的点之间以内插值替换的。
简单地说,NURBS就是专门做曲面物体的一种造型方法。NURBS造型总是由曲线和曲面来定义的,所以要在NURBS表面里生成一条有棱角的边是很困难的。就是因为这一特点,我们可以用它做出各种复杂的曲面造型和表现特殊的效果,如人的皮肤,面貌或流线型的跑车等

阅读全文

与nurbs曲线算法相关的资料

热点内容
单片机控制的大一点的车 浏览:638
程序员中的荣誉 浏览:270
java的封装性 浏览:387
命令提示符垃圾清理 浏览:803
javachar1 浏览:1001
lcd单片机投影仪用久了会发黄 浏览:751
王者荣耀游戏内进攻主宰命令 浏览:215
周立功单片机发展有限公司 浏览:612
iphone未成年怎么付款app 浏览:988
苹果app是英文怎么改 浏览:837
51单片机485通信 浏览:270
符咒全书pdf 浏览:565
海底捞app签到怎么弄不成了 浏览:862
安卓php服务器搭建 浏览:259
京东直营网挣用什么APP 浏览:825
杰克豆车机怎么安装app 浏览:32
app查余额怎么有两个金额 浏览:305
小程序仿今日头条源码 浏览:278
框架源码研读 浏览:447
仙侣奇缘3如何架设服务器 浏览:954