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

eryar

PipeCAD - Plant Piping Design Software.
PlantAssistant - Translate AVEVA RVM/SP3D VUE to glTF, STEP, etc.
posts - 606, comments - 590, trackbacks - 0, articles - 0

Plot B-Spline Curve by MATLAB

Posted on 2011-12-30 18:02 eryar 閱讀(5345) 評論(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>
            国内精品亚洲| 亚洲精品中文字幕有码专区| 午夜天堂精品久久久久| 在线亚洲精品| 国产视频在线一区二区| 久久国产精品久久久久久| 午夜欧美精品| 激情久久五月天| 亚洲福利久久| 欧美麻豆久久久久久中文| 亚洲一区二区3| 亚洲欧美中文另类| 激情欧美一区二区三区在线观看| 欧美777四色影视在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲精品系列| 亚洲欧美久久久久一区二区三区| 精品福利av| 一本大道久久a久久综合婷婷| 国产欧美日韩专区发布| 欧美激情中文字幕乱码免费| 国产精品福利网| 久久婷婷久久一区二区三区| 欧美激情在线观看| 西西裸体人体做爰大胆久久久| 久久久久久久999| 最新亚洲视频| 久久国产视频网站| 国产伦精品一区二区三区高清| 99在线精品视频| 亚洲在线国产日韩欧美| 久久国产精品一区二区| 久久久精品国产免费观看同学| 国产亚洲欧美一区二区三区| 欧美一区观看| 蜜桃精品久久久久久久免费影院| 激情欧美日韩| 欧美激情精品久久久久久变态| 日韩香蕉视频| 欧美亚洲一区二区三区| 韩日在线一区| 美女久久网站| 夜夜嗨网站十八久久| 午夜精品999| 韩国一区电影| 欧美精品亚洲精品| 亚洲神马久久| 麻豆成人av| 日韩午夜av电影| 国产精品美女久久久免费| 欧美一区二区三区成人| 欧美二区不卡| 亚洲欧美成人在线| 狠狠综合久久| 欧美精品久久一区| 亚洲欧美一区二区三区在线| 欧美1区3d| 亚洲欧美另类在线观看| 激情五月综合色婷婷一区二区| 欧美极品在线播放| 午夜精品久久久久久久| 欧美激情国产日韩精品一区18| 亚洲一区二区免费看| 尤妮丝一区二区裸体视频| 欧美日韩欧美一区二区| 久久久精品2019中文字幕神马| 亚洲免费成人av| 久久亚洲图片| 亚洲欧美bt| 亚洲日本aⅴ片在线观看香蕉| 国产精品女人久久久久久| 欧美jizzhd精品欧美巨大免费| 亚洲一区亚洲| 亚洲精品视频免费观看| 久久午夜av| 欧美一区二区播放| 妖精视频成人观看www| 一区二区三区在线看| 国产精品高潮呻吟| 欧美福利视频| 久久久久网站| 午夜视频精品| 亚洲视屏在线播放| 亚洲精品久久久久久久久久久久| 久久一区亚洲| 欧美一区二区三区电影在线观看| 一区二区三区日韩精品视频| 在线播放日韩| 狠狠狠色丁香婷婷综合久久五月| 国产精品视频成人| 欧美日韩在线三区| 欧美精选午夜久久久乱码6080| 麻豆成人在线播放| 久久精品国产99国产精品澳门| 香港成人在线视频| 亚洲一区二区三区四区中文| 一区二区电影免费在线观看| 亚洲精品1区2区| 亚洲国产成人精品女人久久久| 美女精品在线观看| 美女网站久久| 免费观看在线综合| 美女91精品| 欧美成人按摩| 欧美激情中文字幕一区二区| 欧美成人在线网站| 欧美成人精品福利| 欧美顶级大胆免费视频| 欧美激情精品久久久久久久变态| 女人香蕉久久**毛片精品| 美日韩精品视频| 欧美丰满高潮xxxx喷水动漫| 欧美va天堂在线| 欧美激情网站在线观看| 亚洲电影网站| 亚洲毛片播放| 99精品欧美一区| 中文亚洲免费| 欧美亚洲一区三区| 久久精品国产综合| 米奇777超碰欧美日韩亚洲| 欧美成人精品激情在线观看 | 久久久亚洲人| 美女主播一区| 最新中文字幕一区二区三区| 99精品国产福利在线观看免费| 一区二区三区产品免费精品久久75| 亚洲视频导航| 欧美中文在线观看| 免费的成人av| 欧美日韩美女一区二区| 国产精品午夜在线| 国内精品久久久久久影视8| 亚洲娇小video精品| 在线一区视频| 久久久久九九九九| 亚洲国产午夜| 亚洲综合色噜噜狠狠| 久久婷婷久久| 欧美午夜一区| 精品69视频一区二区三区| 亚洲精品视频一区| 性色一区二区三区| 欧美国产三区| 亚洲欧美日韩精品久久| 奶水喷射视频一区| 国产精品另类一区| 亚洲国产高清一区| 午夜精品一区二区三区四区| 免费精品99久久国产综合精品| 日韩午夜免费视频| 久久久综合精品| 国产精品成人一区二区| 亚洲国产精选| 欧美自拍偷拍午夜视频| 亚洲精品欧美日韩| 久久久久.com| 国产精品一级久久久| 亚洲美女在线国产| 久久久水蜜桃av免费网站| 99re热这里只有精品视频| 久久人体大胆视频| 国产区精品在线观看| 亚洲精品资源| 美乳少妇欧美精品| 午夜精彩国产免费不卡不顿大片| 欧美激情亚洲国产| 揄拍成人国产精品视频| 欧美一区二区三区免费观看| 亚洲精品护士| 裸体一区二区三区| 激情成人在线视频| 久久精品国产精品亚洲| 一区二区三区日韩精品| 欧美精品日韩三级| 亚洲国产乱码最新视频| 久久中文久久字幕| 欧美一区二区三区免费看| 国产精品久久久久aaaa九色| 9久草视频在线视频精品| 欧美激情亚洲另类| 噜噜噜在线观看免费视频日韩 | 狠狠色狠狠色综合日日tαg| 亚洲中午字幕| 99国产精品国产精品毛片| 欧美精品 日韩| 亚洲精品影视在线观看| 欧美高清一区二区| 麻豆免费精品视频| 亚洲国产精品一区| 欧美高清在线一区| 蘑菇福利视频一区播放| 亚洲第一免费播放区| 农夫在线精品视频免费观看| 久久男女视频| 亚洲国产日日夜夜| 亚洲国产精品一区二区三区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 久久久最新网址| 亚洲高清久久久|