iPhone 3D компас

Я пытаюсь создать приложение для iPhone 4, которое позволяет пользователю «указывать» на жестко заданный пункт назначения, и точка появляется там, где находится пункт назначения.

Во-первых, я использую компас, чтобы сделать горизонтальный компас (это будет охватывать левое/правое вращение):

// Heading
nowHeading = heading.trueHeading;

// Shift image (horizontal compass)
float shift = bearing - nowHeading;
destinationImage.center = CGPointMake(shift+160, destinationImage.center.y);

Я сдвигаю точку на 160 пикселей, потому что ширина экрана 320 пикселей. Теперь мой вопрос: как я могу расширить этот код для обработки вверх и вниз? Это означает, что если я наведу телефон вниз на стол, точка не будет отображаться. Я должен указать (например, сделать снимок) на пункт назначения, чтобы он был нарисован на экране. Я уже реализовал ускоритель. Но я не знаю, как объединить эти компоненты для решения моей проблемы.


person Community    schedule 14.05.2011    source источник


Ответы (2)


Пеленг должен зависеть от поля зрения камеры. Для iPhone 4 горизонтальный угловой обзор равен 47,5, поэтому 320 точек/47,5 = ххх точек на градус, используйте это для смещения по горизонтали. Вы также должны добавить адаптивный фильтр к акселерометрам, вы можете получить его из AccelerometerGraph от Apple.

У вас есть вращение по одной оси (подшипник), вы должны получить вращение по двум другим от акселерометров. Атан2 двух осей дает вам вращение по третьей. Перейдите по адресу UIAcceleration и представьте, что ось физически пронзает устройство, если это поможет, и сделайте double xAngle = atan2(acceleration.y, acceleration.z); Итак, когда у вас есть вращение вверх ногами, вы можете повторить то, что вы сделали для горизонтали с вертикальным полем зрения, например: 60 для айфон.

Это будет одна грубая реализация :), но добиться плавного движения сложно. Одна вещь, которую вы можете сделать, это использовать гироскопы, чтобы получить более быстрый отклик и периодически корректировать их сигнал с помощью акселерометров. О предстоящих проблемах см. в этом выступлении: Sensor Fusion на устройствах Android. Вот веб-сайт, посвященный фильтру Калмана. Если вы осмелитесь работать с кватернионами, я рекомендую «Визуализацию кватернионов» Эндрю Дж. Хэнсона.

person Jano    schedule 14.05.2011

Похоже, вы пытаетесь создать стиль дополненной реальности. Если это. В этом случае здесь предлагается несколько библиотек и примеров кода:

Дополненная реальность

person dredful    schedule 14.05.2011
comment
Вы правы, это первые шаги к приложению AR. Но я думаю, что библиотека AR была бы излишней для моего простого приложения. Спасибо, в любом случае! - person ; 21.05.2011