iPhone 3D компас - PullRequest
       5

iPhone 3D компас

2 голосов
/ 14 мая 2011

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

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

// Heading
nowHeading = heading.trueHeading;

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

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

Ответы [ 2 ]

1 голос
/ 14 мая 2011

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

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

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

0 голосов
/ 14 мая 2011

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

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

...