'극좌표'에 해당되는 글 1건

  1. 2008.11.24 [수학]극좌표 -1-
2008.11.24 19:50

모두 정확한 지식은 아닐지도 모릅니다...

극좌표란?

위키백과에 의하면....;;


극좌표계(영어: polar coordinate system)란 평면 위의 위치를 각도거리를 이용하여 나타내는 2차원 좌표계를 말한다. 극좌표계는 두 점 사이의 관계가 각이나 거리로 쉽게 표현되는 경우에 가장 유용하다. 직교 좌표계에서는 삼각 함수로 복잡하게 나타나는 관계가 극좌표계에서는 간단하게 표현되는 경우가 많다. 2차원 좌표계이기 때문에 극좌표는 반지름 성분과 각 성분의 두 성분으로 결정된다. 주로 r로 나타내는 반지름 성분은 극(데카르트 좌표에서 원점)에서의 거리를 나타낸다. 주로 θ로 나타내는 각 성분은 0°(직교 좌표계에서 x축의 양의 방향에 해당)에서 반시계 방향으로 잰 각의 크기를 나타낸다.

라고 예쁘게 말을 길게 써주셨군요....

간단히 추려서 말하면

"각도 쎄타(Θ)에 대한 반지름(r)" 이라고 말할수 있겠네요.....(그저 간단히 추린것입니다..)

그러니까....각 쎄타가 x도(또는 라디안) 일때의 반지름 길이...(반지름이라는 말이 좀 이상하군요..)인데요.

예제를 보여드리겠습니다.


그림1 : 각 쎄타(Θ)에 대한 반지름(r)

위 그림에서 변수는 각도 쎄타와 반지름입니다.

이 두가지 변수를 가지고 그래프를 그리게 되는것이지요.

그럼 그래프 그리기를 해봅시다.
[본 액션 스크립트들은 AS2.0(1.0)에서 만들어 졌습니다.]

먼저 변수가 각도 쎄타와, 반지름 r이니 변수를 선언해야겠죠?


var r=0;
var theta = 0;
var i=0;//이넘은 비트맵 데이터를 찍을때 쓸겁니다.

import flash.display.*;//비트맵 데이터를 만들기 위해 임포트~
mybitmap = new BitmapData(400, 400 , true, 0x00000000);//스테이지 사이즈에 맞도록 크기 조정~(400x400)
_root.attachBitmap(mybitmap, 0);//비트맵 장착!

_root.onEnterFrame = function(){//매 프렘마다.
   r = 400*Math.sin(1/theta);//이게 중요합니다. 별표 백개~(바로 아래두줄도 중요합니다.. 별표 200개~)
   _root.mover._x = Math.floor(r*Math.cos(theta)+Stage.width/2)+0.5//점(mover)의 x좌표를 찍습니다.
   _root.mover._y = Math.floor(r*Math.sin(theta)+Stage.height/2)+0.5//점(mover)의 y좌표를 찍습니다.
   theta+=0.05//쎄타값을 계속 증가시킵니다. 그래야 각도에 대한 그래프를 얻을수 있죠.

   _root.attachMovie("dot", "dot"+i, _root.getNextHighestDepth());//무비클립 dot를 복제합니다.
   _root["dot"+i]._x = _root.mover._x//무비클립 dot의 x좌표
   _root["dot"+i]._y = _root.mover._y//무비클립 dot의 y좌표
   if(i<120){//fps를 120으로 설정해 놨습니다. 그런데 무비클립 dot이 만이 생기게 되면 메모리를 많이~잡아먹기 때문에.....프레임저하가 일어납니다... 그래서 매초당 무비클립 dot를 삭제합니다.
       mybitmap.draw(_root);//먼저 무비클립dot를 비트맵에 찍고요~
       for(i=0;i<120;i++){//무비클립 dot를 삭제합니다~
           _root["dot"+i].removeMovieClip();
       }
       i=0;//그리곤 다시 i를 0으로 초기화 해주는거죠.
   }
  i++
}


아래는 예제입니다.

Play 버튼을 누르면 시작됩니다.


여기서 개선점을 발견하게 됩니다...

위에 예제는 '점을 찍기'만 합니다.

 하기만 그래프라는건 무한히 많은 점들의 집합 아닙니까?

그러면 저 플래시 무비가 그래프가 되기 위해서는

첫째, 졸라 오랫동안 나두어서 점을 많이 찍는다.

둘째, 각 쎄타의 증가량을(저 무비에선 0.05입니다.) 작게 줄인다.(0.005수준..?)

셋째, 한점, 한점 찍을때마다 선분을 그어서 그래프 인것처럼 보이는양한다.


첫째는, 너무,,시간이 많이 걸리는 단점이 있습니다.

둘째도 시간이 오래걸립니다. 0.005 를 계속더해서 2파이를 만들어야하기에...;;

셋째가 가장 무난한데...;; 구현하기도 쉽습니다!(moveTo 와 lineTo 를 쓰면 참 쉽죠....ㅋ)


[다음 글에선 라인을 그려서 그래프를 그려 봅시다~]


※참고

우리는 여기서 한가지를 바꿔가며 재미있게 놀수(?) 있습니다.

바로 변수 r에 대한던데요

r에는 함수가 들어갑니다. 사인이나..코사인, 탄젠트....아니면 일차, 이차..등등등...;;

극좌표에서는 사인, 코사인, 탄젠트를 많이 쓰는것 같아요.

그래서 준비 했습니다.

심화 미적에보시면

lim tan(Θ)/Θ = lim sin(Θ)/Θ 라는 걸 알수 있습니다.
Θ->0         Θ->0

바로 탄젠트와 사인의 극한값이 같다는 것인데요...

위에서 만든 무비로 실험하면 극한값이 같다는것을 단번에 눈치챌수 있습니다.

r = 400*Math.sin(1/theta);

위 무비에선 sin을 썻는데요, 이걸 탄젠트로 바꾸고 실행하면 사인으로 그린 그래프와 같게 됩니다.(완전히 같은지는 잘 모르겠습니다.. 완전히 까진 아니더라도, 시간이 차차 흐를수록 일치하겠네요.)

에....재미 없다구요?

그래서 또 준비했습니다.

이번에는 여러가지 기본형태를 띠는 그래프를 그려봅시다.

또,,위키백과에서 찾아보면..


극좌표 방정식

극좌표를 이용하여 곡선을 나타내는 방정식을 극좌표 방정식 또는 극방정식이라고 한다. 보통은 rθ 에 관한 함수로 정의한다. 곡선 위의 점은 (r(θ),θ)로 정의되며 함수 r 의 그래프로 생각할 수 있다. 극좌표 방정식 r(θ)의 형태로부터 대칭성을 추론할 수 있다. 만약 r(−θ) = r(θ) 이라면 곡선은 수평 반경(0° / 180°)에 대하여 대칭이 되며, r(πθ) = r(θ)이라면 수직 반경(90° / 270°)에 대하여 대칭이 되며, r(θα) = r(θ)일 때는 α로 반시계 방향으로 돌린 곳에서 대칭이 된다.

극좌표계의 성질 덕에 많은 곡선이 간단한 극좌표 방정식으로 표현될 수 있으며, 이에 반해 데카르트 좌표로 표현되려면 난해한 곡선이 많이 있다. 극좌표 방정식으로 표현될 수 있는 곡선은 극좌 장미 곡선, 아르키메데스 나선, 달팽이꼴 곡선, 심장형 등이 있다.

아래에 서술된 내용에는 정의역과 치역의 범위의 제한은 없다.



그래서...해봤습니다.

1. 장미 곡선 [r(θ) = acos(kθ + φ0) (φ0는 임의의 상수)]



r = 200*Math.sin(theta*4);

의 그래프 입니다.

또다시...위키백과에 의하면...;;
------
r = a*Math.sin(k*theta)

k홀수일 때는 k개의 꽃잎을 지니며, k짝수일 때는 2k개의 꽃잎을 지닌다. k가 정수가 아닐 때에는 꽃과 비슷한 모양이지만 이때는 꽃잎이 겹쳐 보이게 된다. 즉, 4n + 2개의 꽃잎을 지닌 장미 곡선을 그릴 수는 없다. 변수 a는 꽃잎의 길이를 의미한다.
------
라고 합니다.



2. 아르키메데스 나선 [r(θ) = a + ]

부터느 다음글에 적도록 하지요~;

저작자 표시 비영리 변경 금지
신고
Trackback 0 Comment 0


티스토리 툴바