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

我的笔记本电脑上有一个摄像头。它的世界坐标是(0,0,0)。我有一个人用他们虹膜中间的3D位置和3D凝视向量看着相机。我试图向凝视向量的方向投射光线,它与我的平面(笔记本电脑的屏幕)相交。我期望的输出是一个坐标,它在z=0时与屏幕相交

我已经试过了[https://stackoverflow.com/questions/5666222/3d-line-plane-intersection](这个)代码(numpy python的答案)但我不知道如何定义我的平面或平面法线

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)
参数

  • 光线方向=三维凝视向量
  • 光线原点=光线原点的坐标
  • 平面法线=平面法线
  • 平面点=平面上的点