Unity点到线段的最短距离
抄的Unity的源码
HandleUtility.DistancePointLine 是UnityEditor代码,源码如下,这样就可以在Runtime中运行
注意性能开销!
/// <summary>
/// 计算点到线段的最短距离
/// </summary>
/// <param name="point"></param>
/// <param name="lineStart"></param>
/// <param name="lineEnd"></param>
/// <returns></returns>
public static float DistancePointLine(Vector3 point, Vector3 lineStart, Vector3 lineEnd)
{
Vector3 rhs = point - lineStart;
Vector3 vector3 = lineEnd - lineStart;
float magnitude = vector3.magnitude;
Vector3 lhs = vector3;
if ((double) magnitude > 9.99999997475243E-07)
lhs /= magnitude;
float num = Mathf.Clamp(Vector3.Dot(lhs, rhs), 0.0f, magnitude);
Vector3 v3 = lineStart + lhs * num;
return Vector3.Magnitude (v3 - point);
}
向量计算法:
AB为向量,求C到AB的距离,计算向量AC在向量AB上投影得到AD,可计算DC的长度

性能没问题
float GetPointToLineDistance(Vector3 point, Vector3 start, Vector3 end) {
Vector3 sp = point - start;
Vector3 se = end - start;
Vector3 project = Vector3.Project (sp, se);
Vector3 line = sp - project;
return line.magnitude;
}
俯视角二维
private float GetPointToPlaneDistance(Vector3 point, Vector3 start, Vector3 end) {
point = new Vector3 (point.x, 0, point.z);
start = new Vector3 (start.x, 0, start.z);
end = new Vector3 (end.x, 0, end.z);
Vector3 sp = point - start;
Vector3 se = end - start;
Vector3 project = Vector3.Project (sp, se);
Vector3 line = sp - project;
return line.magnitude;
}
胶囊体计算法:
上面的方法计算量较大,这种是实际项目中用的一种

Unity点到线段的最短距离的更多相关文章
- (点到线段的最短距离)51nod1298 圆与三角形
1298 圆与三角形 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). 收起 ...
- POJ 1584 A Round Peg in a Ground Hole(判断凸多边形,点到线段距离,点在多边形内)
A Round Peg in a Ground Hole Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4438 Acc ...
- POJ - 1584 A Round Peg in a Ground Hole(判断凸多边形,点到线段距离,点在多边形内)
http://poj.org/problem?id=1584 题意 按照顺时针或逆时针方向输入一个n边形的顶点坐标集,先判断这个n边形是否为凸包. 再给定一个圆形(圆心坐标和半径),判断这个圆是否完全 ...
- NEU 1496 Planar map 计算几何,点到线段距离 难度:0
问题 H: Planar map 时间限制: 1 Sec 内存限制: 128 MB提交: 24 解决: 22[提交][状态][讨论版] 题目描述 Tigher has work for a lon ...
- poj1584(判断凸包+求点到线段的距离)
题目链接:https://vjudge.net/problem/POJ-1584 题意:首先要判断凸包,然后判断圆是否在多边形中. 思路: 判断凸包利用叉积,判断圆在多边形首先要判断圆心是否在多边形中 ...
- POJ 1584 A Round Peg in a Ground Hole 判断凸多边形 点到线段距离 点在多边形内
首先判断是不是凸多边形 然后判断圆是否在凸多边形内 不知道给出的点是顺时针还是逆时针,所以用判断是否在多边形内的模板,不用是否在凸多边形内的模板 POJ 1584 A Round Peg in a G ...
- [Processing]点到线段的最小距离
PVector p1,p2,n; float d = 0; void setup() { size(600,600); p1 = new PVector(150,30);//线段第一个端点 p2 = ...
- sgu 1348 Goat in the Garden 2【点到线段的距离】
链接: http://acm.timus.ru/problem.aspx?space=1&num=1348 http://acm.hust.edu.cn/vjudge/contest/view ...
- arcgis engine计算点到线的最短距离
IProximityOperator接口用于获取两个几何图形的距离,以及给定一个Point,求另一个几何图形上离离给定点最近的点.IProximityOperator接口的主要方法有:QueryNea ...
- Peter and Snow Blower CodeForces - 613A (点到线段距离)
大意: 给定多边形, 给定点$P$, 求一个以$P$为圆心的最小的圆环包含整个多边形. #include <iostream> #include <cmath> #define ...
随机推荐
- vue3 基础-表单元素双向绑定
通常是在 form 表单相关的场景中会用到双向绑定相关, 核心是 v-model 的应用. input 输入框 <!DOCTYPE html> <html lang="en ...
- Java 注解使用教程
简介 Java 1.5 引入了注解,现在它在 Java EE 框架(如 Hibernate.Jersey 和 Spring )中被大量使用.Java 注释是该语言的一个强大特性,用于向 Java 代码 ...
- flutter系列(一)----- 开发环境搭建
flutter刚刚出来的时候,当时前公司团队使用React Native开发出来项目刚刚上线半年多.当时RN刚刚出来的时候,也是相当的火爆.公司也是紧跟时代的潮流.果断使用RN做了新项目,RN出来的时 ...
- 阅读类元服务开发笔记---week1
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- 异步日志监控:FastAPI与MongoDB的高效整合之道
title: 异步日志监控:FastAPI与MongoDB的高效整合之道 date: 2025/05/27 17:49:39 updated: 2025/05/27 17:49:39 author: ...
- Spring注解之获取自定义注解信息
目录 前言 由反射获取自定义注解 结束语 前言 在了解了自定义注解的入门知识后,以实践的形式,介绍一下通过反射技术获取自定义注解的常用API,例如如何获取自定义注解的成员变量值等等. 由反射获取自 ...
- oracle的递归写法:地区层级
前言 mysql的递归看我另一篇博文:https://www.cnblogs.com/daen/p/17252369.html 表结构 数据 查询子节点 示例 SELECT cx1.* FROM PH ...
- LLM 输出配置 (LLM output configuration)
1.概述 大型语言模型(LLM)的输出行为可以通过多种配置参数进行精细控制.这些参数共同决定了模型生成文本的质量.风格和多样性.理解这些配置选项及其相互作用对于有效使用LLM至关重要. 2.输出长度 ...
- linux服务器常用硬件查询操作
查看服务器内存条数 [root@test ~]# dmidecode |grep -P -A5 "Memory\s+Device" |grep Size |grep -v Rang ...
- Opencv学习:使用Opencv对图象进行抠图和滤镜处理,实现“你的名字”动漫图片效果
最近接到了一个坑爹题目,是这么要求的: 仿照 <你的名字>,对天坛图像.src.jpg进行处理.要求 (一)背景(天空)分割,替换后再融合 在自然界的图片中,很难出现动漫中大多大多的云彩. ...