如何确定一个点是否在 Lua(或其他语言)的 3d 中其他两个点之间的一条线上?

布里

我在两点 a 和 b(3d 向量)和第三个点 p(来自标量投影)之间有一条线。

我想确定第三点 p 是否在 a 和 b 之间的线上或不在它们之间。

LuaJIT 最有效的算法是什么?其他语言也可以,但效率很重要

感谢 numberZero 我得到了这个代码,它似乎工作

function vec3d:is_between(a, b)
    local ab = b - a
    local ap = self - a
    local lp = ap:len()
    local lb = ab:len()
    local dot = ap:dot(ab) / (lp * lb)
    return lp < lb and dot > 0.95
end
零号

如果您知道这些点位于一条直线上,则可以只计算点积,如果0 ≤ 〈AB, AP〉 ≤ 〈AB, AB〉,则P介于AB之间但请注意,如果P不完全在线,则此方法可能会产生奇怪的结果。但它应该是最快的。

您可能还想计算 2 个值,从PAB 的距离APAB 的(正交)投影后者为AP_AB = 〈AP, AB〉 / 〈AB, AB〉(以AB 为单位,因此如果APAB共线,则AP = AB * AP_AB),前者为ρ(P, AB) = ρ( AP, AB * AP_AB) = |AP - AB * AP_AB| . 因此,如果ρ(P, AB)很小,则您决定如果0 ≤ AP_AB ≤ 1,则P介于AB之间

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何确定一个点是否在其他两个点之间?

如何在MATLAB中的scatter3图中的两个点之间绘制一条线?

如何检查一个点是否在由其他两个点定义的直线上?

如何在postgis中检查两个点是否在同一条线上

如何确定一个事件是否在其他两个事件之间发生

Three.js-如何确定一个点是否在一条线上?

如何在 JavaScript 中的同一条线上绘制两个移动点

如何确定线段上其他两个点之间的点?

在d3js中的两个y轴之间绘制一条线

使用pygame或其他任何工具在python中形成2d数组后画一条线

如何在Swift 3的两个视图之间划一条线?

如何在平行于另一条线的线上找到两个点

在3D数组中设置一个值会使其他值突变

如何获得知道其他两个的 3d 矢量的剩余轴?

R:在ggplot中的两个点之间画一条线

如何计算一个点是否落在网格内的一条线上?

如何向 VSCode 添加 lua/其他语言?

如何在d3中的两个不同坐标系/变换中将两条点与一条线连接起来?

如何在Swift 3中在图像上的两点之间画一条线?

如何确定一个点是否在2D凸多边形内?

我有一个包含4个点的3D图,我希望其中一个成为焦点,而其他三个具有将它们连接到焦点的线

找出LngLat点是否在其他两个点之间

确定一个数字是否由其他两个数字相乘的算法

如何在3D图中用一条线连接多个散射点?

检测一个点是否没有被其他点包围

如何确定R中的时间是否介于其他两个时间之间?

如何将多行熊猫数据帧合并为其他两个行值python3之间的一个?

在pygame中慢慢画一条线,而其他线保持静态

在两个不相交的点集之间画一条线