2010-03-26 62 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。