【问题标题】:How to find intersection point of a line in a plane in 3D space using MATLAB如何使用MATLAB在3D空间中找到平面中直线的交点
【发布时间】:2017-09-29 02:54:40
【问题描述】:

我有一个已知四个坐标的平原和一个有两个已知坐标的线,如图所示。

平面的四个坐标是

 A = (-5    -5    -8)
 B = ( 15    15    -8)
 C = ( 15    15    12)
 D = ( -5    -5    12)

线的坐标是

M = (1.3978,40,6.1149)
N = 4.3943, 4.8078,0.3551)

在这种情况下线和平面相交,那么如何使用MATLAB在3D空间中找到线和平面的交点? 或者如何检查两者是否相交?

我试图通过关注视频tutorial to find equation of plane from three pointstutorial for finding point where line intersects a plain来寻找解决方案

但就我而言,平面方程为零。所以我很困惑。谁能帮帮我?

提前致谢, 手动

【问题讨论】:

    标签: matlab line cartesian-coordinates


    【解决方案1】:

    我会使用简单的线性代数来找到交点。

    n 与平原法线(您可以将其计算为N = cross(AB, AD) 的向量积,然后单位n = N / |N| 其中|N| = sqrt(dot(N, N)) 是向量N 的长度。

    您可以使用matlabcentral 中的以下函数,该函数也涵盖了所有极端情况(例如当线平行于平面时)并在 cmets 中对其进行描述。

    评论示例:

    A =[ -6.8756 39.9090 10.0000],B =[ -6.0096 40.4090 10.0000],C =[ -6.0096 40.4090 11.0000],D=[ -6.8756 39.9090 11.0000];
    P0 =[ 1.3978 40.0000 6.1149],P1 =[ 4.3943 -4.8078 0.3551];
    

    我不知道你在哪里犯了错误,但我很确定在你的路段之外有一个交叉点。所以你应该得到check=3。这是逐步操作的输出:

    >> AB = B-A
    AB = 0.8660    0.5000         0
    >> AD = D-A
    AD = 0     0     1
    >> n = cross(AB,AD)/sqrt(dot(cross(AB,AD),cross(AB,AD)))
    n = 0.5000   -0.8660         0
    >> [I,check]=plane_line_intersect(n,A,P0,P1)
    I = 1.0961   44.5116    6.6948
    check = 3
    

    它与传入的任何其他点(B、C 或 D)产生相同的结果。check=3 表示有一个交点 I,它位于 P01 段之外。

    作为验证步骤,请注意法线 n 具有Nz = 0,这意味着它垂直于 Z 轴。一条线不会与它相交的唯一方法是它是否平行于 Z 轴(因此矢量 P01 将平行于 Z 并且 Z 分量为零)。

    您的 P01 未与 Z 对齐:

    >> P01 = P1 - P0
    P01 = 2.9965  -44.8078   -5.7598
    

    【讨论】:

    • 当我检查平面点 A =[ -6.8756 39.9090 10.0000],B =[ -6.0096 40.4090 10.0000],C =[ -6.0096 40.4090 11.0000],D=[ -6.8756 39.9090 11] 和。线点 P0 =[ 1.3978 40.0000 6.1149],P1 =[ 4.3943 -4.8078 0.3551],使用你的函数时会产生结果,check=1 and I=[-21.2205 31.6268 -6.3689]。其实没有交集。你能解释一下,为什么会这样吗?
    • 只需要3个点来定义平面,4个点可以不共面。你的是,所以这不是问题。但是,我无法重现您的输出,我得到的结果对我来说看起来很合理。请看一下我通过您的输入得到的输出。希望你能发现一个错误。
    • 这并没有改变我上面写的关于你的例子的内容,但我更正了正常的计算——在非正交 AB 和 AD 的情况下,我最初的计算不是单位向量。在您的示例中,它们是,所以不知道这是否是问题所在。
    • 对不起,线点有变化,P0 =[6.3300 -1.8031 2.5170] 和 P1 =[15.0000 91.9500 -22.4032]。平面点同上。在这种情况下,也检查 = 1,但预期为 3。你能检查一下吗?我需要在矩形平面内找到具有以上角坐标的线的交点。有时,可能是混乱
    • 我点击了以下链接,我想现在我找到了解决方案math.oregonstate.edu/home/programs/undergrad/…非常感谢@isp-zax
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多