【问题标题】:Find coordinate by angle按角度查找坐标
【发布时间】:2010-03-26 19:37:40
【问题描述】:

我正在 XNA 中开发绘制随机路径的应用程序。不幸的是,我与图形脱节,所以我有点卡住了。我的应用程序需要执行以下操作:

  1. 从我的原点 (0,0) 随机选择一个角度,这很简单。
  2. 相对于原点画一个圆,距离 16 像素(或我指定的任何距离),以上面找到的角度。

(请原谅我可怕的 Photoshop)

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

(16,16) 处的第二个圆圈表示距离我的原点 16 像素的 45 度角。

我想要一个方法,在该方法中我传递我的距离和角度,返回一个要绘制的点。即

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

我知道这很简单,但是很遗憾,我对绘图非常陌生。有什么帮助吗?

谢谢, 乔治

【问题讨论】:

    标签: c# graphing


    【解决方案1】:

    如果角度以度为单位,请先执行:

    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像素。

    【讨论】:

      【解决方案2】:
      private Point GetCoordinate(float angle, int distance)
      {
        float x = cos(angle) * distance;
        float y = sin(angle) * distance;
        return new Point(x, y);
      }
      

      请注意,三角函数可能采用弧度。如果您的角度以度为单位,则除以 180/Pi。

      【讨论】:

        【解决方案3】:

        一般:

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

        其中d是到原点的距离,theta是角度。

        【讨论】:

          【解决方案4】:

          了解Pythagorean Theorem。那么this thread 应该会为您提供更具体的详细信息。

          【讨论】: