Я разрабатываю AR-приложение, используя гироскоп. Я использую пример кода apple pARk. Он использует матрицу поворота для вычисления положения координаты, и это действительно хорошо, но теперь я пытаюсь реализовать «радар», и мне нужно повернуть его в функции заголовка устройства. Я использую заголовок CLLocationManager, но это неверно.Как я могу получить заголовок устройства с CMDeviceMotion в iOS 5
Вопрос в том, как я могу получить заголовок устройства, используя CMAttitude, чтобы точно отражать то, что я получаю на экране?
Я новый с матрицей вращения и такими вещами.
Это часть кода, используемого для расчета координат AR. Обновление cameraTransform с отношением:
CMDeviceMotion *d = motionManager.deviceMotion;
if (d != nil) {
CMRotationMatrix r = d.attitude.rotationMatrix;
transformFromCMRotationMatrix(cameraTransform, &r);
[self setNeedsDisplay];
}
, а затем в коде DrawRect:
mat4f_t projectionCameraTransform;
multiplyMatrixAndMatrix(projectionCameraTransform, projectionTransform, cameraTransform);
int i = 0;
for (PlaceOfInterest *poi in [placesOfInterest objectEnumerator]) {
vec4f_t v;
multiplyMatrixAndVector(v, projectionCameraTransform, placesOfInterestCoordinates[i]);
float x = (v[0]/v[3] + 1.0f) * 0.5f;
float y = (v[1]/v[3] + 1.0f) * 0.5f;
Я также повернуть изображение с углом наклона. движений обновления начали использовать север:
[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical];
Так что я думаю, что должно быть возможным, чтобы получить «Ролл»/заголовок устройства в любом положении (с любым шагом и рыскания ...), но я не знаю как.
Я не могу найти метод multiplyMatrixAndVector. Можете ли вы сказать мне, что это? – vale4674
Этот код находится в коде pARk для Apple. Во многих других библиотеках это очень часто. – AdrianByv