我有一个由6个或更多平面组成的画笔/物体组成的地图。
我必须检查给定的线条/光线是否与任何给定的画笔/对象相交。
例如,一个长方体可以由以下6个平面指定(每个平面由3个不在同一行的顶点描述):
(-128 32 128) (128 32 128) (128 0 128)
(-128 0 0) (128 0 0) (128 32 0)
(-128 32 128) (-128 0 128) (-128 0 0)
(128 32 0) (128 0 0) (128 0 128)
(128 32 128) (-128 32 128) (-128 32 0)
(128 0 0) (-128 0 0) (-128 0 128)
Valve的插图: https://developer.valvesoftware.com/w/images/0/0d/Brush_planes.gif
虽然Valve似乎在他们的一些工具中使用相同的格式,但是这个项目没有使用Source引擎,我不能使用任何已经构建的框架来实现这个任务。
我已经有一个线平面交点的工作实现,这样我就可以看到给定的线是否与对象的任何平面相交,但是我无法理解如何有效地检查线是否实际上会与对象(如果线与平面不平行,它最终将与所有这些线相交 - 但是这并不能告诉我关于击中实际对象的线的任何信息)。
非常感谢任何帮助。