已知三个三维空间的点,求法向量的代码
时间: 2023-02-08 14:56:00 浏览: 323
faxiangliang.m 已知散点求三维坐标法向量
假设三个三维空间的点分别为(x1, y1, z1), (x2, y2, z2), (x3, y3, z3)。
求法向量的公式为:
法向量 = ( (y2-y1)*(z3-z1) - (z2-z1)*(y3-y1), (z2-z1)*(x3-x1) - (x2-x1)*(z3-z1), (x2-x1)*(y3-y1) - (y2-y1)*(x3-x1) )
代码实现如下:
```python
def normal_vector(p1, p2, p3):
x1, y1, z1 = p1
x2, y2, z2 = p2
x3, y3, z3 = p3
a = (y2-y1)*(z3-z1) - (z2-z1)*(y3-y1)
b = (z2-z1)*(x3-x1) - (x2-x1)*(z3-z1)
c = (x2-x1)*(y3-y1) - (y2-y1)*(x3-x1)
return (a, b, c)
```
使用的时候像这样调用:
```python
p1 = (0,0,0)
p2 = (1,0,0)
p3 = (0,1,0)
normal = normal_vector(p1,p2,p3)
```
如果需要单位化的话,可以用 numpy 库的 `numpy.linalg.norm` 函数进行归一化:
```python
import numpy as np
normal = normal / np.linalg.norm(normal)
```
阅读全文