boost :: geometry的area_huiller算法中的错误?

时间:2012-02-24 23:42:25

标签: c++ boost boost-geometry

我在看看boost中的huiller算法的实现,似乎部分不正确。

参见boost / geometry / strategies / spherical / area_huiller.hpp

在apply()函数中,我们有

if (lon2 < lon1)
{   
    E = -E; 
} 

我认为应该是

calculation_type lon; 

if( lon2 < lon1 ) 
    lon = lon1 - lon2; 
else 
    lon = lon1 - lon2 + two_pi; 

if( 2 * half_pi < lon ) 
    E = -E; 

根据Graphics Gems 5,第45-46页.C ++文件顶部的注释表明代码是从Graphics Gems 4中的代码派生的,尽管稍后在Graphics Gems 5中修正了代码。

当我尝试计算球体上多边形的面积时,我注意到了这一点,其中一个点是(0,0)。在这种情况下,即使多边形是逆时针定义的,它也总会返回负区域。使用(0,0)以外的点似乎可以缓解这个问题,这让我想知道发生了什么。

其他人可以确认这是一个问题吗?有什么建议干净地覆盖boost的实现,直到修复它为止?

0 个答案:

没有答案