728x90
나선형 그리기 Drawing a Spiral
나선이란 반경이 점차 증가하는 원의 형태라고 보면 된다.
각점의 x, y 좌표는 다음과 같이 정의된다.
여기서 R 은 반경을 뜻한다.
아래 명령은 (0,0) 에서 시작하여 30번 회전하는 나선을 만든다.
1 라디안은 원둘레 위에서 반지름의 길이와 같은 길이를 갖는 호에 대응하는 중심각의 크기로 다음과 같다.
1 rad = 180°/π, 따라서 2π = 360°
theta = seq(0, 30*2*pi, by = 2*pi/72)
위식에서 보듯이 각을 나타내는 theta 값은 0 에서 시작해서 2*pi/72 (360°/72 = 5°) 간격으로 30*2*pi (30*360°, 30번 회전할 때까지)가 될때까지 증가한다.
R = theta/max(theta)
위 식에서 보듯이 반경은 theta 값이 커짐에 따라 점차 증가한다. 그래야 나선형이 되는 것이다.
> theta = seq(0, 30*2*pi, by = 2 * pi/72)
> x = cos(theta)
> y = sin(theta)
> R = theta/max(theta)
> plot.new()
> plot.window(xlim = c(-1, 1), ylim = c(-1, 1), asp = 1)
> lines(x * R, y * R)
>
결과는 다음과 같다.
엑셀로 시뮬레이션해보면 다음과 같다(중략).
# | theta=seq(0, 30*2*pi, by=2*pi/72) | cos(theta) | sin(theta) | R=theta/max(theta) | x=R*cos(theta) | y=R*sin(theta) |
0 | 0 | 1.0000 | 0.0000 | 0 | 0 | 0 |
1 | 0.087266463 | 0.9962 | 0.0872 | 0.000462963 | 0.000461201 | 4.03499E-05 |
2 | 0.174532925 | 0.9848 | 0.1736 | 0.000925926 | 0.000911859 | 0.000160785 |
3 | 0.261799388 | 0.9659 | 0.2588 | 0.001388889 | 0.001341564 | 0.000359471 |
4 | 0.34906585 | 0.9397 | 0.3420 | 0.001851852 | 0.001740172 | 0.000633371 |
5 | 0.436332313 | 0.9063 | 0.4226 | 0.002314815 | 0.002097935 | 0.000978283 |
6 | 0.523598776 | 0.8660 | 0.5000 | 0.002777778 | 0.002405626 | 0.001388889 |
7 | 0.610865238 | 0.8192 | 0.5736 | 0.003240741 | 0.002654659 | 0.001858813 |
8 | 0.698131701 | 0.7660 | 0.6428 | 0.003703704 | 0.002837202 | 0.002380695 |
9 | 0.785398163 | 0.7071 | 0.7071 | 0.004166667 | 0.002946278 | 0.002946278 |
10 | 0.872664626 | 0.6428 | 0.7660 | 0.00462963 | 0.002975869 | 0.003546502 |
11 | 0.959931089 | 0.5736 | 0.8192 | 0.005092593 | 0.002920991 | 0.004171608 |
12 | 1.047197551 | 0.5000 | 0.8660 | 0.005555556 | 0.002777778 | 0.004811252 |
13 | 1.134464014 | 0.4226 | 0.9063 | 0.006018519 | 0.002543536 | 0.00545463 |
14 | 1.221730476 | 0.3420 | 0.9397 | 0.006481481 | 0.002216797 | 0.0060906 |
15 | 1.308996939 | 0.2588 | 0.9659 | 0.006944444 | 0.001797354 | 0.006707818 |
16 | 1.396263402 | 0.1736 | 0.9848 | 0.007407407 | 0.001286283 | 0.007294872 |
17 | 1.483529864 | 0.0872 | 0.9962 | 0.00787037 | 0.000685948 | 0.007840421 |
18 | 1.570796327 | 0.0000 | 1.0000 | 0.008333333 | 1.34631E-17 | 0.008333333 |
19 | 1.658062789 | -0.0872 | 0.9962 | 0.008796296 | -0.000766648 | 0.008762824 |
20 | 1.745329252 | -0.1736 | 0.9848 | 0.009259259 | -0.001607853 | 0.00911859 |
21 | 1.832595715 | -0.2588 | 0.9659 | 0.009722222 | -0.002516296 | 0.009390946 |
22 | 1.919862177 | -0.3420 | 0.9397 | 0.010185185 | -0.003483538 | 0.009570943 |
23 | 2.00712864 | -0.4226 | 0.9063 | 0.010648148 | -0.004500102 | 0.0096505 |
24 | 2.094395102 | -0.5000 | 0.8660 | 0.011111111 | -0.005555556 | 0.009622504 |
25 | 2.181661565 | -0.5736 | 0.8192 | 0.011574074 | -0.006638616 | 0.009480926 |
26 | 2.268928028 | -0.6428 | 0.7660 | 0.012037037 | -0.007737258 | 0.009220905 |
27 | 2.35619449 | -0.7071 | 0.7071 | 0.0125 | -0.008838835 | 0.008838835 |
28 | 2.443460953 | -0.7660 | 0.6428 | 0.012962963 | -0.009930206 | 0.008332432 |
29 | 2.530727415 | -0.8192 | 0.5736 | 0.013425926 | -0.010997875 | 0.007700795 |
30 | 2.617993878 | -0.8660 | 0.5000 | 0.013888889 | -0.012028131 | 0.006944444 |
31 | 2.705260341 | -0.9063 | 0.4226 | 0.014351852 | -0.013007195 | 0.006065355 |
32 | 2.792526803 | -0.9397 | 0.3420 | 0.014814815 | -0.013921372 | 0.005066965 |
33 | 2.879793266 | -0.9659 | 0.2588 | 0.015277778 | -0.0147572 | 0.00395418 |
34 | 2.967059728 | -0.9848 | 0.1736 | 0.015740741 | -0.015501604 | 0.002733351 |
35 | 3.054326191 | -0.9962 | 0.0872 | 0.016203704 | -0.016142044 | 0.001412246 |
36 | 3.141592654 | -1.0000 | 0.0000 | 0.016666667 | -0.016666667 | 5.38523E-17 |
37 | 3.228859116 | -0.9962 | -0.0872 | 0.01712963 | -0.017064446 | -0.001492946 |
38 | 3.316125579 | -0.9848 | -0.1736 | 0.017592593 | -0.017325322 | -0.003054922 |
39 | 3.403392041 | -0.9659 | -0.2588 | 0.018055556 | -0.017440327 | -0.004673122 |
40 | 3.490658504 | -0.9397 | -0.3420 | 0.018518519 | -0.017401715 | -0.006333706 |
41 | 3.577924967 | -0.9063 | -0.4226 | 0.018981481 | -0.017203064 | -0.008021921 |
42 | 3.665191429 | -0.8660 | -0.5000 | 0.019444444 | -0.016839383 | -0.009722222 |
43 | 3.752457892 | -0.8192 | -0.5736 | 0.019907407 | -0.016307193 | -0.01141842 |
44 | 3.839724354 | -0.7660 | -0.6428 | 0.02037037 | -0.015604609 | -0.013093822 |
45 | 3.926990817 | -0.7071 | -0.7071 | 0.020833333 | -0.014731391 | -0.014731391 |
46 | 4.01425728 | -0.6428 | -0.7660 | 0.021296296 | -0.013688995 | -0.016313909 |
47 | 4.101523742 | -0.5736 | -0.8192 | 0.021759259 | -0.012480598 | -0.017824142 |
48 | 4.188790205 | -0.5000 | -0.8660 | 0.022222222 | -0.011111111 | -0.019245009 |
49 | 4.276056667 | -0.4226 | -0.9063 | 0.022685185 | -0.009587174 | -0.02055976 |
50 | 4.36332313 | -0.3420 | -0.9397 | 0.023148148 | -0.007917133 | -0.021752144 |
위의 데이터를 엑셀로 그려보면 다음과 같다.
728x90
'프로그래밍 Programming' 카테고리의 다른 글
Information Visualization (6) - R 그래픽 기초 (산포도 Scatter Plot) (0) | 2014.10.17 |
---|---|
Information Visualization (5) - R 그래픽 기초 (사각형을 이용한 나선형 그리기 Spiral Squares) (0) | 2014.10.17 |
오라클 트리거 trigger 현황 보기 (0) | 2014.09.18 |
Information Visualization (3) - R 그래픽 기초 (원 그리기) (2) | 2014.09.12 |
Information Visualization (2) - R 그래픽 기초 (사각형 그리기 예제, 대각선 가진 사각형, 중첩된 사각형) (0) | 2014.09.06 |