青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eryar

PipeCAD - Plant Piping Design Software.
RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
posts - 603, comments - 590, trackbacks - 0, articles - 0

Plot B-Spline Curve by MATLAB

Posted on 2011-12-30 18:02 eryar 閱讀(5330) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE
1. Plot B-Spline Basis Function

When draw Bezier curve, you only need to know Bernstein basis function, life was easier.Bernstein basis function solely as a function of the number of control points. Now you have a lot more flexibility, but you also have a lot more to worry about. In addition to control points, the B-Spline basis function must account for the degree of the cruve, as well as the ranges defined by the knot vector. The resulting basis functions are defined not by Bernstein polynomials, but by the Cox-de Boor recursion formulas. [Ref. : Focus on Cruves and Surfaces]

當畫Bezier曲線時,事情要簡單些,因Bezier曲線由Bernstein基函數確定,而Bernstein基函數只與控制頂點數有關。當畫B-Spline曲線時,有了更多的靈活性,即有了局部修改能力,但是你需要考慮的事就更多了。除了控制頂點外,B-Spline曲線的基函數必須解釋曲線的次數和節點矢量定義的范圍。即B-Spline曲線的基函數由Cox-de Boor遞歸方法定義:

B-Spline Basis Function

Imagine I want to draw a fourh-order(k=4) cubic curve with 4 control points and I choose a knot vector of [x]=[0,0,0,0,1,1,1,1]. The knot vector forces each control point to affect the entire curve.

假如我想畫一個四個控制頂點形成的四階三次曲線,選擇節點矢量為[x]=[0,0,0,0,1,1,1,1]。節點矢量迫使每個控制頂點的改變影響到整個曲線。

使用B樣條基函數的遞歸公式畫出各階基函數的圖形。MATLAB代碼如下:

   1:  %-------------------------------------------------------------------------
   2:  % Imagine I want to draw a fourth-order cubic curve with 4 control points
   3:  % and I choose a knot vector of [x]=[0,0,0,0,1,1,1,1].
   4:  %-------------------------------------------------------------------------
   5:   
   6:  t=0:0.01:1;    % knot vector range
   7:   
   8:  %-------------------------------------------------------------------------
   9:  % 1. First-order basis functions for k=4 [x]=[0,0,0,0,1,1,1,1]
  10:  % N11=0;
  11:  % N21=0;
  12:  % N31=0;
  13:  % N41=1;
  14:  %-------------------------------------------------------------------------
  15:   
  16:  N11=0;
  17:  N21=0;
  18:  N31=0;
  19:  N41=1;
  20:   
  21:  subplot(2,2,1);
  22:  plot(t,N11,t,N21,t,N31,t,N41);
  23:   
  24:  %-------------------------------------------------------------------------
  25:  % 2. Second-order basis functions for k=4 [x]=[0,0,0,0,1,1,1,1]
  26:  % N12=0;
  27:  % N22=0;
  28:  % N32=1-t;
  29:  % N42=t;
  30:  %-------------------------------------------------------------------------
  31:   
  32:  N12=0;  
  33:  N22=0;  
  34:  N32=1-t;
  35:  N42=t; 
  36:   
  37:  subplot(2,2,2);
  38:  plot(t,N12,t,N22,t,N32,t,N42)
  39:   
  40:  %-------------------------------------------------------------------------
  41:  % 3. Third-order basis functions for k=4 [x]=[0,0,0,0,1,1,1,1]
  42:  % N13=0;
  43:  % N23=(1-t)^2;
  44:  % N33=2t(1-t);
  45:  % N43=t^2;
  46:  %-------------------------------------------------------------------------
  47:   
  48:  N13=0;
  49:  N23=(1-t).^2;
  50:  N33=2*t.*(1-t);
  51:  N43=t.^2;
  52:   
  53:  subplot(2,2,3);
  54:  plot(t,N13,t,N23,t,N33,t,N43);
  55:   
  56:  %-------------------------------------------------------------------------
  57:  % 4. Fourth-order basis functions for k=4 [x]=[0,0,0,0,1,1,1,1]
  58:  % N14=(1-t)^3;
  59:  % N24=3t(1-t)^2;
  60:  % N34=3(1-t)t^2;
  61:  % N44=t^3;
  62:  %-------------------------------------------------------------------------
  63:   
  64:  N14=(1-t).^3;
  65:  N24=3*t.*(1-t).^2;
  66:  N34=3*(1-t).*t.^2;
  67:  N44=t.^3;
  68:   
  69:  subplot(2,2,4);
  70:  plot(t,N14,t,N24,t,N34,t,N44);
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

用MATLAB畫出各階基函數如下圖所示:

B-Spline basis functions graphics by MATLAB

三次均勻B樣條基函數Ni,3(u)的圖形由MATLAB生成如下所示:

Cubic B-Spline Basis Function by MATLAB

生成此圖形的MATLAB代碼如下:

   1:  %------------------------------------------------------------------------------
   2:  % 均勻B樣條基最簡單的形式是取節點為整數:Ti=i(i=0,1,2,...,n), 
   3:  % 令:t-ti=u,則參數u的取值范圍為[0,1]。則得Ni,3(u)如下式:
   4:  %            | u^3 / 6;                      u=[0,1]
   5:  %            | (-3u^3 + 3u^2 + 3u + 1) / 6;  u=[0,1]
   6:  % Ni,3(u)  = | (3u^3 - 6u^2 + 4) / 6;        u=[0,1]
   7:  %            | (-u^3 + 3u^2 - 3u + 1) / 6;   u=[0,1]
   8:  %            
   9:  %------------------------------------------------------------------------------
  10:   
  11:  u=0:0.01:1;
  12:  N03=u.^3/6;
  13:  N13=(-3*u.^3 + 3*u.^2 + 3*u + 1)/6;
  14:  N23=(3*u.^3 - 6*u.^2 + 4) / 6;
  15:  N33=(-u.^3 + 3*u.^2 - 3*u + 1) / 6;
  16:   
  17:  line(u, N03, 'Color', 'r');
  18:  line(u+1, N13, 'Color', 'g');
  19:  line(u+2, N23, 'Color', 'b');
  20:  line(u+3, N33, 'Color', 'y');
.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

 

2. Plot B-Spline Curve

已知平面上五個頂點矢量V0(0,1), V1(1,1), V2(1,0), V3(1,-1), V4(2,-1), 要求構造一條三次均勻B樣條曲線,并做出圖形.

使用MATLAB代碼如下:

   1:  %-----------------------------------------------------------
   2:  % Plot Cubic Uniform B-Spline Curve.
   3:  % Just for Testing, Welcome your advice: eryar@163.com
   4:  %
   5:  % Date : 2011-12-28 21:31
   6:  % 
   7:  %-----------------------------------------------------------
   8:   
   9:  % Knot Vector range.
  10:  u=0:0.01:1;
  11:   
  12:  % Control Points.
  13:  % You can change the control point's number and value
  14:  % to test the effect.
  15:  V0=[0 1];
  16:  V1=[1 1];
  17:  V2=[1 0];
  18:  V3=[1 -1];
  19:  V4=[2 -1];
  20:   
  21:  % Basis Functions.
  22:  N03=(-u.^3 + 3*u.^2 - 3*u + 1) / 6;
  23:  N13=(3*u.^3 - 6*u.^2 + 4) / 6;
  24:  N23=(-3*u.^3 + 3*u.^2 + 3*u + 1)/6;
  25:  N33=u.^3/6;
  26:   
  27:  % Calculate every segment.
  28:  r0x=N03 * V0(1) + N13 * V1(1) + N23 * V2(1) + N33 * V3(1);
  29:  r0y=N03 * V0(2) + N13 * V1(2) + N23 * V2(2) + N33 * V3(2);
  30:  r1x=N03 * V1(1) + N13 * V2(1) + N23 * V3(1) + N33 * V4(1);
  31:  r1y=N03 * V1(2) + N13 * V2(2) + N23 * V3(2) + N33 * V4(2);
  32:   
  33:  % Plot the Control Polygon.
  34:  plot(V0(1), V0(2), 'Marker', 'o'); hold on;
  35:  plot(V0(1), V0(2), 'Marker', 'o'); hold on;
  36:  plot(V1(1), V1(2), 'Marker', 'o'); hold on;
  37:  plot(V2(1), V2(2), 'Marker', 'o'); hold on;
  38:  plot(V3(1), V3(2), 'Marker', 'o'); hold on;
  39:   
  40:  % Plot the Uniform B-Spline Curve.
  41:  line('XData', r0x, 'YData', r0y, 'Color', 'r');
  42:  line('XData', r1x, 'YData', r1y, 'Color', 'g');

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } 生成圖形如下所示:

Cubic Uniform B-Spline by MATLAB

如圖所示,B樣條曲線由兩段組成,控制頂點由“0”標出。

試求由特征頂點V0=[-1,1], V1=[1,1], V2=[1,-1], V3=[-1,-1]決定的閉合的三次均勻B樣條曲線,并做出圖形。適當修改上述MATLAB代碼,即可得到所求B樣條曲線,如下圖所示:

Closed Control Points B-Spline Curve

 

3.結論:

對于均勻B樣條基函數,由于節點矢量均勻遞增,所以在每兩個節點組成的區間的距離相等。利用基函數的的遞推公式可以計算出每個區間上的函數表達式。對于上例中的均勻B樣條基每個區間取值范圍都是從0到1,通過偏移X軸,可畫出B樣條的基函數。

通過MATLAB畫出B樣條曲線的基函數,操作簡單,便于對B樣條基函數的理解。在理解B樣條基函數后,會對B樣條曲線的理解更加深刻。繼續加油!!

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美成人综合| 亚洲欧美中文字幕| 国产精品av免费在线观看| 欧美日韩不卡合集视频| 欧美午夜片在线观看| 国产欧美韩国高清| 在线观看日韩国产| 亚洲伦伦在线| 欧美亚洲一级| 蜜桃av综合| 日韩午夜免费| 久久xxxx| 欧美午夜视频一区二区| 激情久久久久| 亚洲欧美另类综合偷拍| 久久一区二区三区av| 亚洲韩国日本中文字幕| 亚洲毛片一区| 久久人人爽爽爽人久久久| 欧美日韩情趣电影| 伊人成年综合电影网| 亚洲欧美日韩国产| 91久久国产综合久久| 欧美一级理论片| 欧美日韩综合在线| 1024成人网色www| 午夜精品久久久久久久久久久久 | 欧美亚洲一级| 亚洲福利久久| 久久精品日产第一区二区| 欧美日本国产| 在线观看日韩精品| 久久精品中文字幕免费mv| 亚洲精品综合久久中文字幕| 久久亚洲色图| 国产日韩综合一区二区性色av| 亚洲狼人精品一区二区三区| 久久久精品国产一区二区三区| 亚洲美女毛片| 美女精品在线| 在线日韩电影| 久久亚洲一区二区| 亚洲一本视频| 伊人成年综合电影网| 亚洲免费视频网站| 亚洲精品国产精品国自产观看浪潮 | 久久久国产精品亚洲一区| 国产精品theporn| 在线亚洲成人| 日韩视频永久免费观看| 欧美高清视频一区二区三区在线观看| 激情五月综合色婷婷一区二区| 久久成人免费网| 午夜视频久久久| 国产日韩精品视频一区| 欧美亚洲免费高清在线观看| 亚洲视频一区| 国产乱肥老妇国产一区二| 香蕉av777xxx色综合一区| 亚洲图片欧美午夜| 国产精品久久久久久久久久免费 | 欧美一区不卡| 性欧美在线看片a免费观看| 国产美女一区二区| 久久精品视频在线看| 欧美在线免费| 亚洲国产精品久久| 亚洲精品久久久蜜桃| 欧美日韩蜜桃| 欧美一区二区三区视频| 欧美一区二区三区在| 樱桃成人精品视频在线播放| 欧美电影免费观看网站| 欧美激情一区三区| 亚洲一级黄色片| 羞羞答答国产精品www一本| 精品动漫3d一区二区三区| 欧美韩日一区二区| 欧美日韩亚洲一区二区三区四区| 亚洲免费在线观看视频| 久久国产精品毛片| 亚洲免费久久| 亚洲综合成人婷婷小说| 黄色av日韩| 99精品热视频| 激情综合网址| 99视频有精品| 在线欧美亚洲| 亚洲一区二区av电影| 亚洲福利视频网| 亚洲欧美国产77777| 亚洲国产日韩欧美在线图片 | 狠狠狠色丁香婷婷综合久久五月 | 最新成人av网站| 在线亚洲国产精品网站| 亚洲第一毛片| 亚洲在线免费视频| 在线国产日韩| 亚洲色图自拍| 亚洲九九九在线观看| 欧美亚洲综合久久| 亚洲一区不卡| 奶水喷射视频一区| 久久精品一区二区三区中文字幕| 欧美日韩免费观看中文| 欧美成人综合在线| 国产午夜精品在线观看| 99视频有精品| 日韩视频中文字幕| 久久久久久久网站| 香蕉av777xxx色综合一区| 欧美激情在线| 亚洲狠狠婷婷| 亚洲国产高清一区| 久久精品视频亚洲| 久久精品国产精品亚洲| 国产精品久久久久久久app| 亚洲精选一区二区| 亚洲毛片一区| 欧美va日韩va| 欧美激情精品久久久久久变态| 国产一区二区三区久久 | 欧美一区国产在线| 午夜视频在线观看一区二区| 欧美日韩一区二区在线| 91久久久亚洲精品| 亚洲久色影视| 欧美激情第10页| 亚洲国产老妈| 亚洲精品免费在线| 欧美精品1区| 亚洲精品久久久一区二区三区| 亚洲人成在线观看| 欧美国产综合| 亚洲精品美女91| 在线天堂一区av电影| 欧美揉bbbbb揉bbbbb| 一区电影在线观看| 亚洲欧美精品中文字幕在线| 国产精品久久久久久久久搜平片 | 国产一区二区精品久久| 性做久久久久久久免费看| 久久午夜激情| 亚洲人精品午夜| 欧美日韩直播| 亚洲欧美成人一区二区在线电影| 欧美在线一二三区| 韩国自拍一区| 欧美国产日本在线| 亚洲视频专区在线| 久久亚洲电影| 亚洲精品国产日韩| 午夜性色一区二区三区免费视频| 一区二区三区欧美激情| 在线观看一区二区精品视频| 久久成人精品无人区| 久久综合伊人77777麻豆| 狠狠色丁香婷婷综合| 久久综合狠狠综合久久激情| 亚洲国产91色在线| 亚洲一区二区视频在线观看| 国产精品乱子乱xxxx| 欧美中文在线免费| 欧美国产日韩一区二区| 亚洲午夜国产成人av电影男同| 国产精品一二三四区| 久久久天天操| 亚洲免费观看| 久久精品在线免费观看| 亚洲日本成人| 国产精品一区二区黑丝| 久久影音先锋| 亚洲一二三区视频在线观看| 久久久www成人免费无遮挡大片| 91久久中文| 国产日韩欧美精品在线| 欧美激情精品久久久久久免费印度| 中文日韩在线| 欧美激情欧美狂野欧美精品| 亚洲欧美在线高清| 亚洲人成在线播放网站岛国| 国产乱码精品1区2区3区| 欧美二区在线观看| 欧美在线短视频| 一本大道av伊人久久综合| 女人天堂亚洲aⅴ在线观看| 99re成人精品视频| 在线观看成人av电影| 国产精品美女久久久久av超清| 麻豆91精品| 久久se精品一区精品二区| 亚洲午夜在线观看| 亚洲精品美女免费| 欧美激情片在线观看| 免费成人毛片| 久久青青草原一区二区| 欧美亚洲自偷自偷| 亚洲欧美日韩精品久久| 亚洲无毛电影| 亚洲免费av电影|