2014-11-28 2 views
0

(적어도) 4 개의 정점으로 정의 된 볼록한 경계 상자 내부에 균일하게 랜덤 한 좌표를 생성하고 싶습니다. 사면체).경계가있는 공간 (x, y, z)에 랜덤 포인트 생성

누군가 내가 사용할 수있는 알고리즘을 제안 할 수 있습니까?

감사합니다.


경계 상자에서 포인트가 생성되는 경우, 그것이 지오 메트릭스 외부에 있지만 상자 내부에 있는지 여부를 어떻게 감지합니까?

+0

균일 한 배포가 필요합니까? –

답변

3

사용하고자하는 배포판과 같이 귀하의 질문에 명시되지 않은 내용이 많이 있습니다. 이 대답을 위해, 나는 균일 한 분포를 가정 할 것이다.

임의의 볼륨 균일 분포를 다루는 직접적인 방법은 볼륨을 감싸는 경계 직선 솔리드 범위에서 3 개의 균일 무작위 수를 좌표로 선택한 다음 선택한 좌표가 볼륨 내에 있는지 확인하십시오. 좌표가 볼륨 내에 없으면 삭제하고 새 좌표를 생성하십시오.

성능이 일정하지 않거나 다른 이유로 인해 문제가 발생하면 (예 : 4 면체 만) 문제가 발생하여 필요한 무작위 배포판을 계산하고 축 간의 종속성을 모델링합니다.

예를 들어 x 축으로 시작하여 x = t 인 평면과 볼륨 사이에 교차하는 모양의 영역을 통합 할 수 있습니다. 이것은 정규화 될 때 X 축을 따른 확률 밀도 함수 인 함수 p (x)를 제공합니다. (비 균일 분포를 원할 경우,이를 통합 함수에 넣어야합니다.)

그런 다음 y 축의 확률 분포 함수 인 p (y | x0)를 결정하기 위해 다른 적분 집합을 수행해야합니다. 선택된 x 좌표가 주어진다. 마지막으로 z 축의 확률 분포 함수 인 p (z | x0, y0)를 결정해야합니다.

일단이 모든 것이 있으면 임의의 난수 알고리즘을 사용하여 이러한 분포에서 임의의 숫자를 선택해야합니다. 먼저 p (x)에서 x0을 선택한 다음이를 사용하여 p (y | x0)에서 y0를 선택합니다. 그런 다음 이들을 사용하여 p (z | x0, y0)에서 z0을 선택하면 결과 (x0, y0, z0)가 표시됩니다.


는 점 볼륨 벗어나면 여러가지 알고리즘을 결정하기 위해 존재하지만, 단순 하나가 될 수있다 : 각각의 다각형 얼굴

  • :
    • 그 특성 평면을 계산한다.
      • 교차 법을 사용하여 평면 법선을 계산합니다.
      • 면의 한 정점과 법선 법선으로 평면을 정의하기에 충분합니다.
      • 오른손 법칙을 기억하고 평면 법선이 다면체와 일관되게 일치하도록 점을 선택하십시오.
    • 랜덤 포인트가 해당 평면의 "안쪽"반쪽 공간에 있는지 확인하십시오.
      • 반구형은 비행기의 한쪽면에있는 모든 점의 집합입니다.
      • 비행기 정점에서 임의 지점까지의 벡터를 계산합니다.
      • 평면 법선과이 벡터 사이의 내적을 계산합니다. 당신이 다면체의 지적 비행기 법선을 정의한 경우
  • , 다음 모든 도트 제품은 음성이어야한다.
  • 면 법선이 다면체를 가리 키도록 정의한 경우 모두 내적 제품이어야합니다.

각 무작위 지점이 아니라 볼륨이 움직일 때 특성 평면을 재 계산하면됩니다.

거기에는 훨씬 뛰어난 알고리즘이있을 수 있으며 해당 토론은이 질문과 답변의 범위를 벗어납니다. 이 알고리즘은 내가 연구를하지 않아도 될 수 있으며 아마도 버블 정렬만큼 좋다.

+0

나는 같은 대답을 게시하는 과정에 있었다 : –

+0

우리는 처벌을위한 대식가. –

+0

나는 너에 대해 잘 모르지만 나는 그 일을 즐겁게하고있다 ... –

관련 문제