2010-03-26 119 views
2

我正在開發應用程序在XNA中繪製隨機路徑。不幸的是,我與繪圖脫節,所以我有點卡住了。我的應用程序需要執行以下操作:通過角度查找座標

  1. 從我的原點(0,0)中選取一個隨機角度,這很簡單。
  2. 在上面找到的角度處畫出與該原點相距16px(或指定的任何距離)的圓。

(請原諒我可怕經過PHOTOSHOP)

alt text http://www.refuctored.com/coor.png

在(16,16)的第二圓將代表一個45度角從我的原點16個像素的位置。

我想有一個方法,在該方法中,我傳遞了一個距離和角度,返回一個指向圖形的點。即

private Point GetCoordinate(float angle, int distance) 
{ 
    // Do something. 
    return new Point(x,y); 
} 

我知道這很簡單,但很簡單,我非常不熟悉圖形。任何幫助?

謝謝, 喬治

回答

5

如果角度以度爲單位,首先做:

angle *= Math.PI/180; 

然後:

return new Point(distance * Math.Cos(angle), distance * Math.Sin(angle)); 

順便說,在點(16,16)距離原點不是16個像素,但sqrt(16^2 + 16^2)= sqrt(512)=〜22.63個像素。

0

在一般:

x = d * cos(theta) 
y = d * sin(theta) 

其中d是離原點的距離和θ是角度。

1
private Point GetCoordinate(float angle, int distance) 
{ 
    float x = cos(angle) * distance; 
    float y = sin(angle) * distance; 
    return new Point(x, y); 
} 

請注意,三角函數可能需要弧度。如果你的角度是度數,除以180/Pi。