iPhone - CLHeading: как я могу преобразовать trueHeading в вектор - PullRequest
3 голосов
/ 15 марта 2011

Я знаю, как получить координаты магнитного курса: heading.x, heading.y, heading.z Дело в том, что мне понадобится (x, y, z) -вектор trueHeading.Как я могу создать этот вектор?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 15 марта 2011

Редактировать : Я немного изменил свой ответ ...

В основном вам нужно повернуть вектор магнитного севера в направлении, противоположном углу Магнитное склонение .

Сложная часть заключается в том, что вам нужно повернуть вектор в горизонтальной плоскости. Для этого вам нужно знать ориентацию телефона.

Вот что вам нужно сделать:

  1. Получите вектор магнитного севера.

  2. Получить вектор гравитации от акселерометра.

  3. Теперь вычислите / посмотрите Магнитное склонение (это зависит от того, где вы находитесь в мире, и оно также медленно меняется со временем).

  4. Поверните вектор магнитного севера на X градусов относительно вектора гравитации (где -X = магнитное склонение). Это будет сложная часть, вам нужно освежить некоторые 3d триги.

0 голосов
/ 17 марта 2011

Спасибо за редактирование ... забавно, именно это я и сделал. Я взял вектор магнитного севера и повернул его с помощью матрицы вращения вокруг вектора гравитации с изменением между магнитным заголовком и истинным заголовком.

Дело в том, что в этом случае я зависим от магнитного вектора. В некоторых ситуациях я замечал, что магнитный вектор просто сходил с ума, а датчик выдавал странные значения.

Итак, я хотел получить вектор истинного заголовка, который не зависит от магнитного вектора. Хорошо, что за глупая мысль - скорее всего, истинный курс в любом случае уже зависит от магнитного курса.

Однако - спасибо за ответ:)

...