介绍一种圆弧插值方法:
这是实际应用中有人需要这个功能而设计的。实际问题是:已知道路转弯处三个点,拟合出这个道路的弯。
实际上好多软件都有这个算法的。我这里班门弄斧了。
1、计算圆心坐标
根据圆上任意点到圆心的距离相等,列方程;联立方程组,求解圆心坐标(这里提一下,matlab可以直接解方程)代码如下:
%{
本函数用于求解平面圆的圆心坐标和半径求解思路:构造圆的方程,解方程组(圆上任一点到圆心的距离相等)输入:圆上三个点的坐标输出:圆的圆心坐标(x0,y0)和半径r%}function [x0,y0,r] = FindParametersOfACircle(pointsTab)% 定义圆心坐标syms x0 y0% 各点到圆心的距离(即半径r)s1=sqrt((pointsTab(1,1)-x0)^2+(pointsTab(1,2)-y0)^2);s2=sqrt((pointsTab(2,1)-x0)^2+(pointsTab(2,2)-y0)^2); s3=sqrt((pointsTab(3,1)-x0)^2+(pointsTab(3,2)-y0)^2); % 构造方程组eq1=s1-s2;eq2=s2-s3; % 解方程组,得圆心坐标[x0,y0]=solve(eq1,eq2);% 输出待求参数x0 = double(x0);y0 = double(y0);r = sqrt((pointsTab(1,1) - x0)^2+(pointsTab(1,2) - y0)^2);