作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在考虑一些合适的模型来存储经线和平行线。经线和纬线应保持为直线。
可能的模型:
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;
};
优点:
缺点:
最后一个缺点可能会导致模型的放弃,并让我想到拓扑模型的修改变体....
我正在执行一些空间模拟并在多个制图投影中表示结果,因此高效的数据存储对我来说非常重要。
也许有人可以提出一个更好的模型 :-)。感谢您的回答...
最佳答案
如果您要存储地球曲面上的经线和纬线,您可能有兴趣查看计算几何中用于表示封闭二维流形的一些数据结构。类似 quad-edge 的结构或 winged-edge专门设计用于快速查找靠近给定边、点或扇区的边、点或扇区,这种方式可以通过添加或删除新边轻松更新。我不确定这对您的特定应用程序有多大用处,但我认为它们可能是一个很好的起点。当然,这些结构在 C++ 中有很好的在线实现,尽管我不知道有什么不对的。
关于c++ - 经线和纬线的数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4992342/
我是一名优秀的程序员,十分优秀!