如何理解 glm::distance 和 glm::length 背后的向量数学?

Posted

技术标签:

【中文标题】如何理解 glm::distance 和 glm::length 背后的向量数学?【英文标题】:How to understand the vector math behind glm::distance and glm::length? 【发布时间】:2020-07-26 16:02:12 【问题描述】:

我找到了以下页面:https://glm.g-truc.net/0.9.4/api/a00131.html

我无法理解为什么以下两个是等价的......

以下代码:

 glm::vec3 vec = vector1 - vector2;  
 distance = glm::length(vec);

相当于:

 distance = glm::distance(vector1, vector2); 

两个向量相减得到的向量长度如何等于向量之间的距离?

【问题讨论】:

这似乎是一个数学误解,你如何定义两个向量之间的距离? 这就是定义两点 A 和 B 之间的距离的方式。用数学术语 ||(A - B)||。这正是第一个代码的作用。 他们对向量和坐标使用相同的类型。命名简直是糟糕透了。它应该类似于vec = point1 - point2 你应该阅读向量数学和线性代数。 Wikipedia 是一个很好的起点。 程序员通过用从原点到 p 的向量来识别点 p 来混淆事物是很常见的。这减少了代码重复并增加了错误,而程序员传统上更喜欢错误而不是轻微的不便。 【参考方案1】:

此图可能有助于理解此处发生的情况: 我们有两个向量,ab,分别对应您的 vector1 和 vector2。这两者的差向量从ba。它的长度正好等于描述 ab 的两个坐标之间的距离。如果你切换 ab,差向量只会改变方向。

【讨论】:

谢谢你指出这个错误,我有点太快了。我在图表中修复了它。 “-”的“更好”发音比“减号”(实际上并不意味着任何东西)是“来自”。 “a - b”告诉您如何“从 b 到 a”。在这种情况下,我们然后取该路径的长度。这种发音通常很有帮助,而不仅仅是向量。

以上是关于如何理解 glm::distance 和 glm::length 背后的向量数学?的主要内容,如果未能解决你的问题,请参考以下文章

如何理解glm中四元数与向量相乘函数的写法

理解 GLM-openGL 中的相机翻译

了解 glm::ortho() 的参数如何影响投影后的顶点位置

OpenGL - GLM 和 GLSL,它们有何不同?

如何从 glm::quat 和 glm::mat4 中提取偏航俯仰滚动

我的OpenGL学习进阶之旅OpenGL ES开发如何引入GLM(OpenGL Mathematics)库?以及#include< >和#include“ ”的区别