页面

分类

向量平行快速判定

2018/9/6, by wingfire ; 分类: 计算机技术; 2 comments

向量a・b点积若为0,则相互垂直,但是判断是否平行,则一般需要计算|a||b|,比较耗时。

对于二维向量,可以通过判断a1b2=b1a2,但对于多维向量,要判断 a1/b1=a2/b2=a3/b3=...=an/bn, 考虑到bi可能为0,代码写起来比较麻烦。这里想到的一个办法.

  1. 设i为0
  2. 若ai和bi不都为0, 转4
  3. ++i <n 转2,否则返回true
  4. 若bi为0,return all_of(bi, bn, equal_to(0))
  5. k = ai/bi
  6. return all_of([i -> n], k*bi == ai)

评论

Tony, at 2018/9/8 上午11:44

或者可以用cross product?

wingfire, at 2018/11/20 下午4:06

@Tony cross product是可以的,这里的快速判定也是从叉积推导出来的。区别在于计算性能有差别

添加评论:

 
 the email would not displayed
 

您可以使用 Markdown 语法。

您必须启用浏览器的 JavaScript 功能才能发表评论。