2013-09-29 2 views
1

stackoverflow에 대한 몇 가지 볼 바운스 관련 질문이 있습니다. 그러나 그 중 아무 것도 내 처지를 넘기지 않는 것 같습니다. 3D 공간에서 선과 교차하는 변형 행렬에 의해 정의 된 거북 커서가 있습니다. 내가 원했던 것은 새로운 방향이 반사 벡터와 일치하도록 교차 지점에서 커서, 즉 변환 행렬을 회전시키는 것입니다. 나는 인시던트 벡터 V에서 반사 벡터 R과 반사 라인 N의 법선을 모두 얻을 수있는 함수를 가지고 있습니다. 내가 평가하기 전에 각 정상화 :반사 행렬을 일치하도록 회전 행렬

N,V=unit_vector(N),unit_vector(V) 
R = -2*(np.dot(V,N))*N - V 
R=unit_vector(R) 

내 변환 행렬, T는 NumPy와 배열에 있습니다

array([[ -0.84923515, -0.6  , 0.  , 3.65341878], 
     [ 0.52801483, -0.84923515, 0.  , 25.12882224], 
     [ 0.  , 0.  , 1.  , 0.  ], 
     [ 0.  , 0.  , 0.  , 1.  ]]) 

가 어떻게 올바른 방향 벡터를 얻기 위해 R에 의해 T를 변환 할 수 있습니다 ? 나는 하나의 벡터에서 다른 벡터로 회전 행렬을 얻기 위해 here에서 R2_vect 함수를 찾아서 사용했지만, 결과 반사의 일부만이 렌더링 할 vtk로 전송할 때 올바르게 나타납니다. 나는 내가 이미 불안정한 선형 대수학에서 기억할 수있는 한계에 도달하고있는 것처럼 보이기 때문에 여기에 대해 묻고 있습니다. 어떤 정보에 감사드립니다.

+3

"3D 공간에서 다른 벡터와 교차하는 변형 행렬로 정의 된 벡터가 있습니다."- 그건 의미가 없습니다. 변형 행렬이하는 일을 명확하게 설명하십시오. –

+1

잘 모르겠다. 행렬은 4x4이고, 3d 공간의 벡터는 3 차원 일 가능성이 높다. 나는 OP가 무엇을 의미하는지 알지 못합니다. – gg349

+0

그래픽 프로그래밍 변환에서 @flebool은 때때로 4 개의 구성 요소와 x, y, z 좌표에 추가 된 "1"이 추가되어 변환이 별도의 추가 작업에 포함될 수 있습니다. –

답변

0

약간의 추가 연구가 명확한 사항 : 변환 행렬의 처음 3 열은 3 개의 직교 벡터 (x1, x2, x3)를 나타내고, 4 열은 주어진 시간 간격에서 커서의 공간 좌표를 나타냅니다. 마지막 행에는 데이터가 없습니다. 행렬을 사각형으로 유지하는 것입니다. 벡터를 회전하는 것은 단지 의 마지막 행을 제거하고 나열된 함수 R에서 3x3 회전 행렬을 취하여 각 벡터를 회전하는 것입니다. R.dot(x1), R.dot(x2), R.dot(x3) 그런 다음 값을 4x4 행렬로 다시 합성해야했습니다.