Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all articles
Browse latest Browse all 517557

Определить лежит ли точка внутри параллелепипеда - Геометрия

$
0
0
Есть 3 произвольные точки(или прямые выходящие из одной вершины) и 3 нормали к ним, определяющие параллелепипед.
Как можно проверить на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

Но это бажит. Также желательно было бы определить ближайшую точку пересечения отрезка и этого параллепипеда.

Изображения
Тип файла: gif Zz.gif (6.7 Кб)

Viewing all articles
Browse latest Browse all 517557

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>