Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.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
Php 如何以编程方式计算直线和平面之间的交点?_Php_Algorithm_Math_3d_Shared Libraries - Fatal编程技术网

Php 如何以编程方式计算直线和平面之间的交点?

Php 如何以编程方式计算直线和平面之间的交点?,php,algorithm,math,3d,shared-libraries,Php,Algorithm,Math,3d,Shared Libraries,我有一个三维空间中平面的公式 -2658985.48304*(x+2658985.48304) -5346635.44099*(y+5346635.44099) +5269212.43874*(z-5269212.43874) = 0 我还有一个三维空间中直线的向量公式 r(t) = ( 4077149.9388, 14675462.7240,-11546186.0029) + t*(-10458715.0981,-27507387.7824,-24192295.8559)

我有一个三维空间中平面的公式

-2658985.48304*(x+2658985.48304)
-5346635.44099*(y+5346635.44099)
+5269212.43874*(z-5269212.43874) = 0
我还有一个三维空间中直线的向量公式

r(t) =   (  4077149.9388, 14675462.7240,-11546186.0029) 
     + t*(-10458715.0981,-27507387.7824,-24192295.8559)

有没有办法用PHP(或其他编程语言)编程计算平面和向量之间的交点?

有。。。您需要通过其法线
n
和属于该平面的任何点
q
来描述您的平面。通过将方程式转换为以下公式,法线很容易:

dot( n , (x,y,z) )  = D 
其中
n
是平面法线。必须通过将2个坐标设置为任意值并计算第3个坐标来计算
q
,但是,如果平面平行于
xy
yz
zx
平面,则需要选择正在更改的坐标。。。所以选择2个abs最小的法线坐标,你会没事的

在您的情况下,法线是直接可见的:

n = (2658985.48304,-5346635.44099,5269212.43874)
因此,您应该为
q
生成
x,z
并计算
y
。为了简单起见,让
x=z=0

t = dot( q-p0 , dp )
p = p0 + t*dp
您已经有了向量形式的行:

p(t) = p0 + t*dp
其中,
p0
是行的起点,
dp
end\u point-start\u point
t
是范围内的标量参数
t=

由此,您可以使用向量数学来获得交点
p

t = dot( q-p0 , dp )
p = p0 + t*dp
但是,您需要检查该点是否在直线内,以便:

t >= 0.0 AND t <= 1.0

t>=0.0和t您希望构建一个小脚本,该脚本允许您计算平面(P)与直线的所有交点,例如,平面将定义为P=3x+2y− z=8和定义为例如x=2t、y=3+2t、z=2t的线。这就是基本的想法?到目前为止你试过什么?向我们展示你的最佳尝试(代码),这样我们就可以帮助你解决任何你可能面临的问题。为什么你认为这条线是一个段,即 t/code >介于0和1之间?一条数学线通常是无限的,我在OP的问题中看不到这样的限制。@Damien:)这在翻译中丢失了。。。在我的语言中,线有不同的含义(线总是线段,我们用(半)轴表示无限长的线)无论如何,注释出这个条件将对无限长的线起作用。。。
| dot ( n , q ) - D | <= 1e-6