根据两点坐标自动生成可调整曲率的圆弧

最近在项目组遇到了新的需求:在地图上为巡逻机器人规划路径,在地图上双击任意一个点后,可自动在两点之间生成圆弧,已做了一部分,整理一下。菜鸟勿喷

求生成的圆弧的原点坐标

根据两点坐标自动生成可调整曲率的圆弧_第1张图片
联立以下方程即可得到 ( x 0 , y 0 ) (x_0, y_0) (x0,y0)坐标: ( x 01 , y 01 ) (x_{01},y_{01}) (x01,y01), ( x 02 , y 02 ) (x_{02},y_{02}) (x02,y02),其中 k = 1 r k=\frac{1}{r} k=r1表示曲率
( x 0 − x 1 + x 2 2 ) ( x 2 − x 1 ) + ( y 0 − y 1 + y 2 2 ) ( y 2 − y 1 ) = 0 (x_0-\frac{x_1+x_2}{2})(x_2-x_1)+(y_0-\frac{y_1+y_2}{2})(y_2-y_1) = 0 (x02x1+x2)(x2x1)+(y02y1+y2)(y2y1)=0
( x 0 − x 2 ) 2 + ( y 0 − y 2 ) 2 = 1 k 2 (x_0-x_2)^2+(y_0-y_2)^2 = \frac{1}{k^2} (x0x2)2+(y0y2)2=k21

关于角度整理如下,这里用的是canvas的 context.arc(x, y, radius, startAngle, endAngle [, anticlockwise]) 方法

根据两点坐标自动生成可调整曲率的圆弧_第2张图片

你可能感兴趣的:(根据两点坐标自动生成可调整曲率的圆弧)