按角度查找坐标

发布于 2024-08-27 06:24:23 字数 577 浏览 7 评论 0原文

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

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

(请原谅我糟糕的照片处理)

替代文字 http://www.refuctored.com/coor.png

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

我想要一种方法,在其中传递我的距离和角度,返回一个点到图形处。即

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

我知道这很简单,但同样,我对绘图非常不了解。有什么帮助吗?

谢谢, 乔治

I am developing in application in XNA which draws random paths. Unfortunately, I'm out of touch with graphing, so I'm a bit stuck. My application needs to do the following:

  1. Pick a random angle from my origin (0,0), which is simple.
  2. Draw a circle in relation to that origin, 16px away (or any distance I specify), at the angle found above.

(Excuse my horrible photoshoping)

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

The second circle at (16,16) would represent a 45 degree angle 16 pixels away from my origin.

I would like to have a method in which I pass in my distance and angle that returns a point to graph at. i.e.

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

I know this is simple, but agian, I'm pretty out of touch with graphing. Any help?

Thanks,
George

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

¢好甜 2024-09-03 06:24:23

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

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

If the angle is in degrees, first do:

angle *= Math.PI / 180;

Then:

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

By the way, the point at (16, 16) is not 16 pixels away from the origin, but sqrt(16^2 + 16^2) = sqrt(512) =~ 22.63 pixels.

君勿笑 2024-09-03 06:24:23
private Point GetCoordinate(float angle, int distance)
{
  float x = cos(angle) * distance;
  float y = sin(angle) * distance;
  return new Point(x, y);
}

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

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

Note that the trigonometric functions probably take radians. If your angle is in degrees, divide by 180/Pi.

ま昔日黯然 2024-09-03 06:24:23

一般来说:

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

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

in general:

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

Where d is the distance from the origin and theta is the angle.

九命猫 2024-09-03 06:24:23

学习毕达哥拉斯定理。那么此帖子应该为您提供更具体的详细信息。

Learn the Pythagorean Theorem. Then this thread should have more specific details for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文