Вычислить различия между Point2D <UCS>и Point2D <GCS> - PullRequest
1 голос
/ 03 ноября 2010

Это связано с темой, ранее размещенной на этом форуме.

Каковы некоторые рекомендуемые среды для манипулирования пространственными данными в C ++?

Вам известна библиотека геометрии, которая предлагает основанную на обобщениях защиту во время компиляции от смешивания координат UCS и GCS? Например, я ищу что-то, что позволило бы мне написать код, подобный этому:

Point2D<GCS> p1( 1.0, 1.0 );
Point2D<UCS> p2( 1.0, 1.0 );
std::cout << (p1 - p2) << std::endl; // compile-time error: mixing types!

Мне не нужна защита от смешивания разных UCS, только смешивание GCS и UCS. Смешивание локальных и глобальных систем координат - это полностью предотвращаемая ошибка, которую можно устранить с помощью надлежащего ведения бухгалтерского учета, которое следует упростить с помощью строгой проверки типов в C ++ и поддержки обобщений. Я бы лучше использовал существующую библиотеку, чем заново изобрел колесо.

1 Ответ

0 голосов
/ 06 декабря 2012

Вы можете написать функцию для преобразования UCS в GCS. Затем вы можете выполнить std::cout<<(p1-p2)<<"\n;, когда они оба находятся в GCS.

Тогда не будет ошибки компилятора из-за типов смешивания.

...