将矢量值相乘的最简单方法是什么?

时间:2017-08-12 22:37:14

标签: unity3d vector linear-algebra vectormath

我有一个愚蠢的问题。大约10年前我参加了一个矢量数学课,并且可以发誓我记得一个操作,它允许我像这样将矢量的值相乘:

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);
}

到目前为止,我至少发现了一些像这样的操作有用的实例,所以我不确定为什么它不会以某种形式存在。所以,我想我有两个问题:

  1. 是否有更简单的方法来获得我正在寻找的结果而不是制作我自己的自定义函数?
  2. 为什么没有像这样的标准矢量操作开始的原因?
  3. 非常感谢你的时间!

1 个答案:

答案 0 :(得分:3)

当我们的电气工程师想要听起来很聪明时,我们将其称为Hadamard product,但除此之外,它只是“元素明智的产品”。

您使用的是哪个库? GLSL?征? GSL?我们可以在其中寻找如何进行逐元素乘法。 (它通常可以使用SIMD加速,因此库提供的优化实现将比手动功能更快。)

编辑:Unity调用此Vector3.Scale:“将两个向量按组件相乘。”