2013-03-30 89 views
1

我已經給了一個簡單的程序來寫在C#中。一些數學已經提供了,所以你不必自己動手。但是,我不喜歡僅僅使用事物而不理解它實際上在做什麼。我已經有一切正常工作。我只是想了解它。畫一顆星 - 實際上正弦和餘弦是指什麼?

例如:

angle = (360.00/8) * PI/180; 
size = 150 
x = 150; 
y = 150; 

然後:

x1 = x + size*cos(angle * 1); 
y1 = y + size*sin(angle * 1); 

我假定上式中所使用的形式爲y = MX + c。與正弦/餘弦等於所述梯度計算座標(米)。但是,參考點是什麼?它計算出每個「楔形」邊上的三角形嗎?我不知道有多大的弧度,這就是爲什麼我有麻煩。輸出

例子:
sample star

+0

正弦和餘弦使星星成爲一個圓。 (如果水平線是真正水平的並且垂直線是真正垂直的,那麼您可以使用sqrt(2)/ 2(帶有加號/減號)作爲cos(角度* 1) – Justin

+0

弧度和度數如下:圓爲2π弧度或360度,半徑爲180度的弧度爲弧度,弧度則定義爲圓周半徑沿圓周(圓弧的2個端點,與圓的中心相連,形成的角度爲1弧度) – Justin

+0

哦,每行的終點的點數是通過在星的中心加上或減去一個數來計算的。cos/sin是計算從你的中心加/減的大小的分數。你的公式一次處理一個座標。 – Justin

回答

3

看起來你只是指定各段的終點。

一個很好的方式來理解正弦和餘弦是通過unit circle。這裏有一張來自維基百科的圖片: enter image description here

要解釋這一點,點可以在圓上的不同位置。這可以用兩種方式來描述。首先是是角度,你也需要知道圈爲1,在這裏,這是什麼年代由單元圓圈意味着半徑。這是談論圈子上一個點的位置的自然方式。此外,雖然,可以描述的Xÿ方面點的位置。如果你這樣做,你會發現X = COS(T)Y = SIN(T)。這基本上是COS的定義,所以沒有很多瞭解,這只是如果在方面的立場是那麼的角度,然後在XY項的位置COS(t)的SIN(t)的

所以看起來你只是指定各段的終點。

如您所知,t可以用度數或弧度表示。弧度在這裏是自然的值,所以最好用弧度來考慮,而這些方程必須用弧度來表達方程。在與人交談時,學位是有用的,但在數學方面,最好用弧度思考。弧度,順便說一句,是弧形的只是周長,所以周圍的單位圓一路是2PI弧度,一半左右是PI弧度等

如果圈不是單位半徑,那麼代替x = cos(t)和y = sin(t),你有x=R*cos(t)y=R*sin(t)。如果該圓形不是以原點爲中心,則有x=x0+R*cos(t)y=y0+R*sin(t)

下面是一些代碼在Python:

from numpy import * 
import matplotlib.pyplot as plt 

n_segments = 8 

angle_step = 2*pi/n_segments 

for i in range(n_segments): 
    angle = angle_step*i 
    xa, ya = cos(angle), sin(angle) # convert the angles into the x,y representation 
    plt.plot(xa, ya, 'ob', markersize=15) 
    plt.plot((0, xa), (0, ya), 'g') # plot the line between the two endpoints 

plt.show() 

enter image description here

我希望這是由現在很清楚,這不是y=mx+b,大約是線。這裏的線是由繪圖程序爲您完成的,您只需提供這些線段的端點。

+0

是的,這裏的大小意味着每一行的大小。換句話說,最高點距離起源,因爲你有e畫8條線,角度代表2pi/8弧度。因爲你必須以不同角度排隊,所以你必須循環計算頂點,然後出現:'x = x0 + sin(angle * i);'這裏我代表一個變量指向你要繪製的線 – 2013-03-30 03:10:00

+0

'你的等式中的「大小」是圓的半徑,即圓上每個點到它的中心的距離。其餘的,我已經編輯了我的答案,以你所建議的形式出現(這些片段是從原點到每個點,而不是從原來通過原點的相反點)。 – tom10

+0

很好的解釋,但我試圖從用戶的角度解釋它是如何從圓理論中得到解釋的。因爲你已經告訴過它了。謝謝@ tom10 – 2013-03-30 03:31:42