Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL跟踪一对3D线之间的最小距离点_Opengl_3d_Geometry_Pyopengl - Fatal编程技术网

OpenGL跟踪一对3D线之间的最小距离点

OpenGL跟踪一对3D线之间的最小距离点,opengl,3d,geometry,pyopengl,Opengl,3d,Geometry,Pyopengl,我试图在OpenGL中执行以下操作:有两个3D点p1和p2,比如在位置(-1,0,0)和(1,0,0)处。通过这两个点绘制一条三维线。假设两条直线的方向向量都是(0,0,1)。我想跟踪两条线之间最小距离的点,并在这些线围绕点p1和p2围绕随机轴旋转小角度时显示它们 我是OpenGL新手,对线之间最近点的计算应该在哪里进行感到非常困惑。如果通过提供端点绘制两条线,则无法在几何体着色器中进行计算,因为它只能访问一个基本体,而我需要两条线来计算最近的点 我应该如何进行此操作?这不是OpenGL或着色器

我试图在OpenGL中执行以下操作:有两个3D点p1和p2,比如在位置(-1,0,0)和(1,0,0)处。通过这两个点绘制一条三维线。假设两条直线的方向向量都是(0,0,1)。我想跟踪两条线之间最小距离的点,并在这些线围绕点p1和p2围绕随机轴旋转小角度时显示它们

我是OpenGL新手,对线之间最近点的计算应该在哪里进行感到非常困惑。如果通过提供端点绘制两条线,则无法在几何体着色器中进行计算,因为它只能访问一个基本体,而我需要两条线来计算最近的点


我应该如何进行此操作?

这不是OpenGL或着色器的真正工作。在CPU端(你知道一切)进行计算,然后画出结果。OpenGL是一个图形API,而不是一个数学框架!谢谢你的回复。据我所知,线的旋转应用于顶点着色器内部,因此在此之前我不知道两条线端点的位置。您是否建议在发送到着色器之前执行所有操作,包括旋转和最近点计算?与大多数情况一样,有多种可能的解决方案。是的,您可以在GPU上的着色器中执行所有操作。这需要对OpenGL进行一些欺骗,但这是可能的(例如,将GL_线_邻接度输入到几何体着色器中,这将为您提供4个顶点)。但它也要求您重新计算每一帧中的点。或者,您在CPU端执行此操作(即,包括转换),并上传点供GPU绘制。仍然可以使用顶点着色器变换顶点。但是,您可以在两个位置(CPU和GPU)执行此操作。不过,这并不太糟糕。