【问题标题】:calculate the Euclidean distance between an array in c# with function用函数计算c#中数组之间的欧几里得距离
【发布时间】:2016-01-09 20:37:29
【问题描述】:

我想计算用户输入的点之间的欧几里德距离,所以你可以在这里看到:

static void Main(string[] args)
{
    int numtest = int.Parse(Console.ReadLine());
    int[,] points=new int[10,2];
    for (int i = 0; i < numtest; i++)
    {
        Console.WriteLine("point " +(i+1).ToString()+" x: ");
        points[i, 0] = int.Parse(Console.ReadLine());
        Console.WriteLine("point " + (i + 1).ToString() + " y: ");
        points[i, 1] = int.Parse(Console.ReadLine());
    }
}

public float[] calculate(int[,] points)
{
    for (int i = 0; i <points.Length ; i++)
    {

    }
}

c# 中是否有任何函数可以做到这一点?

我需要数组中所有点之间的每个距离值

【问题讨论】:

  • 是的,C#有乘法和Math.Sqrt,可以结合起来计算这个
  • @luqui 我的意思是一个获取数组并计算所有点之间距离的函数
  • IOW:创建一个float 变量,并在循环遍历两个数组时,将两个元素之间的差的平方添加到变量中。然后在循环之后,取变量的平方根。
  • C#没有内置函数来做这个,你必须自己写。

标签: c# distance


【解决方案1】:

以下是如何实现两个给定点之间的距离计算,以帮助您入门:

int x0 = 0;
int y0 = 0;

int x1 = 100;
int y1 = 100;

int dX = x1 - x0;
int dY = y1 - y0;
double distance = Math.Sqrt(dX * dX + dY * dY);

【讨论】:

    【解决方案2】:

    尝试关注

    public void calculate(double[,] points)
    {
        var distanceArray = new double[points.Length, points.Length];
    
        for (int i = 0; i < points.Length; i++)
            for (int j = 0; j < points.Length; j++)
                distanceArray[i, j] = Distance(points[i, 0], points[i, 1], points[j, 0], points[j, 1]);
    }
    
    public static double Distance(double x1, double y1, double x2, double y2)
    =>  Math.Sqrt(((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)));    
    

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 1970-01-01
      • 2020-06-10
      • 2019-02-24
      • 2016-02-15
      • 1970-01-01
      • 2021-12-08
      • 2012-11-15
      • 2017-07-07
      相关资源
      最近更新 更多