Обнаружение треугольной коллизии в 2D пространстве

Как я могу программно обнаружить, касаются ли два треугольника друг друга, учитывая их вершины на 2D координатной плоскости? Это включает касающиеся точки или края, а также если один треугольник полностью в другом.

8
задан qJake 28 March 2016 в 14:24
поделиться

1 ответ

Использовать линию пересечения линии

https://www.topcoder.com/community/data-science/data-science-tutorials/geometry-concepts-line-intersection-and-its-applications/#line_line_intersection

Также рассмотрите возможность того, что какая-то вершина может касаться одной из сторон другого треугольника.

http://www.blackpawn.com/texts/pointinpoly/default.html

function SameSide(p1,p2, a,b)
    cp1 = CrossProduct(b-a, p1-a)
    cp2 = CrossProduct(b-a, p2-a)
    if DotProduct(cp1, cp2) >= 0 then return true
    else return false

function PointInTriangle(p, a,b,c)
    if SameSide(p,a, b,c) and SameSide(p,b, a,c)
        and SameSide(p,c, a,b) then return true
    else return false

Или посмотрите эту ссылку и прокрутите вниз

http://compsci.ca/v3/viewtopic.php?t= 6034

3
ответ дан 5 December 2019 в 18:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: