【问题标题】:C# - generating points along a fraction of a circles circumferenceC# - 沿圆周的一小部分生成点
【发布时间】: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


【解决方案1】:

你需要转换成弧度

for (int angleDegrees = 120; angleDegrees <= 240; angleDegrees += 5)
{
    double angleRadians = angleDegrees / 180 * Math.PI;
    int X = (CentreX + (Radius * Math.Cos(angleRadians));
    int Y = (CentreY + (Radius * Math.Sin(angleRadians));

...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多