zoukankan      html  css  js  c++  java
  • MATLAB 贝塞尔曲线

    下面三个公式分别是一次、二次和三次贝塞尔曲线公式:

    通用的贝塞尔曲线公式如下:

     

    可以看出,系数是由一个杨辉三角组成的。

    这里的一次或者二次三次由控制点个数来决定,次数等于控制点个数-1。

    实现的效果如下:

    代码如下:

     1 clear all;
     2 close all;
     3 clc;
     4 
     5 p=ginput();
     6 plot(p(:,1),p(:,2),'b-o');
     7 
     8 N=length(p);    %确定贝塞尔阶数(控制点个数-1 9 t=zeros(N,N);
    10 
    11 M=100;  %确定贝塞尔曲线点的个数
    12 
    13 %计算杨辉三角
    14 for i=1:N
    15     t(i,1) = 1;
    16     t(i,i) = 1;
    17 end
    18 if N>=3
    19     for i=3:N
    20         for j=2:i-1
    21             t(i,j) = t(i-1,j-1)+t(i-1,j);
    22         end
    23     end
    24 end
    25 
    26 %根据公式计算贝塞尔曲线
    27 re=zeros(M,2);
    28 for i=1:M
    29     step = i/M;
    30     for k=0:N-1
    31         re(i,1) = re(i,1) + (1-step)^(N-k-1)*p(k+1,1)*step^k*t(N,k+1); %t替换为nchoosek(N-1,k),不用计算杨辉三角了;
    32         re(i,2) = re(i,2) + (1-step)^(N-k-1)*p(k+1,2)*step^k*t(N,k+1); %t替换为nchoosek(N-1,k),不用计算杨辉三角了; 
    33     end 
    34 end
    35 
    36 hold on;
    37 plot(re(:,1),re(:,2),'r');

    注意,运行时要先点几下输入控制点,然后按回车键来进行确认。

  • 相关阅读:
    update结合查询更新
    查表字段名,注释
    微信access_token
    Oracle中的dual伪表
    Oracle中的null
    UIView九宫格
    UIWebView使用
    sql触发器Tigger
    重写init方法
    OC内存管理示例
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13645541.html
Copyright © 2011-2022 走看看