如何理解 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】:
此图可能有助于理解此处发生的情况: 我们有两个向量,a 和 b,分别对应您的 vector1 和 vector2。这两者的差向量从b到a。它的长度正好等于描述 a 和 b 的两个坐标之间的距离。如果你切换 a 和 b,差向量只会改变方向。
【讨论】:
谢谢你指出这个错误,我有点太快了。我在图表中修复了它。 “-”的“更好”发音比“减号”(实际上并不意味着任何东西)是“来自”。 “a - b”告诉您如何“从 b 到 a”。在这种情况下,我们然后取该路径的长度。这种发音通常很有帮助,而不仅仅是向量。以上是关于如何理解 glm::distance 和 glm::length 背后的向量数学?的主要内容,如果未能解决你的问题,请参考以下文章
了解 glm::ortho() 的参数如何影响投影后的顶点位置
如何从 glm::quat 和 glm::mat4 中提取偏航俯仰滚动
我的OpenGL学习进阶之旅OpenGL ES开发如何引入GLM(OpenGL Mathematics)库?以及#include< >和#include“ ”的区别