docs 상태로 GRV 센서는 3D 회전 벡터를 제공합니다. 이것은 주어진이를 구성하는 세 가지 구성 요소를 숫자로 표현된다 : 이것은 그러나 혼란
x axis (x * sin(θ/2))
y axis (y * sin(θ/2))
z axis (z * sin(θ/2))
. 각 구성 요소는 해당 축을 중심으로 한 회전이므로 각 각도 (θ는 쎄타라고 발음 함)는 실제로는 다른 각도로 표시됩니다.
각도로 작업 할 때, 특히 3D로 작업 할 때는 일반적으로 각도가 아닌 라디안을 사용하므로 시타가 라디안으로 표시됩니다. This은 좋은 소개 설명처럼 보입니다.
그러나 형식으로 우리에게 주어진 이유는 매트릭스 회전에서 특히 quaternion처럼 쉽게 사용할 수 있다는 것입니다. 사실 은이며 회전을 지정하는 구성 요소 인 쿼터니언의 처음 세 구성 요소입니다. 네 번째 구성 요소는 크기 (magnitude), 즉 원점 (0, 0)에서 얼마나 멀리 떨어져 있는지를 지정합니다. 따라서 쿼터니언은 일반적인 회전 정보를 공간의 실제 지점으로 바꿉니다.
이들은 안드로이드 (그리고 세계의 다른 지역) 3D 라이브러리 인 OpenGL에서 직접 사용할 수 있습니다. 일부 OpenGL 회전 정보에 대해서는 this tutorial을 체크하고 일반적으로 3D 프로그래밍에 적용되는 일반 쿼터니언 이론은 this one이고이 정보를 직접 사용하는 방법을 정확하게 보여주는 Android 용 Google은 this example을 확인하십시오.
기사를 읽는 이유는 왜이 형식으로 가져오고 왜 게임 회전 벡터 (Game Rotation Vector)인지 알 수 있습니다.이 시점에서 3D 프로그래머가 게임에서 수십 년 동안 사용해온 것입니다.
TLDR; This example은 우수합니다.
편집 - 3D 공간에서이 벡터에 의해 회전되는 2D 이미지를 표시하는 방법입니다.
위의 예에서 SensorManage.getRotationMatrixFromVector
은 게임 회전 벡터를 3D로 을 회전하기 위해 적용 할 수있는 회전 행렬로 변환합니다.. 이 회전을 2D 이미지에 적용하려면 이미지를 3D로 생각해야합니다. 실제로는 한 장의 종이처럼 평면의 세그먼트입니다. 그래서 특수 용어로 텍스처라고하는 이미지를이 평면 세그먼트에 매핑합니다.
Here은 예제 코드와 깊이있는 토론을 통해 Android 용 OpenGL에서 텍스처 큐브에 대한 자습서입니다. 큐브에서 비행기 세그먼트로가는 짧은 단계입니다. 큐브의 한 면일뿐입니다! 사실 그것은 Android에서 OpenGL을 사용하기에 좋은 자료입니다. 이전 및 이후 튜토리얼 단계도 읽는 것이 좋습니다.
번역도 언급했듯이. Google 코드 예제에서 메소드를 확인하십시오. gl.glTranslatef
및 을 사용하여 변환하는 경우 gl.glMultMatrixf
을 사용하여 회전을 수행합니다. 이것은 당신이 번역하고 회전하는 방법입니다.
이러한 작업이 적용되는 순서와 관련이 있습니다. 실험 해보는 재미있는 방법은 브라우저 내부에서 실행되는 라이브 3D 스케치 코딩 환경 인 Livecodelab입니다. 특히 this tutorial은 작업 순서를 반영하도록 권장합니다. 분명히 명령 move
은 번역입니다.
본 적이 있습니까? https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.java –