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