《3D 数学基础》几何检测-最近点
目录
1. 直线上的最近点
2. 射线上的最近点
3. 点到平面的距离
4. 圆或球上的最近点
5. AABB上的最近点
1. 直线上的最近点

q'是距离q的最近点,也就是q在直线上的投影。
其中p是直线上的点(向量表示),n是直线的法向量(单位向量),d是直线到原点的距离。
2. 射线上的最近点

其中p_org是起始点,d是单位向量,t是自变量,可以无限大。

(1)先求自变量t, 点乘v·d结果就是t,因为v在d方向的投影就是点乘;
(2)带入公式p(t) = p_org + td即可求得q'=p_org + (d·(q-p_org))d。
3. 点到平面的距离

其中q是平面外的点,平面公式是q·n=d. p是平面上的点,n是法向量。
注意:和直线上的最近点公式是一样的。
4. 圆或球上的最近点

已知球心c和半径r,求q在球面的投影点q' 。d是c-q,其中加粗都是向量表示的点坐标。b是q到q'.
5. AABB上的最近点
AABB(Axis-Aligned Bounding Box,轴对齐的包围盒)是一个在三维空间中常用于表示物体边界的几何形状,通常由两个对角点(最小点和最大点)定义。要找到空间中的点到AABB上的最近点,可以使用以下方法:
-
检查点是否在AABB内部:
- 如果点在AABB内部,那么点本身就是AABB上的最近点。
-
检查点是否在AABB的某个坐标轴上的区间内:
- 对于每个坐标轴(x、y、z),检查点的坐标是否在AABB的最小坐标和最大坐标之间。如果是,那么点在该坐标轴上的投影就是AABB上的最近点。
-
否则,找到点到AABB上的最近点:
- 对于每个坐标轴,如果点的坐标小于AABB的最小坐标,则将点的坐标设置为AABB的最小坐标;如果点的坐标大于AABB的最大坐标,则将点的坐标设置为AABB的最大坐标。
- 现在,点的坐标就分别被截断到了AABB的各个坐标轴上的区间内,这就是AABB上的最近点。
import numpy as npdef closest_point_to_aabb(point, aabb_min, aabb_max):closest_point = np.copy(point)for i in range(len(point)):# Check if point coordinate is outside AABBif point[i] < aabb_min[i]:closest_point[i] = aabb_min[i]elif point[i] > aabb_max[i]:closest_point[i] = aabb_max[i]return closest_point# 示例用法
point = np.array([2, 3, 4]) #
# AABB
aabb_min = np.array([0, 0, 0])
aabb_max = np.array([5, 5, 5])closest = closest_point_to_aabb(point, aabb_min, aabb_max)
print("最近点:", closest)
待续。。。
参考:35.几何检测_哔哩哔哩_bilibili
相关文章:
《3D 数学基础》几何检测-最近点
目录 1. 直线上的最近点 2. 射线上的最近点 3. 点到平面的距离 4. 圆或球上的最近点 5. AABB上的最近点 1. 直线上的最近点 q是距离q的最近点,也就是q在直线上的投影。 其中p是直线上的点(向量表示),n是直线的法向量&#x…...
动态规划 -背包问题-详解
问题 注:大佬对此类问题的解法:动态规划背包问题总结 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1ÿ…...
Bootstrap-- 媒体特性
最大、最小宽度例子: 横屏与竖屏例子: 宽度比与像素比例子:...
c# 用非递归的写法实现递归
最近写代码碰到了一个bug,就是递归次数太多爆堆栈了,然后就写了一个递归工具来解决这个问题。 using System; using System.Collections.Generic;/// <summary> /// 递归工具 /// </summary> public static class RecursionTool {//递归方式…...
nginx之location的优先级和nginx的重定向
一、nginx之location的优先级和匹配方式(重点) (一)nginx的正则表达式 nginx的正则表达式 符号 含义 ^ 字符串的起始位置(以什么开头) $ 字符串的结束位置(以什么结尾) * 匹…...
【计算机网络】——前言计算机网络发展的历程概述
主页点击直达:个人主页 我的小仓库:代码仓库 C语言偷着笑:C语言专栏 数据结构挨打小记:初阶数据结构专栏 Linux被操作记:Linux专栏 LeetCode刷题掉发记:LeetCode刷题 算法:算法专栏 C头…...
eventfd
1. #include <sys/eventfd.h> int eventfd(unsigned int initval, int flags); //创建eventfd 参数含义: initval:创建eventfd时它所对应的64位计数器的初始值; flags:eventfd文件描述符的标志,可由三种选项组…...
BES耳机空间音频技术实现
BES耳机空间音频技术实现 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?加我微信hezkz17, 本群提供音频技术答疑服务 音响和耳机在空间音频技术上实现方式是不同的 虚拟现实可谓是空间音频技术最具代表性的应 用领域。虽然虚拟现实的起源可以追溯到1 9 6 8年, …...
day27--AJAX(bootstrap之modal,toast;接口文档的一些用法;AJAX原理)
目录 Bootstrap之Modal: 显示和隐藏方法 通过自定义属性: 使用JS来控制弹框: Bootstrap之Toast: 接口文档一些用法: 删除图书: 图片上传: 图片上传步骤: 修改头像…...
【ArcGIS Pro二次开发】(70):杂七杂八的记录
本文用于记录一些使用频率较高但归类繁杂,非系统性的一些代码。 主要方便自己使用和查阅,随时更新。 1、从GDB数据库中打开【FeatureDataset\FeatureClass\Table】 using Geodatabase gdb new Geodatabase(new FileGeodatabaseConnectionPath(new Uri…...
竞赛选题 深度学习 机器视觉 人脸识别系统 - opencv python
文章目录 0 前言1 机器学习-人脸识别过程人脸检测人脸对其人脸特征向量化人脸识别 2 深度学习-人脸识别过程人脸检测人脸识别Metric Larning 3 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 机器视觉 人脸识别系统 该项目…...
【工具】SSH端口转发管理器,专门管理SSH Port Forwarding
转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 开源代码看这里:http://xfxuezhang.cn/index.php/archives/1151/ 背景介绍 有时候需要用到ssh的端口转发功能。目前来说,要么是cmd里手敲指令,但每次敲也太麻烦了;或…...
opencv-phase 函数
计算梯度强度和方向 梯度的方向与边缘的方向总是垂直的。图像中的边缘可以指向各个方向,通常会取水平(左、右)、垂直(上、下)、对角线(左上、右上、左下、右下)等八个不同的方向计算梯度。 角度…...
44.ES
一、ES。 (1)es概念。 (1.1)什么是es。 (1.2)es的发展。 es是基于lucene写的。 (1.3)总结。 es是基于lucene写的。 (2)倒排索引。 (3…...
分权分域有啥内容?
目前的系统有什么问题? 现在我们的系统越来越庞大,可是每一个人进来的查看到的内容完全一样,没有办法灵活的根据不同用户展示不同的数据 例如我们有一个系统,期望不同权限的用户可以看到不同类型的页面,同一个页面不…...
6.Docker搭建RabbitMQ
1、端口开放 如果在云服务上部署需在安全组开通一下端口:15672、5672、25672、61613、1883。 15672(UI页面通信口)、5672(client端通信口)、25672(server间内部通信口)、61613(stomp 消息传输)、1883(MQTT消息队列遥测传输)。 2、安装镜像 docker pull rabbitmq 3、…...
用 docker 创建 jmeter 容器, 实现性能测试,该如何下手?
用 docker 创建 jmeter 容器, 实现性能测试 我们都知道,jmeter可以做接口测试,也可以用于性能测试,现在企业中性能测试也大多使用jmeter。docker是最近这些年流行起来的容器部署工具,可以创建一个容器,然后把项目放到…...
4年软件测试,突破不了20K,太卷了。。。
先说一个插曲:上个月我有同学在深圳被裁员了,和我一样都是软件测试,不过他是平安外包,所以整个组都撤了,他工资和我差不多都是14K。 现在IT互联网已经比较寒冬,特别是软件测试,裁员先裁测试&am…...
机器人控制算法——两轮差速驱动运动模型
1.Introduction 本文主要介绍针对于两轮差速模型的逆运动学数学推导。因为在机器人控制领域,决策规划控制层给执行器输出的控制指令v(车辆前进速度)和w(角速度),因此,我们比较关心,当底层两个驱动电机接收到此信息,如何…...
Queue简介
概念: 队列(Queue)是一种常见的线性数据结构,在Java中用于存储和操作元素序列。它基于先进先出(First-In-First-Out, FIFO)原则,即最早入队的元素首先出队。只能在队尾添加元素,在队…...
从‘密码长度’到‘任意代码执行’:手把手复现攻防世界int_overflow靶场(附Python3 EXP)
从密码长度到系统控制:整数溢出漏洞实战攻防全解析 在网络安全领域,整数溢出漏洞往往因其隐蔽性而被开发者忽视,却可能成为攻击者打开系统大门的金钥匙。本文将带您深入一个典型场景:如何通过精心构造的密码输入,从简单…...
DevEco Studio预览器(Previewer)的3个隐藏技巧:从实时预览到多设备联调
DevEco Studio预览器的3个隐藏技巧:从实时预览到多设备联调 在鸿蒙应用开发中,DevEco Studio的Previewer功能早已超越了简单的UI查看工具。对于已经掌握基础操作的中级开发者而言,如何将这个看似简单的预览窗口转变为高效调试利器࿰…...
Sora-FullStack全栈开发框架:构建AI视频生成应用的工程实践
1. 项目概述:一个全栈式Sora应用开发框架的诞生最近在AI视频生成领域,Sora的横空出世无疑点燃了无数开发者和创业者的热情。但兴奋过后,一个现实问题摆在眼前:如何将Sora这类前沿模型的能力,真正落地成一个稳定、可用、…...
从家庭网络到公网:一次完整的HTTP请求,在Wireshark中看清NAT的“魔术”
从家庭网络到公网:一次完整的HTTP请求,在Wireshark中看清NAT的“魔术” 清晨的阳光透过窗帘洒在书桌上,你像往常一样打开笔记本电脑,在浏览器地址栏输入"www.baidu.com"并按下回车。这个看似简单的动作背后,…...
终极Gerber文件查看器Gerbv:免费开源PCB设计验证的5大优势
终极Gerber文件查看器Gerbv:免费开源PCB设计验证的5大优势 【免费下载链接】gerbv Maintained fork of gerbv, carrying mostly bugfixes 项目地址: https://gitcode.com/gh_mirrors/ge/gerbv 还在为PCB设计文件的查看和验证而烦恼吗?Gerbv这款强…...
2026届最火的降重复率工具横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于学术写作范畴之内,维普降AI已然变成众多学者以及毕业生所聚焦关注的重点。伴随…...
2025届毕业生推荐的AI辅助论文网站解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当下,学术研究越发受到人们的重视,在此种背景状况之下,论…...
Spring Boot Microservices故障排查:10个常见问题及解决方案
Spring Boot Microservices故障排查:10个常见问题及解决方案 【免费下载链接】spring-boot-microservices Spring Boot Template for Micro services Architecture - Show cases how to use Zuul for API Gateway, Spring OAuth 2.0 as Auth Server, Multiple Resou…...
知识图谱冷启动失败率高达68%?NotebookLM构建中的3类隐性数据断层及实时修复方案
更多请点击: https://intelliparadigm.com 第一章:NotebookLM知识图谱构建的冷启动困境本质 NotebookLM 作为 Google 推出的基于文档理解的 AI 助手,其核心能力依赖于对用户上传文档构建结构化知识图谱。然而在初始阶段,系统面临…...
GitHub下载太慢?3分钟学会Fast-GitHub加速插件的终极解决方案
GitHub下载太慢?3分钟学会Fast-GitHub加速插件的终极解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 作为一名…...
