Python 如何定义平面以获得平面和光线之间的交点?
我的笔记本电脑上有一个摄像头。它的世界坐标是(0,0,0)。我有一个人用他们虹膜中间的3D位置和3D凝视向量看着相机。我试图向凝视向量的方向投射光线,它与我的平面(笔记本电脑的屏幕)相交。我期望的输出是一个坐标,它在z=0时与屏幕相交 我已经试过了[https://stackoverflow.com/questions/5666222/3d-line-plane-intersection](这个)代码(numpy python的答案)但我不知道如何定义我的平面或平面法线Python 如何定义平面以获得平面和光线之间的交点?,python,graphics,computer-vision,computational-geometry,Python,Graphics,Computer Vision,Computational Geometry,我的笔记本电脑上有一个摄像头。它的世界坐标是(0,0,0)。我有一个人用他们虹膜中间的3D位置和3D凝视向量看着相机。我试图向凝视向量的方向投射光线,它与我的平面(笔记本电脑的屏幕)相交。我期望的输出是一个坐标,它在z=0时与屏幕相交 我已经试过了[https://stackoverflow.com/questions/5666222/3d-line-plane-intersection](这个)代码(numpy python的答案)但我不知道如何定义我的平面或平面法线 import numpy
import numpy as np
def LinePlaneCollision(planeNormal, planePoint, rayDirection, rayPoint, epsilon=1e-6):
ndotu = planeNormal.dot(rayDirection)
if abs(ndotu) < epsilon:
raise RuntimeError("no intersection or line is within plane")
w = rayPoint - planePoint
si = -planeNormal.dot(w) / ndotu
Psi = w + si * rayDirection + planePoint
return Psi
if __name__=="__main__":
#Define screen length and width
#Define plane
planeNormal = np.array([0, 0, 1])
planePoint = np.array([0, 0, 0]) #Any point on the plane
#Define ray
rayDirection = np.array([0.133757, 0.375544, -0.917102])
rayOrigin = np.array([-3.6, -78.2, 393.2])
Psi = LinePlaneCollision(planeNormal, planePoint, rayDirection, rayPoint)
print ("intersection at", Psi)
将numpy导入为np
def LinePlaneCollision(平面法线、平面点、光线方向、光线点、ε=1e-6):
ndotu=平面法线点(光线方向)
如果abs(ndotu)
参数
- 光线方向=三维凝视向量
- 光线原点=光线原点的坐标
- 平面法线=平面法线
- 平面点=平面上的点