3

증강 현실 애플리케이션을 작성하려고합니다. 오버레이를 만들기 위해 나침반, 자이로 스코프 및 GPS 좌표를 사용하고 있습니다. 사용자가 세로 모드를 벗어나는 경우를 제외하면 모든 것이 잘 작동합니다. 내가 알아 내지 못하는 단순한 삼각 문제 일뿐입니다.방향을 다루는 iPhone 삼각법

좌표가 시야에 있는지 알아 보려면 프로그램 시작시 계산 된 iPhone의 중심점의 방위각 및 경사 값을 사용합니다. 방위각은 휴대 전화가 위를 향할 때 왼쪽 및 오른쪽 움직임으로 정의되고, 휴대 전화가 위를 향할 때 경사는 위아래로 움직입니다. 그런 다음이 값을 자이로 스코프로 업데이트하고 업데이트 할 때 나침반 데이터를 업데이트합니다. 따라서 중심점의 기울기와 방위각을 올바르게 업데이트하면 모든 것이 작동합니다.

아이폰을 돌릴 때 방위각과 기울기의 정의가 전화기와 동일하게 유지되는 것이 문제입니다. 따라서 전화기가 옆으로 있어도 기울기는 여전히 전화기 상단까지 정의됩니다.

내가 같은 것을 수행 하였다 시도 :

self.centerPoint.azimuth = (degToRad(angleX)*cosZ) + (degToRad(angleY)*sinZ); 
self.centerPoint.inclination = (degToRad(angleY)*cosZ) + (degToRad(angleX)*sinZ); 
degToRad (X)를 라디안으로 변환

, cosZ 및 sinZ는 COS 및 자이로 스코프에서의 z의 각도 죄 각각 있으며 angleX 및 angleY는 자이로 스코프의 x 및 y 각도입니다. 자이로 스코프의 X- 각은 상하 각도를 측정하고, Y- 각도는 좌우로 측정하며, Z- 각도는 세로에서 가로로 전화의 회전을 측정합니다.

작동하지 않는 것 같습니다. 휴대 전화를 옆으로 돌리면 기울기가 급격히 증가합니다. 어떤 삼각 지대 사람들이 도울 수 있습니까?

일반적으로 세로 방향만을 고려할 때 azimuth = degToRad (angleX) 및 inclination = degToRad (angleY)를 추가해야합니다. 세로 방향으로 작동합니다. 나는 다른 각도를 설명하기 위해 이것을 몇 가지 요인으로 곱해야합니다.

+0

Apple Stack Exchange 웹 사이트? – Shoe

+0

아니요, 이것은 프로그래밍 질문입니다. Apple 소프트웨어 관련 질문이 아닙니다. –

답변

0

이런 종류의 문제를 해결 한 이후 오랜 시간이 걸렸지 만, 초상화에서 풍경으로 움직이는 것이 단지 필요한 경우 방위각과 경사 값을 바꿀 수는 없었습니까?

어쨌든 그들은 두 각도가 똑같은 방식으로 계산되며, 실제로는 서로 다른 각도로 표시됩니다. angle1angle2이라는 레이블을 붙인 다음 전화 방향에 따라 다른 계산법에서 둘 중 하나를 사용하는 것이 좋습니다.


업데이트 : 다시보고에서

, 나는 당신의 문제는 당신이 잘못된 센서를 사용하고 있다고 생각합니다. 자이로 스코프 데이터는 라디안/초를 반환하며 원하지 않는 회전의 속도 인 의 척도입니다.

대신에 CMAttitude이 제공하는 태도 측정을 사용해야한다고 생각합니다. CMAttitude 클래스는 롤, 피치 및 요를위한 데이터를 제공하므로 장치의 실제 방향을 계산할 수 있습니다. 방법은 어떤 두 샘플 사이에 장치 방향의 변화를 제공하는 것처럼 보이는 multiplyByInverseOfAttitude: 것 같습니다.

+0

그래, 나는 이것에 대해 생각했다. 폰이 30도 각도라면, 초상화가 아니거나 풍경이 아닙니다.다른 모든 것이 실패한다면, 나는 그렇게 할 것이다. – Mike

+0

더 나은 답변을 보려면 업데이트를 참조하십시오. – TechZen