'проверка на столкновение с отрезками
Private Function getIntersect(rayX As Single, rayY As Single, sectorX As Integer, sectorY As Integer) As Long
Dim Vector1 As New Vector, Vector2 As New Vector, VectorAct As New VectorActions, arrSegs() As Variant, _
countSegs As Integer, X1 As Single, X2 As Single, Y1 As Single, Y2 As Single, scalarProd As Single, crossProd As Single
arrSegs() = Config.Map.Value
For countSegs = 1 To UBound(arrSegs(), 1)
If arrSegs(countSegs, 5) = sectorX And arrSegs(countSegs, 6) = sectorY Then
X1 = arrSegs(countSegs, 1)
Y1 = arrSegs(countSegs, 2)
X2 = arrSegs(countSegs, 3)
Y2 = arrSegs(countSegs, 4)
Vector1.createVector rayX, rayY, X1, Y1
Vector2.createVector rayX, rayY, X2, Y2
Set VectorAct.Vector1 = Vector1
Set VectorAct.Vector2 = Vector2
scalarProd = VectorAct.getScalarProd
crossProd = VectorAct.getCrossProd
If scalarProd <= 0 And (crossProd > -1 And crossProd < 1) Then
getIntersect = countSegs
Exit Function
End If
End If
Next
End Function
Советую ещё этот канал посмотреть (:
Больше всего впечатлило видео про рейтрейсинг.
Удивительно, что я это не видел:)
Зачем лучи, люди давно придумали zбуфер. Все эти ваши лучи просят ти2080, а zбуфер работал с 80х годов. От направления взгляда составляем список отрезков попадающих нам в экран и рисуем их, делая проверку в zбуфере. Для сложных уровней фигачим разделение на комнаты и порталы, чтобы лишнее не проверять(привет квака1)
До этого мне еще далеко) изучаю, так сказать, все с истоков
Когда-нибудь я и до этого дойду
Комментарий недоступен