2013-03-30 51 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