① 如何用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表面里生成一條有稜角的邊是很困難的。就是因為這一特點,我們可以用它做出各種復雜的曲面造型和表現特殊的效果,如人的皮膚,面貌或流線型的跑車等