粗略计算2点之间的距离

问题描述

| 我想计算两点之间的粗略(近似)距离,以减少计算开销。 我正在使用以下公式计算(x1,y1)和(x2,y2)之间的距离:
Dist = Mod (x1 - x2) + Mod (y1 - y2)
其中,Mod是Modulus运算符,这样Mod(x)= | X |。 这似乎正在工作。 我想知道,如果我错过了什么...     

解决方法

        只要您获得绝对值(如您所说的| X |)并且不使用模函数,那么这将为您提供两点之间的曼哈顿距离 如果那是您想要的,那么您就不会错过任何东西 如果要直线距离,请使用勾股定理。这是sqrt((x1-x2)^ 2 +(y1- y2)^ 2)     ,        三个常用距离的图形表示: (注意:在这三个指标中,这代表半径为4的圆。)     ,        您确定模数运算符正确吗?看来您将MOD用作ABSOLUTE http://en.wikipedia.org/wiki/Modulo_operation 无论如何,正如Mehrdad所说的,使用毕达哥拉斯定理:
Dist = Sqrt( (x1-x2)^2 + (y1-y2)^2 )
    ,        您必须具体说明要计算的距离。 距离公式:给定两个点(x1,y1)和(x2,y2),这些点之间的距离由公式给出: 这是我们在协同坐标几何中用于查找点之间距离的标准公式,并且是MinKowski距离对一维的特化。     ,        您的距离度量标准适合粗略距离。但是(x2-x1)2 +(y2-y1)2将给您实际距离的平方。只要记住这是距离的平方,就会更准确。而且,根据您要在其上实现的体系结构,它可能会更快-乘法所需的时间可能少于模数中分支的时间,或者对于硬件实现而言,所需的时间也很可能相同。您需要确定基准以确保。     ,        如果要比较距离并节省时间,请不要使用距离本身,而应使用其平方:(x1-x2)^ 2 +(y1-y2)^ 2。不要用sqrt。因此,您的距离将与正常距离完全一样,但是很快。 dx = x1-x2和dx2 = dx * dx的计数甚至比采用ABS(您的意思是,不是真正的MOD)还要快,因为最后一个是函数,您必须为此付费。 理论上,ABS距离是正确的距离。但是,如果对您的目标来说很粗糙,它有什么用?     ,        我做了这个算法来计算两点之间的直线距离:
var distance = function(x1,y1,x2,y2) {
            //Distance Horizantally
            var horizontalDistance = 0;
            /Distance Vertically
            var verticalDistance = 0;
            
            if(x1 > x2) {
                horizantalDistance = x1 - x2;
            }
            else {
                horizantalDistance = x2 - x1;
            }
            
            if(y1 > y2) {
                verticalDistance = y1 - y2;
            }
            else {
                verticalDistance = y2 - y1;
            }

            var answer = 0;
            
            if(verticalDistance !== 0 && horizantalDistance !== 0) {
                //Use the Pathagoreum Theorum
                answer = Math.sqrt(verticalDistance + horizantalDistance);
            }
            else if(horizantalDistance === 0) {
                //Use the Vertical Distance
                answer = verticalDistance;
            }
            else if (verticalDistance === 0) {
                //Use the Horizantal distance
                answer = horizantalDistance;
            }
            //Return the answer
            return answer;
        }

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...