如何解决贾维斯Jarvis前进的算法可以返回未分类的结果吗?
我正在尝试为非常复杂的点集计算复杂的船体。查看图片:
左侧的绿色/蓝绿色线包含彼此相邻的凸包点,即彼此紧挨着的凸包点。继续该序列,下一个点应该是右下角的青色/绿色。
但是,如果我沿着数组走动,则下一个似乎是右上角的黄色。
是的,输出为ascii,点云是正确的(与GUI输出相比)。
摘要:
for(int i = 0; i< rd.length; i++) {
if( (*rd)[i].lon < lonMin) {
lonMin = (*rd)[i].lon;
leftMostPos = i;
}
}
int [] hullIdx = new int[0];
int p = leftMostPos,m = to!int((*rd).length),q;
do {
hullIdx ~= [p];
q = (p + 1) % m;
for ( int ij = 0; ij < m ; ij ++) {
auto a = (*rd)[p];
auto b = (*rd)[ij];
auto c = (*rd)[q];
double ornt = (b.lat - a.lat) * ( c.lon - b.lon) - (b.lon - a.lon) * (c.lat - b.lat) ;
if (ornt < 0) q = ij;
}
p = q;
} while ( p != leftMostPos);
语言是D,我正在解决地理纬度和经度问题。以Lons为坐标,lats为x坐标。矩阵朝下方向逐行增加y坐标。也要考虑到这一点。
我想知道Jarvis算法如何返回未排序的输出。非常感谢您的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。