반응형
참고
- 다각형 좌표의 시계 방향 판단하기, 다각형의 넓이 구하기
세 점의 좌표 Vector3 dot1, dot2, dot3가 주어질 때,
Vector3 a = dot2 - dot1;
Vector3 b = dot3 - dot1;
이라고 하자. 즉,
이다.
이때, 삼각형의 넓이 Area는 아래와 같다.
유니티의 함수로 구현하면 아래와 같이 구현할 수 있다.
float getAreaOfTriangle(Vector3 dot1, Vector3 dot2, Vector3 dot3)
{
Vector3 a = dot2 - dot1;
Vector3 b = dot3 - dot1;
float s
= (a.y * b.z - b.y * a.z) * (a.y * b.z - b.y * a.z)
+ (b.x * a.z - a.x * b.z) * (b.x * a.z - a.x * b.z)
+ (a.x * b.y - b.x * a.y) * (a.x * b.y - b.x * a.y);
return Mathf.Sqrt(s) / 2.0f;
}
이 공식은 Vector a와 b의 외적의 크기의 제곱근이다.
따라서 간결하게 아래와 같이 표현할 수 있다.
float getAreaOfTriangle(Vector3 dot1, Vector3 dot2, Vector3 dot3)
{
Vector3 a = dot2 - dot1;
Vector3 b = dot3 - dot1;
Vector3 cross = Vector3.Cross(a, b);
return cross.magnitude / 2.0f;
}
수식을 입력하는 링크는 아래를 참고하자.
http://www.sciweavers.org/free-online-latex-equation-editor
( a_{x} , a_{y} , a_{z} ) = ( dot2_{x} - dot1_{x}, dot2_{y} - dot1_{y}, dot2_{z} - dot1_{z} )
( b_{x} , b_{y} , b_{z} ) = ( dot3_{x} - dot1_{x}, dot3_{y} - dot1_{y}, dot3_{z} - dot1_{z} )
Area = \frac{1}{2} \sqrt{ ( a_{y} b_{z} - b_{y} a_{z} )^{2} + ( b_{x} a_{z} - a_{x} b_{z} )^{2} + ( a_{x} b_{y} - b_{x} a_{y} )^{2} }
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
'개발 > Unity' 카테고리의 다른 글
유니티 - 평면과 직선의 접점 좌표 구하기 (Intersection of a Line and a Plane) (0) | 2022.05.12 |
---|---|
유니티 - 평면과 점 사이의 최단거리 구하기 (How to Get Shortest Distance between the Plane and the Point) (0) | 2022.05.12 |
유니티 - 콜라이더의 중심과 경계 (center, extents) (0) | 2022.05.11 |
(6) 버튼에 이벤트 연결하기 - 파이 메뉴(Pie / Radial Menu) 만들기 (0) | 2022.05.10 |
(5) 버튼 배치하기 - 파이 메뉴(Pie / Radial Menu) 만들기 (0) | 2022.05.10 |
댓글