我正在考虑一些适合存储经络和平行的模型。经络和平行线应该保持一致。
可能的型号:
A)“拓扑”模型 每个点存储指向北,南,东和西点的指针。
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)积分清单。经络/并行存储点列表,没有拓扑关系。
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;
};
优点:
缺点:
最后一个缺点可能会导致放弃模型并导致我考虑修改的拓扑模型变体....
我正在进行一些空间模拟,并在几个cartografic投影中表示结果,因此高效的数据存储对我来说非常重要。
也许有人可以提出更好的模型:-)。谢谢你的回答...
答案 0 :(得分:1)
如果您在地球的曲面上存储经线和平行线,您可能会对计算几何中用于表示闭合二维流形的一些数据结构感兴趣。像quad-edge或winged-edge这样的结构专门设计用于快速查找靠近给定边,点或扇区的边,点或扇区,其方式可以通过添加或删除新边缘。我不确定这在你的特定应用中会有多大用处,但我认为它们可能是一个很好的起点。在C ++中,这些结构肯定有很好的实现,但我不知道有什么不在我的脑海中。