2D和3D空间中计算两点之间的距离
自己在做游戏的忘记了Unity帮我们提供计算两点之间的距离,在百度搜索了下。
原来有一个公式自己就写了一个方法O(∩_∩)O~,到僵尸到达某一个点之后就向另一个奔跑过去

/// <summary>
/// 3维中如何计算两点之间的距离
/// </summary>
/// <param name="p1"></param>
/// <param name="p2"></param>
/// <returns></returns>
private float TwoPointDistance3D(Vector3 p1, Vector3 p2)
{ float i = Mathf.Sqrt((p1.x-p2.x) * (p1.x-p2.x)
+ (p1.y - p2.y) * (p1.y - p2.y)
+ (p1.z - p2.z) * (p1.z - p2.z)); return i;
} /// <summary>
/// 2维中如何计算两点之间的距离
/// </summary>
/// <param name="p1"></param>
/// <param name="p2"></param>
/// <returns></returns>
private float TwoPointDistance2D(Vector2 p1, Vector2 p2)
{ float i = Mathf.Sqrt((p1.x - p2.x) * (p1.x - p2.x)
+ (p1.y - p2.y) * (p1.y - p2.y)); return i;
}
数学公式:
欧氏距离定义: 欧氏距离( Euclidean distance)是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。
在二维和三维空间中的欧式距离的就是两点之间的距离,二维的公式是 
d = sqrt((x1-x2)^+(y1-y2)^) 
三维的公式是 
d=sqrt(x1-x2)^+(y1-y2)^+(z1-z2)^) 
推广到n维空间,欧式距离的公式是 
d=sqrt( ∑(xi1-xi2)^ ) 这里i=1,2..n 
xi1表示第一个点的第i维坐标,xi2表示第二个点的第i维坐标
n维欧氏空间是一个点集,它的每个点可以表示为(x(1),x(2),...x(n)),其中x(i)(i=1,2...n)是实数,称为x的第i个坐标,两个点x和y=(y(1),y(2)...y(n))之间的距离d(x,y)定义为上面的公式. 
欧氏距离看作信号的相似程度。 距离越近就越相似,就越容易相互干扰,误码率就越高
2D和3D空间中计算两点之间的距离的更多相关文章
- sql server2008根据经纬度计算两点之间的距离
		--通过经纬度计算两点之间的距离 create FUNCTION [dbo].[fnGetDistanceNew] --LatBegin 开始经度 --LngBegin 开始维度 --29.49029 ... 
- js通过经纬度计算两点之间的距离
		最近这几天在做地图的时候,获取到目的地经纬度和当前所在位置的经纬度,通过这几个参数,用js代码就能获取到这两点之间的直线距离: function (lat1, lng1, lat2, lng2) { ... 
- Java 根据经纬度计算两点之间的距离
		package xxx.driver.business.utils; /** * <p>Represents a point on the surface of a sphere. (Th ... 
- mysql oracle计算两点之间的距离
		mysql函数: SET FOREIGN_KEY_CHECKS=0; DROP FUNCTION IF EXISTS `getDistance`;DELIMITER ;;CREATE DEFINER= ... 
- IOS计算两点之间的距离
		//广州经纬度 CLLocationCoordinate2D guangZhouLocation; guangZhouLocation.latitude = 23.20; guangZhouLocat ... 
- MySQL实现计算两点之间的距离
		DELIMITER $$ CREATE FUNCTION `calculateLineDistance`(startLng double, startLat double, endLng double ... 
- J - 计算两点间的距离
		Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description 输入两 ... 
- C#面向对象思想计算两点之间距离
		题目为计算两点之间距离. 面向过程的思维方式,两点的横坐标之差,纵坐标之差,平方求和,再开跟,得到两点之间距离. using System; using System.Collections.Gene ... 
- WebGL和ThreeJs学习6--射线法确定3D空间中所选物体
		一.在 threejs 中如何确定下图3D空间中鼠标点击位置的 object 对象? 二.射线法确定步骤及代码 //Three.js提供一个射线类Raycaster来拾取场景里面的物体.更方便的使用鼠 ... 
随机推荐
- VS 代码段 自定义
			<?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http:/ ... 
- 使用面向 iOS 的本机插件扩展
			本文细致探讨了 Xcode(以 iOS 设备为目标)中的 PhoneGap(也称为 Apache Cordova)应用程序本机插件.如果您刚开始接触 PhoneGap 或者需要回顾 PhoneGap ... 
- HDU ACM 1078 FatMouse and Cheese 记忆化+DFS
			题意:FatMouse在一个N*N方格上找吃的,每一个点(x,y)有一些吃的,FatMouse从(0,0)的出发去找吃的.每次最多走k步,他走过的位置能够吃掉吃的.保证吃的数量在0-100.规定他仅仅 ... 
- Filter过滤器实现登录检查
			主要利用filter过滤掉未经登录而直接跳转到非登录访问页面.代码而言的话并不难,只是有几点问题需要注意一下. 1.使用filter需要配置web.xml,如果是/*那么在拦截后的页面会连带jsp页面 ... 
- 原生js获取body
			1. doucumnet.body 2. document.getElementsByTagName("body")[0] 
- C# 标签打印示例 1
			初次写博客,有哪些不足的地方,还请多多指点,给予建议,谢谢! 如若想要源码,请留言. 本实例是在Webservice 中通过excel做模板来打印标签.具体需求是:一个订单一页纸打印4行 ... 
- hdu4296 贪心
			E - 贪心 Crawling in process... Crawling failed Time Limit:2000MS Memory Limit:32768KB 64bit I ... 
- Java中的Clone机制(浅层复制)
			浅层复制代码: import java.util.*; class Int{ private int i; public Int(int ii){i = ii;} public void increm ... 
- JDBC中PreparedStatement和Statement的区别
			共同点: PreparedStatement和Statement都是用来执行SQL查询语句的API之一. 不同点: 在PreparedStatement中,当我们经常需要反复执行一条结构相似的sql语 ... 
- ognl.NoSuchPropertyException(没有对应属性异常)
			ognl.NoSuchPropertyException: com.xie.struts2.tags.modal.Student.sName(没有对应属性异常) at ognl.ObjectPrope ... 
