【问题标题】:Ray - plane intersection射线 - 平面相交
【发布时间】:2014-11-13 23:59:03
【问题描述】:

我有以下问题,即使在互联网上搜索了很长时间,我也无法解决。

如何计算射线中平面的交点?

平面由四点描述:

A (ax, ay, 0)
B (bx, by, 0)
C (cx, cy, 0)
D (dx, dy, 0)

雷有:

Vector3f origin;
Vector3f direction;

现在,我想编写一个检查 HIT 的方法。 有人可以告诉我一个解决方案吗?

public Boolean checkHit(Ray myRay){
.
.
.    
}

谢谢

【问题讨论】:

  • @SlySherZ 谢谢你的回复(我看过的链接),但我不明白,我无法申请我的问题。
  • 你知道三个点定义一个平面,而不是四个。
  • 我知道,但是我能写吗?
  • 在最一般的情况下,azbzczdz为零。您必须从四个点中选择三个来定义一个平面,然后再选择三个点来定义下一个平面。

标签: raytracing plane


【解决方案1】:

一个平面可以由一个单位法向量(nx,ny,nz)和到原点的一个标量距离d来定义,这样平面的方程就是nx*x+ny*y+nz*z=d。您需要将飞机从 3 点转换为这种格式才能继续。如果您不知道如何查找从三个点找到飞机

现在可以通过单位方向向量(ex,ey,ez) 和沿线的某个点指定直线(rx,ry,rz)

  1. 查找产品s=(nx*ex+ny*ey+nz*ez)。如果为零,则没有交集
  2. 求交点到直线上点的距离t=(d-(nx*rx+ny*ry+nz*rz))/s
  3. 交点在c=(rx+ex*t, ry+ey*t, rz+ez*t)

【讨论】:

    猜你喜欢
    • 2012-02-14
    • 1970-01-01
    • 2014-07-21
    • 2014-06-04
    • 2011-08-05
    • 2015-05-22
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    相关资源
    最近更新 更多