【matlab教程】16、曲线上等弧长取点

您所在的位置:网站首页 求圆截得的弦长怎么算 【matlab教程】16、曲线上等弧长取点

【matlab教程】16、曲线上等弧长取点

2023-09-04 03:11| 来源: 网络整理| 查看: 265

搜索如何在曲线上等弧长取点时搜到两篇相关论文: 《等弧长原则的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