【matlab教程】16、曲线上等弧长取点 |
您所在的位置:网站首页 › 求圆截得的弦长怎么算 › 【matlab教程】16、曲线上等弧长取点 |
搜索如何在曲线上等弧长取点时搜到两篇相关论文: 《等弧长原则的nurbs曲线离散算法》 《三维参数曲线的离散算法》 但是我自己的方法够用了,就没有细读 适用范围步长较小,在所需步长范围内曲线可以近似为直线 如果步长较大,可以使用小步长,得到所有点之后再间隔取点 效果图
从起始点开始 以当前点为圆心,步长为半径,画圆,圆与曲线的交点就是要求的等弧长点 交点设为当前点,重复上一步,循环到结束点 代码 function [ arch_x ] = x_on_arch( x_start,x_end,p,step ) %X_ON_ARCH 求沿牙弓上等弧长的点的横坐标(弧长长度为step) % x_start:起始点的横坐标 % x_end:结束点的横坐标 % p:曲线多项式系数 % step:步长(弧长) p_size=size(p,2); syms x;y=0; for m=1:p_size y=p(1,m)*power(x,(p_size-m))+y; end x_m=x_start; arch_x=[x_start]; while x_mx_m); arch_x=[arch_x x_m]; end % 看一下这些点 arch_y=polyval(p,arch_x); x2=linspace(x_min,x_max,100);y2=polyval(p,x2); figure; scatter(arch_x,arch_y,'.'); hold on % fplot(@(x) y,[x_min x_max],'b')%这个函数不支持sym类型,y是sym类型 plot(x2,y2,'r'); axis([x_min x_max y_min y_max]); hold off end |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |