도형에 대한 주축 구하기

Python 언어로 정의된 다음과 같은 좌표가 있다.

X축에 대한 좌표값과 Y축에 대한 좌표값 각각으로 구성되다가 전치되어 X, Y 좌표가 쌍을 맺는 형태이다. 위의 좌표를 화면에 표시해 보기 위해 이미지 버퍼를 생성하고 표시한다. 아래처럼..

결과는 아래와 같다.

1번 코드에서 좌표값을 고려해서 충분한 크기(512×512)의 버퍼를 준비한다. 7, 8번 코드는 화면의 정중앙을 원점으로 XY축을 그려주는 것이다. Y축에 대해서는 수학적인 축방향과 컴퓨터 그래픽 화면의 축방향이 반대이므로 10번 람다 함수가 필요하다. 12번 코드에 표시된 반복문을 통해 각 좌표에 대해 빨간색 원으로 표시한다. (꼭 필요한 부분은 아니지만) 입력 데이터를 시각화했으므로 이제 주축을 계산해보자.

1번 코드의 cov, mean은 각각 X축과 Y축을 구성하는 각각의 공분산 그리고 좌표값의 평균이다. 2번 코드의 eVals와 eVects는 공분산 cov에 대한 고유값과 고유벡터이다. 함수 ptsEigenVector는 주축 계산을 위한 함수이다. 이 함수의 쓰임은 아래와 같다.

x1x, y1x, x2x, y2x는 X축에 대한 주축 선분의 시작점과 끝점이고, x1y, y1y, x2y, y2y는 Y축에 대한 주축의 시작점과 끝점이다. 이제 결과를 시각화 해보자.

결과는 아래와 같다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다