강체 시뮬레이션에서 사용하기 위해, 필자는 (반드시 볼록하지 않은) 오브젝트의 경계를 나타내는 삼각형 메쉬와 내부의 일정한 밀도를 가정 할 때 질량 및 관성 텐서 (관성 모멘트)를 계산하려고합니다.다면체의 질량 및 관성 모멘트를 계산하려면 어떻게해야합니까?
답변
trimesh가 이라고 가정하면 (볼록하지 않든 그렇지 않든) 방법이 있습니다!
dmckee가 지적한 것처럼, 일반적인 접근법은 각 표면 삼각형에서 사면체를 형성 한 다음 명백한 수학을 적용하여 각 tet의 질량 및 순간 기여도를 합산합니다. 속임수는 몸의 표면이 참조 점이 무엇이든간에 볼 때 내부 포켓을 만드는 오목면을 가질 때 발생합니다.
시작하려면 시작점을 선택하십시오 (모델 좌표의 원점이 잘 작동 함). 몸 안쪽에있을 필요도 없습니다. 모든 삼각형에 대해 삼각형의 세 점을 참조 점에 연결하여 사면체를 형성합니다. 위의 트릭은 다음과 같습니다. 삼각형의 표면 법선을 사용하여 삼각형이 참조 점을 향하거나 멀리 향하는 지 알아냅니다 (법선의 내적 부호와 중심을 나타내는 벡터의 부호를보고 찾을 수 있음) 삼각형의). 삼각형이 기준점에서 멀어지는 경우 질량과 모멘트를 정상적으로 처리합니다. 그러나 기준점을 향하고 있으면 (기준점과 솔리드 바디 사이에 빈 공간이 있음을 의미) 해당 테트에 대한 결과를 무효화합니다 .
효과적으로 볼륨의 덩어리를 초과 한 다음 해당 영역이 솔리드 바디의 일부가 아닌 것으로 표시되면 수정합니다. 시체에 많은 수분이 많은 플랜지와 그로테스크 한 주름이 있다면 (그 이미지를 가지고 있습니까?), 볼륨의 특정 부분은 상당한 요소에 의해 과잉 계산 될 수 있습니다. 그러나 메쉬가 있으면 그것을 제거하기에 충분한 시간을 뺍니다 닫은. 이 방법으로 작업하면 객체의 내부 공간 거품을 처리 할 수도 있습니다 (법선이 올바르게 설정되었다고 가정). 또한 각 삼각형을 독립적으로 처리 할 수 있으므로 원하는대로 병렬 처리 할 수 있습니다. 즐겨!
사후 고려 사항 : 해당 내적 제품이 0 또는 그와 비슷한 값을 가질 때 어떤 일이 발생하는지 궁금 할 수 있습니다. 이것은 삼각형면이 평행 (법선이 수직 일 때) 인 경우에만 발생합니다. 어쨌든 작거나 0 인 영역을 가진 퇴화 된 tets에서만 발생합니다. 즉, tet의 기여도를 더하거나 뺀다는 결정은 tet가 아무 것도 기여하지 않을 때만 의문의 여지가 있습니다.
나는 이걸 계산하기위한 상당히 견고한 알고리즘이다.
개체를 선택한 내부 점을 중심으로 tetrahedrons 세트로 분해합니다. (각 삼각형면 요소와 선택된 중심을 사용하는 솔리드입니다.)
각 요소의 볼륨을 검색 할 수 있어야합니다. moment of inertia도 사용할 수 있습니다.
표면이 볼록하지 않으면 오히려 더 문제가됩니다.
필자는 명칭으로 기억이 잘못되어있는 것처럼 보였고, 왜곡은 내가 원한 형용사가 아니 었습니다. 나는 비정규라는 뜻.
물체가 볼록하지 않은 경우 (때로는 그렇다고하더라도), tets 로의 테셀레이션은 단순히 질량을 직접 계산하는 것보다 훨씬 더 복잡합니다. –
@ 리피드 코세이지 : 나는 당신의 말씀을 받아 들일 것입니다. 내가 제공 한 솔루션은 확실히 순진합니다. – dmckee
다단계가 복잡하면 다차원 적분에 자주 사용되는 몬테 카를로 통합을 사용하는 것이 좋습니다.둘러싼 하이퍼 큐브가 필요하며, 주어진 점이 다면체 내부 또는 외부에 있는지 테스트 할 수 있어야합니다. 몬테 카를로 통합이 느려지므로 인내심을 가져야합니다.
위키 피 디아에서 평상시처럼 시작한 다음 추가 링크를 보려면 외부 링크 페이지를 따르십시오.
몬테카를로 통합에 익숙하지 않은 분은 여기에 포함 된 하이퍼 큐브의 한 점을 선택하고 point_total
카운터에 추가합니다. 다면체입니까? 그렇다면 point_internal
카운터에 추가하십시오. 이 많은 (융합 및 오류가 견적을 바인딩을 참조하십시오.) 그런 다음
mass_polyhedron/mass_hypercube \approx points_internal/points_total
.
을 관성 모멘트를 들어, 기준 축에 지점의 거리의 제곱에 의해 각 수를 가중치.
까다로운 부분은 포인트가 내부에 있는지 테스트하는 것입니다. 또는 당신의 다면체 밖에서. 나는 거기에 계산 기하학 알고리즘이 있다고 확신한다.
D. Eberly의 "Game Physics, Second Edition"책에서 다룹니다. chapter 2.5.5 및 샘플 코드는 온라인에서 사용할 수 있습니다. (방금 발견했지만 아직 시도하지 않았습니다.)
또한 다면체가 수식에 대해 볼록 할 필요는 없으며 단지 simple이어야합니다.
니스. 나는 이것을보아야했다. 점이 내부 또는 외부의 도형이라면 이전의 "교차점 계산"접근법을 학습의 연장으로 확장 한 것입니다. – dmckee