我正在考虑一些合适的模型来存储子午线和平行线。经络和平行线应保持一致。
可能的型号:
A)“拓 flutter ”模型
每个点都存储指向北,南,东和西点的指针。
class Point
{
private:
double lat;
double lon;
Point *north;
Point *south;
Point *east;
Point *west;
...
};
class Meridian
{
private:
double longitude;
Point *start;
Point *end;
unsigned int points_total;
};
class Parallel
{
private:
double latitude;
Point *start;
Point *end;
unsigned int points_total;
};
优点:
缺点:
第二个缺点使我放弃了该模型。
B)点列表。经络/平行存储点列表,没有拓 flutter 关系。
class Point
{
private:
double lat;
double lon;
};
class Meridian
{
private:
double longitude;
std::vector <Point> points;
};
class Parallel
{
private:
double latitude;
std::vector <Point> points;
};
优点:
缺点:
最后一个缺点可能会导致模型的放弃,并让我考虑拓 flutter 模型的修改形式...。
我正在执行一些空间仿真,并以多个嫁接的投影表示结果,因此有效的数据存储对我来说非常重要。
也许有人可以提出更好的模型:-)。感谢您的回答...
最佳答案
如果将子午线和纬线存储在地球的曲面上,则可能有兴趣查看一些用于计算几何体以表示闭合二维流形的数据结构。像quad-edge或winged-edge这样的结构经过专门设计,可以快速查找靠近给定边缘,点或扇区的边缘,点或扇区,并可以通过添加或删除新边缘轻松地对其进行更新。我不确定这对您的特定应用程序有多有用,但是我认为它们可能是一个很好的起点。在C++中肯定有这些结构的良好实现,尽管我不知道有什么可以解决的。