반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- git
- 한달리뷰
- 스프레드시트
- navmeshagent
- 스프레드시트 사용법
- 테크스트림
- unity 받기
- 백준
- Mac
- monocraft
- ilviewer
- 알고리즘
- unity
- navmesh
- Rider
- 다른 시트값
- C#
- rider 설치
- 엑셀 내보내기
- 유니티 해상도 고정
- unity 구버전
- cmd키 변경
- 진수 변환기
- 엑셀 가져오기
- ilcode
- 다각형 중점
- 스프레드 시트
- Mac 상단바 아이콘 이동
- 라이더
- 유니티
Archives
- Today
- Total
코스모스 공작소
[Unity] 다각형의 중점 구하기 본문
반응형
안녕하세요! 오늘은 다각형의 중점을 구하는 방법에 대해 알아보겠습니다. 먼저 구하는 공식을 알아보겠습니다.
증명 과정은 중요하지만 다루기엔 좀 길기에 생략하도록하겠습니다.
** 그리고 이번 설명에서는 점이 Z 축 고정으로 가정하고 작업해보도록하겠습니다.
1. 다각형의 중점 공식
먼저 다각형의 중점 공식을 알아보도록하겠습니다.
A는 다각형의 면적이고 n 은 다각형의 꼭지점의 개수입니다. 이제 각 꼭지점의 좌표들을 구하고 필요한 다각형의 면적을 구해야합니다.
2. 다각형의 면적
다각형의 면적 공식입니다. 여기 값들을 위 중점 공식의 A에 들어갈 값입니다.
3. 코드
Vector3 CalculatePolygonCenteroid( Vector3[] pList )
{
Vector3 vCenter = Vector3.one;
float sum = 0;
float temp_x = 0;
float temp_y = 0;
for (int i = 0; i < pList.Length; i++)
{
int j = i + 1;
if (i + 1 >= pList.Length)
{
j = 0;
} // 마지막 항은 다각형의 첫번째 점과 이어야 하므로 따로 처리해줍니다.
float temp = (pList[i].x * pList[j].y) - (pList[j].x * pList[i].y);
temp_x += (pList[i].x + pList[j].x) * temp;
temp_y += (pList[i].y + pList[j].y) * temp;
sum += temp;
}
float temp_sum = (1.0f / sum);
temp_x *= temp_sum;
temp_y *= temp_sum;
vCenter = new Vector3(temp_x / 3f, temp_y / 3f, 0);
return vCenter;
}
4. 결과
빨각색 선이 모이는 점이 중점으로 구해진 점입니다. 여기까지 다각형의 중점을 구하는 공식을 이용해서 중점을 구하는 방법에 대해 알아보았습니다. 감사합니다!
반응형
'프로그래밍 > Unity' 카테고리의 다른 글
[Unity] Asset 내부 파일 유니티 에디터에서 복사하기 (0) | 2023.09.12 |
---|---|
[Unity] 프로젝트 패키지파일로 Export하기 (0) | 2023.09.10 |
[Unity] Unity 구버전 받기 (0) | 2023.07.21 |
[C#] 튜플로 여러개 변수 반환하기, 선언하기 (0) | 2023.07.10 |
[C#] Stopwatch로 타이머를 만들자 (0) | 2023.06.20 |
Comments