ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

判断三维点是否在另一个长方体(正方体 或者四方体)内 仅逻辑 没有代码

2022-07-13 11:33:59  阅读:191  来源: 互联网

标签:正方体 两个 三维 && 90 长方体 向量 OP


本文思路来源
https://blog.csdn.net/somethingok/article/details/118712440

1.遇到的问题 就是想判断游戏中某个点是否在长方体盒子内 正方形亦可。球体直接判断半径距离。四方体也适用。

2.我把上文链接中的思路转换成了我自己的思路 借用一下人家的图

3.准备 需要待检测点的坐标 和长方体的8个坐标(我觉得其实只用 以一个顶点延申出去的三条表的点和这个顶点 四个点坐标就够了,当然知道长方体中心点的坐标和长宽高也可以算出这四个点。无非是 长/2,宽/2,高/2 的变化正负而已 不会的话百度或者问人好吧。)

4.下面时思路
(1)长方体 是由三对 互相平行的面组成 我觉得 三个方向 x y z 方向的两个平行面的相交的部分就是长方体。

(2)问题转化成 判断点是否在三对互相平行的面之间了。

(3)判断点是否在两个面之间 我想用这个理论 以这个待监测点 P 为顶点 两个平行面的距离 作为底 组成的三角形
两底角都是锐角 p 一定在两个平面内 如果两个底角有一个是直角 那p在两个面之一的面上。
(4)以长方体一个顶角为基础 延申出去的三条边 可以代表三个面的高了 然后检测 分别以这三条高为底 p为顶点
的三角形,两个底角是否小于(在长方体内)等于(在长方体表面)。
(5)两个向量的点积 可以判断 两个向量的夹角是否小于90 等于90 大于90(这是点积公式自己百度吧)

5.用 4 中的图 我说下最终的公式

点P 在 面ABED 面OCFG内(上) boolean inOnABEDOCFG = 向量AO * 向量AP >=0 && 向量OA * 向量OP >=0
点P 在 面AOGD 面BCFE内(上) boolean inOnAOGDBCFE = 向量OP * 向量0C >=0 && 向量CO * 向量CP >=0
点P 在 面DEFG 面ABCO内(上) boolean inOnDEFGABCO = 向量OG * 向量OP >=0 && 向量GP * 向量GO >=0
三个同时满足 就表示 是在长方体内(上)
inOnABEDOCFG && inOnAOGDBCFE && inOnDEFGABCO

如果不想要在表面的 取消等于0 只要大于0就行了

标签:正方体,两个,三维,&&,90,长方体,向量,OP
来源: https://www.cnblogs.com/cloudHui/p/16473230.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有