나는 경락과 피부를 저장하는 데 적합한 모델을 생각하고 있습니다. 경락과 평행선은 선으로 유지되어야합니다.경락과 평행을위한 데이터 모델
가능한 모델 :
A) 각 점 매장은 북쪽, 남쪽, 동쪽과 서쪽 지점에 포인터 "위상 적 (topologic)"모델.
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;
};
장점 :
- 우리는 그 반대의 경우도 마찬가지 남북 방향으로 각각의 자오선을 통과 할 수 있습니다. 우리는 동서 방향으로 각각의 평행선을 횡단 할 수 있고 그 반대도 마찬가지입니다.
- 각 포인트가 자오선 또는 병렬 (포인터 사용)인지 여부를 결정합니다.
- 작은 저장 요건 ...
단점 : 모든 자오선/병렬 포인트
- 순차 액세스 복사 생성자와 함께 오퍼레이터 =
- 문제. 포인트 세트의 사본은 여러 단계로 수행되어야합니다 : 포인트의 새로운 인스턴스 생성, std :: map을 사용하여 포인트 간의 위상 관계 추가, 자오선/병렬의 엔드 포인트 변경 ... 이것은 다소 느립니다 ...
두 번째 단점은 모델을 포기하게 만들었습니다.
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;
};
장점 :
- 우리는 그 반대의 경우도 마찬가지 남북 방향으로 각각의 자오선을 통과 할 수 있습니다. 우리는 동서 방향으로 각각의 평행선을 횡단 할 수 있고 그 반대도 마찬가지입니다.
- 복사 생성자 및 연산자에 문제 없음 =
- 모든 지점에 순차적으로 직접 액세스 할 수 있습니다.
단점 :
- 우리는 각 점은 어떤 자오선/병렬 (하여 포인터) 여부에 속하는지 여부를 결정할 수있다.
- 더 큰 저장 요구 사항. 어떤 시점에서
- 우리는
마지막 단점은 모델의 포기로 이어질 수 ... 우리는 포인터가없는 자오선/병렬의 이전/다음 지점을 찾을 수없는 나를 리드 토폴로지 모델의 변형 된 변형에 대해 생각해보십시오 ....
몇 가지 공간 시뮬레이션을 수행하고 여러 카토 그래픽 프로젝션으로 결과를 나타내므로 효율적인 데이터 저장이 매우 중요합니다.
누군가 더 나은 모델을 제안 할 수 있습니다. 귀하의 답변을 주셔서 감사합니다 ...