방향을 나타내는 3 개의 벡터, 위로 오른쪽 및 앞으로가 있습니다.3d 벡터의 전체 각도
이
[편집]
자사가 제대로 렌더링되지
도와주세요가 나는 XYZ 각 (3 수레)에 이러한 변환해야 그래서 난 glRotatef() 사용하실 수 있습니다. pastebin.com/f6683492d DP3가 3 구성 요소 내적은
방향을 나타내는 3 개의 벡터, 위로 오른쪽 및 앞으로가 있습니다.3d 벡터의 전체 각도
이
[편집]
자사가 제대로 렌더링되지
도와주세요가 나는 XYZ 각 (3 수레)에 이러한 변환해야 그래서 난 glRotatef() 사용하실 수 있습니다. pastebin.com/f6683492d DP3가 3 구성 요소 내적은
나는 당신이 " 그리고 앞으로 "왜냐하면 아래로의 반대이며 새로운 정보를 제공하지 않습니다.
당신의 질문은 명확하지 않지만, 당신이 설명하는 벡터에 의해 정의 된 새로운 좌표베이스로의 변환을 만들고 싶다는 것을 의미한다고 생각합니다. 이 벡터들이 직각을 이루고 있다면 (각도가 90도), 각도를 계산하고 glRotate()를 사용하지 않아도됩니다. 대신 새로운베이스의 벡터를 변환으로 직접 사용할 수 있습니다.
당신이 가지고있는 벡터가 A (a1, a2, a3) - 위쪽, B (b1, b2, b3) - 오른쪽 및 C (c1, c2, c3) - 앞으로라고 가정하십시오. 첫 번째, 완전히 직각이 아닌 경우 교차되는 제품이 몇 개 있는지 직각이되도록해야합니다.
a1 b1 c1 0
a2 b2 c2 0
a3 b3 c3 0
0 0 0 1
이 함께 A, B, C 에 의해 정의 된베이스 유닛베이스에서 당신을 가져올 것이다 회전 행렬은 다음과 같습니다 둘째, 당신은 자신의 길이가 1. 이제 다음과 같은 매트릭스를 생성되어 있는지 확인해야 이 매트릭스는 glMultMatrix()를 사용하면 끝난다. 첫 번째 시도가 작동하지 않으면 행렬을 조 변경하면 문제가 해결 될 수 있습니다.
EDIT 다시 확인한 후, 행렬의 올바른 순서가 너무 같아야 : 벡터 A의 (AX, AZ AY), B (BX 의해, BZ), C (CX, cy, cz)
ax ay az 0
bx by bz 0
cx cy cz 0
0 0 0 1
위 응답의 전치입니다. 또한 번역없이 작동하는지 먼저 확인하는 것이 좋습니다. 그리고 다음과 같이 간단하게 행렬에 추가하여 번역을 추가 할 수 있습니다 :
ax ay az 0
bx by bz 0
cx cy cz 0
pos.x pos.y pos.z 1
x = acos(dp3(nrm(up), new vec3(0, 1, 0)));
y = acos(dp3(nrm(dir), new vec3(0, 0, 1)));
z = acos(dp3(nrm(right), new vec3(1, 0, 0)));
, NRM이 3 요소 벡터를 normalises 및 정의 VEC3 하나를 구성 : 여기 뻔뻔스러운 그 무엇이라도 있다면 당신은 볼 수 있습니다.
이렇게하면 vectr과 사이의 각도가 기본 좌표계이됩니다.
편집 : 위에서 지적한대로 물론 적용 할 수있는 기본 매트릭스가 이미 있습니다. Orthonormalise도 매우 쉽습니다. 현실적으로 나는 위에서 한 것을 할 필요가있는 시간을 생각할 수 없다........... 당신이 구했던 것.)
질문이 구체화되지 않았다고 생각합니다. 보았다 : "무엇?" – dmckee
좀 더 구체적으로 말씀 해주시겠습니까? – Nope