arrays - 生成与特定方向正交的两个正交向量

标签 arrays numpy vector orthogonal cross-product

用numpy生成两个正交向量a和b使得两个向量的叉积等于另一个单位向量k的最简单,最有效的方法是什么?

我知道有无数这样的对,只要满足条件axb = k和a.b = 0,对我来说获得哪个对都没有关系。

最佳答案

这样可以:

>>> k  # an arbitrary unit vector k is not array. k is must be numpy class. np.array
np.array([ 0.59500984,  0.09655469, -0.79789754])

要获得第一个:
>>> x = np.random.randn(3)  # take a random vector
>>> x -= x.dot(k) * k       # make it orthogonal to k
>>> x /= np.linalg.norm(x)  # normalize it

要获得第二个:
>>> y = np.cross(k, x)      # cross product with k

并验证:
>>> np.linalg.norm(x), np.linalg.norm(y)
(1.0, 1.0)
>>> np.cross(x, y)          # same as k
array([ 0.59500984,  0.09655469, -0.79789754])
>>> np.dot(x, y)            # and they are orthogonal
-1.3877787807814457e-17
>>> np.dot(x, k)
-1.1102230246251565e-16
>>> np.dot(y, k)
0.0

关于arrays - 生成与特定方向正交的两个正交向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33658620/

相关文章:

C++ 一种返回十进制值作为二进制整数的方法,用 bool 数组表示

java - 如何找到给定整数数组中最长的奇数和子数组? (以最有效的方式)

python - 是否可以将 dtype 设置为现有的结构化数组,或将 "column name"添加到现有数组?

c++ - 声明一些未知精度的 vector

c++ - 从文本文件C++填充对象

c++ - 向数组元素插入一个新值并移动其余元素

python - 年龄分布的 Numpy 梯形分布

python - Numpy:向量化一个集成二维数组的函数

r - 如何将两个相同长度的向量合并为一个在R中也具有相同长度的向量

javascript - 在 Javascript 中按字符串和数字属性对 JSON 数组进行排序