问题描述
我正在尝试为非常复杂的点集计算复杂的船体。查看图片:
左侧的绿色/蓝绿色线包含彼此相邻的凸包点,即彼此紧挨着的凸包点。继续该序列,下一个点应该是右下角的青色/绿色。
但是,如果我沿着数组走动,则下一个似乎是右上角的黄色。
摘要:
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 (将#修改为@)