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

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 閱讀(5343) 評論(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>
            国产精品视频内| 亚洲欧洲一二三| 亚洲一区免费观看| 欧美午夜精品久久久| 亚洲人成在线观看网站高清| 亚洲国产婷婷| 欧美日韩中文字幕日韩欧美| 亚洲欧美在线高清| 午夜一区二区三视频在线观看| 国产日韩精品一区观看| 久久久久久久久久久久久9999| 欧美专区中文字幕| 久久亚洲精品中文字幕冲田杏梨 | 欧美激情在线| 欧美精品一区二区三区四区| 亚洲视频免费在线观看| 亚洲一区二区三区国产| 一区二区三区在线视频免费观看 | 亚洲免费观看高清完整版在线观看熊 | 亚洲精品国产精品乱码不99| 欧美日韩成人| 欧美伊人久久久久久久久影院 | 久久欧美中文字幕| 艳女tv在线观看国产一区| 亚洲一区二区三区国产| 影音先锋中文字幕一区| 日韩一区二区高清| 国语精品中文字幕| 亚洲三级电影在线观看| 国产女人精品视频| 欧美韩日一区二区三区| 国产精品色午夜在线观看| 麻豆成人在线| 国产精品久久777777毛茸茸| 麻豆91精品91久久久的内涵| 欧美日韩国产在线观看| 久久久久中文| 国产精品成人va在线观看| 美女精品在线| 国产裸体写真av一区二区| 亚洲激情视频在线播放| 韩国成人精品a∨在线观看| 亚洲三级影院| 亚洲国产黄色片| 午夜在线成人av| 一区二区三区|亚洲午夜| 久久精品国产在热久久| 亚洲欧美日韩国产| 欧美精品成人91久久久久久久| 在线成人欧美| 午夜一区二区三区不卡视频| 一本一本久久| 欧美黑人国产人伦爽爽爽| 久久夜色精品亚洲噜噜国产mv| 国产精品v片在线观看不卡| 欧美激情按摩在线| 一色屋精品视频免费看| 午夜精品av| 亚洲欧美乱综合| 欧美午夜精品久久久久免费视| 亚洲国产日韩欧美在线图片| 影音先锋亚洲电影| 久久久精品一区| 久久婷婷国产综合尤物精品| 国产欧美一区二区精品仙草咪| 亚洲丝袜av一区| 亚洲欧美成人一区二区在线电影 | 久久久www成人免费精品| 欧美永久精品| 欧美国产国产综合| 麻豆成人在线观看| 亚洲国产精彩中文乱码av在线播放| 亚洲在线免费观看| 一区二区欧美在线观看| 蜜臀久久99精品久久久久久9| 久久免费视频一区| 国产一区二区三区久久久久久久久| 一区二区三区www| 正在播放欧美视频| 久久久久国色av免费看影院 | 激情五月***国产精品| 亚洲欧美日韩国产精品| 亚洲欧美日韩综合国产aⅴ| 欧美精品综合| 99在线|亚洲一区二区| 亚洲男女自偷自拍图片另类| 国产精品二区三区四区| 日韩亚洲欧美在线观看| 99在线精品免费视频九九视| 欧美精品在线一区二区| 99国产精品久久久久久久| 一区二区欧美激情| 欧美色123| 性色一区二区三区| 欧美一级久久久久久久大片| 国产欧美在线视频| 欧美在线观看网站| 久久久久久69| 亚洲第一在线综合在线| 欧美不卡视频一区发布| 亚洲精品中文字幕在线| 午夜精品国产精品大乳美女| 国产免费观看久久黄| 欧美综合激情网| 欧美va天堂在线| 亚洲区一区二区三区| 欧美精品在线网站| 亚洲欧美一区二区三区在线| 久久久免费观看视频| 亚洲精品一二三| 欧美性事在线| 久久久久在线观看| 亚洲国产成人精品女人久久久 | 亚洲精品一二| 国产精品一区在线播放| 久久精品在线视频| 亚洲美女一区| 久久婷婷丁香| 一区二区三区www| 在线观看日产精品| 国产精品激情偷乱一区二区∴| 亚洲男人天堂2024| 欧美高清在线视频观看不卡| 亚洲视频免费在线观看| 国产区在线观看成人精品| 美女视频黄免费的久久| 中文av一区特黄| 免费日韩av| 香蕉成人久久| 亚洲免费高清| 国产专区一区| 国产欧美日韩另类一区| 欧美电影美腿模特1979在线看| 亚洲一区二区视频在线观看| 亚洲国产成人porn| 久久免费精品视频| 亚洲男人的天堂在线| 在线欧美亚洲| 一区在线观看| 国产三级精品在线不卡| 欧美精品在线看| 久久免费国产精品1| 亚洲欧美日韩在线观看a三区| 亚洲国产精品小视频| 久久人人超碰| 亚洲欧美日韩区| 亚洲欧美日韩视频一区| 日韩一级裸体免费视频| 亚洲国产高清aⅴ视频| 国产在线麻豆精品观看| 国产精品欧美久久| 欧美日韩精品三区| 久久嫩草精品久久久久| 免费观看成人| 久久露脸国产精品| 久久www成人_看片免费不卡| 亚洲自拍三区| 亚洲一区二区视频在线| 亚洲电影第1页| 亚洲精品日韩激情在线电影| 亚洲电影免费观看高清完整版在线| 久久夜色精品| 美女视频黄a大片欧美| 美女啪啪无遮挡免费久久网站| 久久成人免费视频| 久久久99免费视频| 欧美影院一区| 欧美高清在线观看| 欧美激情偷拍| 91久久夜色精品国产九色| 最新国产の精品合集bt伙计| 亚洲黄一区二区| 亚洲美女网站| 久久se精品一区二区| 久久久伊人欧美| 欧美激情视频一区二区三区不卡| 欧美搞黄网站| 国产精品99一区二区| 国产精品毛片在线看| 激情国产一区二区| 最新中文字幕亚洲| 中文日韩在线| 久久精品国产久精国产思思| 久久综合网络一区二区| 欧美成人xxx| 亚洲国产天堂久久综合| 亚洲欧美日韩精品| 久久久无码精品亚洲日韩按摩| 美女日韩在线中文字幕| 欧美三日本三级少妇三99| 国产欧美日韩视频在线观看 | 亚洲第一区在线| 一本久久a久久免费精品不卡| 亚洲一区久久| 另类天堂视频在线观看| 国产精品一区一区| 亚洲人成毛片在线播放| 亚洲一区国产视频| 开元免费观看欧美电视剧网站| 亚洲人成免费|