【发布时间】:2018-08-24 20:48:50
【问题描述】:
我有下面的算法,它会在我的程序中为圆的圆周生成一些点,用于碰撞事件。 (据我所知,这非常有效)。
bool Collision_True = false;
for (int Angle = 0; Angle <= 359; Angle += 5)
{
int X = (CentreX + (Radius * Math.Cos(Angle));
int Y = (CentreY + (Radius * Math.Sin(Angle));
Point point = new Point(X, Y);
if (Collision_True == false)
{
Collision_True = Player_Collisions(point);
}
}
return Collision_True;
但是我想更改它,使其仅在圆的底部三分之一处生成点,我尝试更改 for 循环中的值,如下所示:
for (int Angle = 120; Angle <= 240; Angle += 5)
{
...
}
但生成的点仍然围绕圆的完整圆周,而不是仅在底部三分之一处。
有什么想法吗?谢谢。
【问题讨论】:
-
您是否查看过三角函数的输出以了解各种相关输入?
-
角度应该是弧度。您需要从度数转换。
-
当您找到答案时,如果您将 Collision_True = Player_Collisions(point);在 if 块之上,然后让 if 块检查是否为真,然后放一个 return Collision_True;块内的语句
-
已修复,谢谢(只需将其转换为度数并将角度变量设为双倍)
标签: c# algorithm collision-detection geometry