使用圈繪圖

    有時候在實際使用繪圖功能的時候需要使用大量重複的動作,而這些做大量重複的工作是電腦的專長.以下就以上一個範例(G95+DISLIN基本指令操作)為基礎,畫一大堆的圓形

    再進行前需要先介紹一些簡單的數學方法.

在座標軸上,要把直角座標點聯成有關聯的圖形,可以簡單的使用2元方程式做到,但是要用來描述有關圓的規則運動則非常困難.所以常常使用一些轉換的方法以在直角座標畫出有規則的曲線軌跡.所以採用Polar座標系統,Polar座標系統內只有兩個變數角度和長度.

    定義rthitapolar座標系統中的長度和角度,則和直角座標中有以下轉換關係:

     x=r*cos(thita) àx軸投影

     y=r*sin(thita) ày軸投影

我們的目標是要將圓心座標隨回圈做變動,採用的圓心變化方程式是畫圓方程式

如下

小圓是以大圓的圓周軌跡當作它的圓心,假如小圓圓心的座標和半徑定為(x1,y1,r1)x1,y1是隨大圓的圓周方程在變動

要達到這樣的效果,首先要先找出大圓的方程式,由上面的投影轉換關係可以很快的知道,如果

           x=r*cos(thita)

           y=r*sin(thita)

r為一個固定的值,thita0~2pi變動,那麼x,y所留下的軌跡就會是一個圓周

所以將小圓的圓心代換成圓周方程的軌跡,那麼就可以達到如上圖的效果

 

以下開始程式步驟,只需將原始程式稍作修改(G95+DISLIN基本指令操作)

下圖籃圈是全部修改的部份

以下介紹修改流程:

STEP1

增加變數R,R為上面介紹大圓半徑,INTEGER::REAL(8)::也是一種變數宣告,但是使用REAL的變數型態不是整數,(8)則表示精確度到小數點後8

PI是圓周率=3.1415926,thita是上面說明中polar座標的角度

 

STEP2

Pagfll()是一個dislin指令,用來把背景設為自己想要的顏色.在此255是白色

 

STEP3

 

畫圈的兩部分是這個程式的重點,在上面的數學介紹中提到thita,thita可以用來控置圓周的任意點,而我們的目的就是將小圓中心用圓周任一點代換,所以整個關鍵就在控置thita.thita的單位為弧度,由高中數學知道sin(thita),cos(thita)兩函數的值介於-11之間,前面乘上一個係數R則將介於-R~R之間,兩函數又分別代表圓周的x,y座標點,若以x軸上的點為例;thita值從0開始到pi,其函數變化是從R~-R,pi~2pi,其函數值又從-R~R.因此只要將thita值轉為i*pi,那麼就可以週期性的將x值控制在-R~R之間了.在此i0~2之間的分數.所以整個關鍵就變成隨便帶入一堆點進圓周方程式就可以達到我們想要的效果.

   過手按計算機從0開始把每一個分數帶入求每一點的數值以找到座標,不是太聰明的做法,但是程式語言提供了一項重大的功能,0~2的點我們可以命令電腦幫我們一點一點的帶進去,求出所要的圓周.指定要求的越多,得到的就越多.像這樣的方式稱為(因電腦算完上一點就會馬上回頭帶入找下一點)

   在此把0~2間的分數使用i表示,方法很簡單,i除一個值就好了例如i/360,又命令電腦使用回圈從0~360則電腦會給出從0~pi之間的thita,相對的想要叫電腦thita值從0~2PI,那麼就改為i/720.很明顯可以看出這樣可以得到720個點,簡單的說i的值越大,得到的點就越多.

   在上圖程式中i是從0~3600,thita=i/180,因此共有3600個點,thita值從0~20PI.(繞大圓20)

   上圖中do i=0,3600 ;i0開始代入.下面另一個圈end do是用來表示這個回圈到此停止,那麼這個圈就不會去做回圈外的運算.

 

STEP4