Один из методов определения выпуклости многоугольника в трёхмерном пространстве использует повороты и переносы. studfile.net
Алгоритм: studfile.net
- Перенести тело так, чтобы одна из вершин граней оказалась в начале координат. studfile.net
- Повернуть тело относительно начала координат так, чтобы одна из двух смежных выбранной вершине сторон граней совпала с одной из осей (например, с осью x). studfile.net
- Повернуть тело вокруг выбранной оси так, чтобы выбранная грань легла на координатную плоскость (плоскость z=0). studfile.net
- Для всех вершин тела, не принадлежащих выбранной грани, проверить знаки координат, которые перпендикулярны этой грани (в данном случае это координата z). studfile.net
- Если эти знаки для всех вершин совпадают или равны нулю, то тело будет выпуклым относительно выбранной грани. studfile.net
- Если тело выпукло относительно всех своих граней, то оно считается выпуклым, в противном случае — тело не выпукло. studfile.net
Ещё один метод — псевдоскалярное умножение векторов. ru.stackoverflow.com Его применяют поочерёдно к углам многоугольника по или против часовой стрелки. ru.stackoverflow.com В результате получают значение со знаком плюс или минус. ru.stackoverflow.com Если знак для всех углов одинаков, то многоугольник выпуклый. ru.stackoverflow.com