我有一个 3D 非退化三角形,其正面和背面由顶点缠绕确定。这个三角形与深度d一起描述了一个直角三棱柱*(三角形的背面是“内部”,另一个三角形面是隐式定义的)。
给定第四个点,我需要检查该点是否在棱镜内,如果是,则在给定三角形面的表面上找到离它最近的点。
笔记:
- 这个问题很相似,但不是我想要的。
- *不一定是直角三角形脸。
使用https://stackoverflow.com/a/8361714/15472中的答案来查找一个点是否在三角形上方,您可以先检查它是否在底部三角形上方,然后是否在顶部三角形下方(此处为反向缠绕),如果两者都是正确的,那么您现在知道它介于两者之间。最近的点要么是它在顶部的投影,要么是它在底部的投影。也就是说,如果您知道如何解决我如何才能确定点是否在 3D 三角形内?,你可以轻松解决这个问题。
进行旋转以解决 2D 问题可能在计算上更有效;检查(现在单个)三角形是否包含该点,然后再次旋转以检查到两个投影中的每一个的距离。