타원의 방정식

이 얼마나 오랜만에 써보는 포스팅인지 모르겠습니다. 요즘 이러 저런 일로 바쁘다보니 블로그 관리에 매우 소홀했습니다. 이제 부터라도 짬짬히 시간을 내어.. 일상 업무에서 찾은 내용을 올리도록 노력 해야겠습니다. 해서… 알고보면 매우 간단한 내용이지만 포스팅 하나 올려봅니다.

오늘, 열심히 코드를 작성하던 중에.. 2차원에서 타원을 구성하는 좌표를 뽑아 낼 필요가 있었습니다. Needs는 하나의 타원과 또 다른 하나의 폴리곤을 하나의 도형으로 합(Union)하는 연산이 필요할듯 한데… 타원에 대한 정보는 단순히 중심점과 장반경 그리고 단반경만을 가지고 있음으로 폴리곤에 바로 합할 수 없는지라.. 일단 타원을 구성하는 정점을 이용하여 폴리곤으로 만들고.. 폴리곤과 폴리곤의 합 연산을 통해 원하는 결과를 얻고자 함이였습니다.

간단히 타원의 공식은 인터넷(http://en.wikipedia.org/wiki/Ellipse)을 통해 아래처럼 얻었습니다. 물론 프로그래밍에서 쉽게 사용할 수 있는 매개변수방정식으로 말입니다.

사용자 삽입 이미지
위의 식에서 Xc와 Yc는 타원의 중심입니다. 그리고 A와 B는 각각 X축과 Y축에 대한 타원의 반경이며 각각을 장축과 단축이라고 하겠습니다. 그리고 t는 0도에서 360도까지의 범위입니다. 물론 0도와 360도는 동일하므로 둘 중 하나는 포함되지 않아야 합니다.  마지막으로 ∅는 장축과 X축이 이루는 각도 입니다. 즉 ∅를 통해 기울어진 타원을 구성하는 좌표를 정의할 수가 있습니다. ∅에 대한 이해를 돕기 위해 아래 그림을 참고 하시기 바랍니다.

사용자 삽입 이미지

“안된다”는 말은 언제 써야 하나…

만약 무언가를 하고자할때.. 하고자 하는 일에 대한 가능성을 고민하면서, 되는 이유와 되지 않는 이유로 나눠서 생각하게 된다. 되지 않는 이유보다 되는 이유가 많을 때…. 그 일에 대해 “된다”라고 판단하고 실행에 옮길 것이다. 하지만 말이다… 만약 모든 사람이 이런 논리로 무언가를 생각하고 행동하려 한다면… 이 기타 리스트를 이해할 수 있을까?

기타를 칠 수 있는.. 되는 이유보다 “안된다”는 이유가 치명적인 이 사람은 어떤 마음으로 기타를 잡게 되었을까… 그건.. 머리가 아닌 가슴으로 생각했기에 가능하지 않았을까……. 가슴속 간절하게 기타를 연주하고 싶었던… 간절히 원하는 것을 이루고 싶다면… 말이다.. “안된다”는 이유로 인해 더 이상 망서리지 말고.. 한단계 한단계 결과를 향한 과정을 느껴보면 될 뿐이다… 마치 이 기타리스트가 지금 이노래를 연주하기 위해 격었을 과정처럼 말이다…