geometry - 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 算法如何返回未排序的输出。我会感激你所有的帮助。
解决方案
推荐阅读
- ios - 使用文档选择器从 iCloud 中选择一个文件夹
- angular - 如何在 Angular 7 ngrx 6.1 中测试守卫
- android - 使用 ConstraintLayout 重用布局
- android - Android Room 数据库视图
- jsf - 如何从 commandButtom Primefaces 向上滚动页面
- java - Java,使用自定义比较器对大量 ArrayList 进行排序有时会引发 iIllegalArgumentException
- wpf - C# WPF - 数据绑定到对象列表的属性
- javascript - 强制水平载荷
- python-2.7 - 我只想从 Django 的数据库中获取特定类别的产品(女性)产品
- realm - 从列表中删除不属于的对象 - 领域