将向量值相乘的最简单方法?
Easiest way to multiply vector values together?
我有一个愚蠢的问题。大约 10 年前,我学习了向量数学 class,我可以发誓我记得一个允许我将向量的值相乘的运算,如下所示:
Vector3 v1 = new Vector3(1, 0, 2)
Vector3 v2 = new Vector3(5, 5, 5)
//Vector3 v3 = SomeVectorOperation(v1, v2) = (1 * 5, 0 * 5, 2 * 5)
现在回顾我所有的笔记,以及我在网上能找到的一切,看起来这根本不是一个常见的操作。当然,我可以编写一个函数来完成它:
Vector3 VectorMult(Vector3 v1, Vector3 v2) {
return new Vector3(v1.x * v2.x, v1.y * v2.y, v1.z * v2.z);
}
到目前为止,我至少发现了一些这样的操作会有所帮助的实例,所以我不确定为什么它不会以某种形式存在。所以,我想我有两个问题:
- 有没有比制作我自己的自定义函数更容易获得我正在寻找的结果的方法?
- 没有像这样的标准向量运算是有原因的吗?
非常感谢您的宝贵时间!
当我们的电气工程师想要听起来很聪明时,我们称之为 Hadamard product,否则它只是“元素级产品”。
你用的是什么库? GLSL?本征? GSL?我们可以在其中寻找如何进行逐元素乘法。 (它通常可以使用 SIMD 加速,因此库提供的优化实现将比您的手动函数更快。)
编辑:Unity 称其为 Vector3.Scale
:“按分量乘以两个向量。”
我有一个愚蠢的问题。大约 10 年前,我学习了向量数学 class,我可以发誓我记得一个允许我将向量的值相乘的运算,如下所示:
Vector3 v1 = new Vector3(1, 0, 2)
Vector3 v2 = new Vector3(5, 5, 5)
//Vector3 v3 = SomeVectorOperation(v1, v2) = (1 * 5, 0 * 5, 2 * 5)
现在回顾我所有的笔记,以及我在网上能找到的一切,看起来这根本不是一个常见的操作。当然,我可以编写一个函数来完成它:
Vector3 VectorMult(Vector3 v1, Vector3 v2) {
return new Vector3(v1.x * v2.x, v1.y * v2.y, v1.z * v2.z);
}
到目前为止,我至少发现了一些这样的操作会有所帮助的实例,所以我不确定为什么它不会以某种形式存在。所以,我想我有两个问题:
- 有没有比制作我自己的自定义函数更容易获得我正在寻找的结果的方法?
- 没有像这样的标准向量运算是有原因的吗?
非常感谢您的宝贵时间!
当我们的电气工程师想要听起来很聪明时,我们称之为 Hadamard product,否则它只是“元素级产品”。
你用的是什么库? GLSL?本征? GSL?我们可以在其中寻找如何进行逐元素乘法。 (它通常可以使用 SIMD 加速,因此库提供的优化实现将比您的手动函数更快。)
编辑:Unity 称其为 Vector3.Scale
:“按分量乘以两个向量。”