【问题标题】:In C#, How can I find the distance between the point and center of a circle?在 C# 中,如何找到点和圆心之间的距离?
【发布时间】:2016-06-10 21:44:45
【问题描述】:

我目前正在想出一个解决方案来找到圆的点和圆心的距离。

我必须将以下方法添加到我的 Circle 类中,它给定另一个点的 x 和 y 坐标,该方法返回该点是否在 Circle 的范围内。

我认为要以中心点和半径完成圆的绘制,我将必须绘制另外两个点,一个在圆内,一个在圆外。如何确定哪个点在圆内,哪个点在圆外?

我问的是两点到圆心的距离。

这是我目前编写的代码。

public bool Contains(float px, float py)
        {
            (Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2)) < (d * d);
            return mContains;
        }

【问题讨论】:

标签: c#


【解决方案1】:

好吧,如果你有一个属性xyradius 并且你得到一个点(x1, y1),你可以很容易地测试它是否在圆圈内:

bool IsInCircle(int x1, int y1) 
{
    return Math.Sqrt(Math.Pow(x1 - this.x, 2) + Math.Pow(y1 - this.y, 2)) <= this.radius;
}

然后检查你的两个点 - 一个会给true,另一个是false

如果你想要一个获得两个点的函数,你可以只返回一个 int - 如果第一个在内部,则返回 1,如果第二个在内部,则返回 2,如果没有,则返回 0,如果两者都有,则返回 3:

int AreInCircle(int x1, int y1, int x2, int y2) 
    {
        bool a = Math.Sqrt(Math.Pow(x1 - this.x, 2) + Math.Pow(y1 - this.y, 2)) <= this.radius;
        bool b = Math.Sqrt(Math.Pow(x2 - this.x, 2) + Math.Pow(y2 - this.y, 2)) <= this.radius;
        return a && b ? 3 : (!a && !b ? 0 : (a ? 1 : 2));
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-06
    • 2016-07-21
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多