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

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樣條曲線的理解更加深刻。繼續加油?。?/p>

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产一区二区精品专区| 国产午夜久久久久| 欧美高清在线一区| 欧美激情女人20p| 欧美激情一区二区三区蜜桃视频 | 欧美日韩精品一区| 欧美日韩国产影片| 国产精品毛片va一区二区三区 | 女女同性女同一区二区三区91| 久久久久久网站| 欧美黄网免费在线观看| 夜夜嗨av一区二区三区四季av | 欧美日韩一区不卡| 国产伦精品一区二区三区视频黑人| 国产亚洲欧美色| 亚洲黄页视频免费观看| 亚洲综合色丁香婷婷六月图片| 久久久久久久成人| 亚洲美女中出| 久久九九热re6这里有精品| 欧美巨乳波霸| 国内精品视频在线观看| 夜夜嗨av色综合久久久综合网| 篠田优中文在线播放第一区| 韩日午夜在线资源一区二区| 欧美日韩国产91| 国产一区二区观看| 亚洲美女av电影| 久久久精品五月天| 日韩亚洲欧美一区二区三区| 久久精品国产69国产精品亚洲| 欧美亚日韩国产aⅴ精品中极品| 黑丝一区二区| 亚洲欧美日韩专区| 亚洲激情视频网站| 久久国产精品高清| 国产精品女人毛片| 在线亚洲自拍| 亚洲国产精品久久久久久女王| 亚洲免费在线播放| 欧美日韩亚洲一区| 国产一区二区无遮挡| 美国成人毛片| 亚洲日本视频| 国产精品有限公司| 一区二区三区福利| 欧美大片在线看| 久久福利影视| 国产精品亚洲视频| 亚洲一区二区三区精品在线观看| 亚洲福利专区| 奶水喷射视频一区| 亚洲国产一区二区三区高清| 老色鬼精品视频在线观看播放| 亚洲欧美日韩精品| 国产精品视频xxx| 亚洲欧美日韩国产精品| 一区二区精品国产| 一区二区三区国产精品| 欧美日韩国产精品一区| 欧美在线观看一区二区三区| 99热在这里有精品免费| 欧美高清视频一区二区| 久久成人18免费网站| 国产精品一二一区| 久久精品盗摄| 久久精品在线播放| 亚洲国产精品成人久久综合一区| 男女av一区三区二区色多| 久久只有精品| 99re6这里只有精品| av72成人在线| 国产午夜精品视频| 老**午夜毛片一区二区三区| 免费试看一区| 一本大道久久精品懂色aⅴ| 亚洲乱码精品一二三四区日韩在线 | 久色成人在线| 欧美一级久久久久久久大片| 国产欧美日韩一区二区三区在线观看 | 亚洲日本欧美日韩高观看| 亚洲黄色免费| 欧美午夜电影在线| 久久精品女人| 噜噜噜91成人网| 中文久久精品| 性欧美xxxx视频在线观看| 伊人久久综合97精品| 欧美黄色成人网| 国产精品成人aaaaa网站| 久久国产精品99久久久久久老狼| 久久久综合香蕉尹人综合网| 亚洲视频你懂的| 久久久久看片| 国产精品99久久久久久久vr| 亚洲欧美制服中文字幕| 亚洲精品日韩激情在线电影| 亚洲欧美卡通另类91av| 亚洲毛片av在线| 欧美一级夜夜爽| 99国产精品99久久久久久| 欧美亚洲一区三区| 中文精品99久久国产香蕉| 六月天综合网| 久久久久久穴| 欧美性片在线观看| 欧美激情一区在线观看| 国产日韩在线一区| 亚洲日本aⅴ片在线观看香蕉| 国内精品久久久久久久97牛牛| 亚洲精选国产| 亚洲国产一区二区三区青草影视| 亚洲视频www| 亚洲精品国产拍免费91在线| 亚洲在线免费视频| 亚洲视频导航| 欧美风情在线观看| 亚洲精品久久| 久久在线免费观看| 久久精品欧美日韩精品| 国产精品毛片高清在线完整版| 亚洲激情二区| 亚洲激情女人| 久久九九久精品国产免费直播| 午夜精品免费| 国产精品麻豆va在线播放| 亚洲免费福利视频| 亚洲精品一区二区在线观看| 久久久国产精品一区二区三区| 欧美一级久久久| 国产精品国产三级国产普通话蜜臀| 亚洲人精品午夜| 亚洲人午夜精品免费| 欧美α欧美αv大片| 久久久精品午夜少妇| 国产女人精品视频| 亚洲免费中文| 久久黄色小说| 韩国三级电影久久久久久| 久久久久在线观看| 亚洲摸下面视频| 午夜精品电影| 国外成人在线| 欧美在线视频二区| 久久免费午夜影院| 在线欧美小视频| 美女日韩在线中文字幕| 亚洲丶国产丶欧美一区二区三区| 亚洲第一在线视频| 欧美激情国产高清| 亚洲视频每日更新| 久久久av网站| 亚洲第一偷拍| 欧美日韩成人在线观看| 中日韩美女免费视频网址在线观看| 亚洲欧美综合| 在线观看亚洲视频| 欧美激情精品久久久久久免费印度| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲精品资源| 香蕉视频成人在线观看| 国模叶桐国产精品一区| 免费毛片一区二区三区久久久| 亚洲精品一区二区三区蜜桃久| 亚洲专区在线| 在线精品视频免费观看 | 在线观看国产日韩| 欧美日韩精品免费看| 久久精品国产久精国产爱| 亚洲电影免费观看高清完整版| 在线亚洲成人| 韩国三级电影久久久久久| 欧美久久视频| 久久久国产精彩视频美女艺术照福利 | 欧美了一区在线观看| 欧美亚洲一区二区在线| 亚洲精品久久久久久久久久久| 久久精品国产v日韩v亚洲| 亚洲精选视频在线| 国产美女精品| 欧美日韩视频在线| 久久九九99| 亚洲尤物精选| 亚洲精品永久免费| 免费欧美电影| 久久成人国产精品| 制服诱惑一区二区| 亚洲国产日韩欧美在线图片| 国产欧美 在线欧美| 欧美日韩一区二区在线播放| 老牛影视一区二区三区| 午夜精品久久久久久久男人的天堂| 最新国产精品拍自在线播放| 久久天堂成人| 欧美在线视频a| 亚洲一区二区三区在线看| 午夜久久久久| 国内精品伊人久久久久av一坑| 欧美片网站免费| 久久亚洲色图|