Я разрабатываю свой собственный движок дополненной реальности.
В этом уроке Я нашел, как отобразить точку на экране, используя ее азимут, размер экрана iPhone и поле обзора камеры:
+ (CGPoint) calculatePositionFor:(float)deltaOrient screenSize:(CGSize)screenSize fov:(float)fov
{
CGPoint point;
CGFloat x = (screenSize.width / 2.0f) + (deltaOrient * (screenSize.width / (fov / 2.0f)));
CGFloat y = screenSize.height / 2.0f;
point = CGPointMake(x, y);
return point;
}
Его параметры:
deltaOrient:
- указатель местоположения минус заголовок устройства.
screenSize:
Размер экрана iPhone.
fov:
поле зрения камеры.
Работает нормально, пока не захочу показать местоположение возле Севера. Когда курс устройства изменяется от 1 до 359 градусов, он не работает.
Я получаю этот журнал:
2011-11-16 15:10:16.067 AREngineDemo[310:707] Beta: 7.005, Heading: 2.504323, X: 234.424377
2011-11-16 15:10:16.104 AREngineDemo[310:707] Beta: 7.005, Heading: 1.504323, X: 250.961853
2011-11-16 15:10:16.117 AREngineDemo[310:707] Beta: 7.005, Heading: 0.504323, X: 267.499329
2011-11-16 15:10:16.149 AREngineDemo[310:707] Beta: 7.005, Heading: 0.504323, X: 267.499329
2011-11-16 15:10:16.172 AREngineDemo[310:707] Beta: 7.005, Heading: 359.504333, X: -5669.451660
2011-11-16 15:10:16.195 AREngineDemo[310:707] Beta: 7.005, Heading: 358.504333, X: -5652.914551
2011-11-16 15:10:16.217 AREngineDemo[310:707] Beta: 7.005, Heading: 358.504333, X: -5652.914551
2011-11-16 15:10:16.244 AREngineDemo[310:707] Beta: 7.005, Heading: 358.504333, X: -5652.914551
X coodinate идет от 247
до -5669
. Это ошибка.
Я пытаюсь задаться вопросом, как это исправить, я пока не знаю, как.
Любая подсказка?