2013-06-27 3 views
0

다른 점을 중심으로 특정 라디안 /도를 회전 한 후 3D 점의 위치를 ​​계산하는 공식은 무엇입니까? Java/LWLJGL을 사용하고 있습니다.3D 점 집합을 점 주위로 회전

누군가 다음의 공란을 기입 할 수 있습니까?
public Vector3f rotate(Vector3f origin, Vector3f rotation)
{
Vector3f ret = new Vector3f();
ret.x = __________;
ret.y = __________;
ret.z = __________;
}

+0

회전의 내적을 사용하는 말을 두 가지 각도를 필요로하며, 교환 법칙이 성립하지 않습니다. 우리가 대답하기 전에, 당신은 두 가지 매개 변수가 모두 사용 가능하다는 것을 확인할 수 있습니까? – hexafraction

+0

@hexafraction - 글쎄, 나는 3 개의 회전 매개 변수를 갖게 될 것입니다 - x, y, z 회전 (그리고 회전 할 점) – functorial

+0

x, y, z 회전과 같은 것이 없습니다. 두 개의 각도 만이 관련되어 있습니다. 두 개의 각도와 마찬가지로 하나의 각도 만 관련됩니다. 비공식적으로 이것을 증명하려면 2D에서 한 점을 취하고 두 가지 다른 * 독립 방식으로 회전 시키십시오. – hexafraction

답변

1

은 고정 된 지점의 좌표를 갖는 (A, B, C) 및 고려 시간 t1에 그리고에서 오브젝트 (X1, Y1, Z1)를 이동 (X2, Y2, Z2) 시간 t2에서.

옵션 1 x-y 평면 및 투영 y-z 평면에 투영을 고려하고 해당 2D 공간에서 각도를 계산할 수 있습니다.

옵션 2 두 벡터를 고려할 수 있습니다. 벡터 AB

A=(x1-a)i+(y1-b)j+(z1-c)k 
B=(x2-a)i+(y2-b)j+(z2-c)k 

이제 3D로 AB

A . B = |A||B|cos(angle) 
+0

지금 혼란 스럽습니다. t1, t2, A 및 B는 무엇입니까? 당신은 단지 다음과 같은 메소드를 작성할 수 없습니까?'public Vector3f rotate (Vector3f origin, Vector3f rotation) {float x = ... float y = ... float z = ...}' – functorial

+0

@ user2529202 회전은 두 각도입니다. . 이 게시물의 수학은 건전합니다. 이제 수학을 사용하는 방법을 만들 수 있습니다. – hexafraction

+0

@ user2529202 t1과 t2에 대해 걱정할 필요가 없습니다. 나는 그들을 설명하기 위해 사용했다. 당신은 단지 세 점 (고정 점과 회전 점의 두 위치)을 알고 싶어합니다. 그 중에서 A와 B를 찾을 수 있습니다. 나는 벡터에 대해 배울 것을 제안한다. 이것을 http://www.mathsisfun.com/algebra/vectors.html 참조하라. 불분명 한 점이 있으면 여기에 의견을 남기십시오. –