Есть 3 произвольные точки(или прямые выходящие из одной вершины) и 3 нормали к ним, определяющие параллелепипед.
Как можно проверить наxодится ли точка внутри фигуры?
Я пробовал делать следующее:
Но это бажит. Также желательно было бы определить ближайшую точку пересечения отрезка и этого параллепипеда.
Как можно проверить наxодится ли точка внутри фигуры?
Я пробовал делать следующее:
Код:
Public Shared Function Dot(ByVal v0 As Vector3, ByVal v1 As Vector4) As Single
Return (v0.X * v1.X + v0.Y * v1.Y + v0.Z * v1.Z + v1.W)
End Function
Private Function InTest(ByVal r As Vector3, ByVal p As Vector3, ByVal n As Vector3) As Boolean
If Vect.Dot(r - p, n) > 0 Then
Return True
Else
Return False
End If
End Function
Private Sub test()
Dim a As Vector3 = New Vector3(-1.0F, 1.0F, -1.0F)
Dim b As Vector3 = New Vector3(1.0F, -1.0F, -1.0F)
Dim c As Vector3 = New Vector3(-1.0F, -1.0F, 1.0F)
Dim na As Vector3 = New Vector3(0.0F, 1.0F, 0.0F)
Dim nb As Vector3 = New Vector3(1.0F, 0.0F, 0.0F)
Dim nc As Vector3 = New Vector3(0.0F, 0.0F, 1.0F)
Dim p As Vector3 = New Vector3(0.8F, 0.8F, 0.8F)
Dim t0 As Boolean = InTest(p, a, na)
Dim t1 As Boolean = InTest(p, b, nb)
Dim t2 As Boolean = InTest(p, c, nc)
End Sub