2009-11-25 2 views
0

죄와 cos를 사용하여 평면을 가로 질러 원을 만들려고합니다. 그것이 x, y 또는 z 축과 정렬 될 때 모든 것이 잘 작동하지만, 나는 좀 더 역동적 인 것이 필요합니다. 평면 벡터를 3D 벡터로 변형시키는 방법이 있습니까? 나는 당신의 질문이 있어요 경우2D 벡터에서 3D 벡터

답변

1

당신은 그래서

+0

그래, 아마도. – Alex

0

MathOverflow.을 확인 할 수 있습니다, 오른쪽, 당신은 직접 축 중 하나를 직면하지 않는 3D 공간에서 원을 그리려고? 이를 수행하는 방법은 먼저 정상적인 3D 벡터를 중심으로 사용하고 그 둘레에 2D 방식으로 원을 그리는 것입니다. 그래야 여전히 3 번째 좌표를 무시하고 축 중 하나를 마주 보게됩니다. 원을 회전 시키려면 회전 행렬을 사용하여 원을 생성하는 점에 적용해야합니다. 이를위한 수학은 다음과 같습니다

raw_point = Center + (cos(angle)|sin(angle)) 

      [raw_point.x] [1][0    ][0    ] [cos(YRotation)][0][-sin(YRotation)] [cos(ZRotation)][-sin(ZRotation)][0] 
3DPoint = [raw_point.y] * [0][cos(XRotation)][-sin(XRotation)] * [0    ][1][0    ] * [sin(ZRotation)][cos(ZRotation) ][0] 
      [raw_point.z] [0][sin(XRotation)][cos(XRotation) ] [sin(YRotation)][0][cos(YRotation) ] [0    ][0    ][1] 

(브라켓 블록 매트릭스이다)

는 방법 (회전 -) 일이 위키 피 디아에를 찾아 매트릭스의 추가 설명이 필요합니다. Btw. Java와 같은 코드 언어에서이 메서드를 사용하려면 먼저 행렬의 수학을 포함하는 클래스를 만들어야합니다. 필자는 차원 기반 문제가 한 번만 발생했기 때문에 필자에게 이러한 사실을 꼭 알려줄 수 있습니다.