在这个网站里找了十几篇相关博客,发现很多都有点问题,所以我自己推了一个。
椭圆一般方程.
大家注意,因为各种椭圆拟合算法的结果通常不一样,所以这里的ABCDEF是需要考虑符号变化和缩放的。那些没有提到这点的博客,数学能力不强的人看了很容易出错。
椭圆中心(所有博客里都没问题,变符号和系数缩放对结果无影响),
长轴倾斜角度公式(这个是公认的),
很多博客反手就是一个,我大意了啊,没有闪,给我的代码蹭了一下,导致我代码错了几个月我才发现。不论是数学上还是matlab代码里,arctan的值域是,1/2arctan的值域是. 如果我把椭圆逆时针旋转60°,上面这个公式只能干瞪眼。
正确的公式(我自己推导的,这里得到的倾角是之间的角。有错误的话欢迎读者指出来)应该是
最经典的环节来了,长短半轴。很多博客写的是
实际上,这个公式是有问题的。
原公式(a,c>0必须成立)应该是
是这个人推导的,我仔细看了下,没啥问题,但是这个人的角度写的跟其他博客一样。
椭圆一般方程参数求解_kerrity的博客-CSDN博客
很明显,这个公式里,系数可以缩放,但是不能变符号。这个公式是基于a,c>0的情况下推导出来的,所以想用这个公式,系数a和c必须大于0。如果a和c小于0,那么公式里长短轴的长度会互换。不可能每一个读者都拥有那么深的几何知识, 写成一开始那样,一般人根本看不懂,很容易导致编程错误。
我之前看了十几篇博客,然后直接写代码,中间总是出错,还找不到原因。今天花了很长时间自己推了一遍,跑了很多遍没发现问题,所以拿出来跟大家分享。
如果我公式里有错误,非常欢迎读者指出来,毕竟我代码就是按照这个写的,帮我纠错我很开心。