FillStyle
Определение внутренней части/внешней стороны
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
Наследованный | EvenOdd , или Winding |
Объекты | Значения по умолчанию FillStyle |
---|---|
plot::Polygon2d | EvenOdd |
Для самопересечения замкнутых кривых, FillStyle
определяет, как отверстия обнаруживаются/задаются.
Замкнутые кривые имеют внутреннюю часть и внешнюю сторону. С самопересечением кривых внутренняя часть может иметь отверстия, которые рассмотрены снаружи и не заполнены. Объяснить различие между EvenOdd
и Winding
, мы используем следующие два многоугольника, которые отличаются только по порядку, внутренние точки посещают:
Если построено с FillStyle = EvenOdd
, между двумя нет никакого различия:
Это вызвано тем, что для FillStyle = EvenOdd
, вопрос рассматривается “внутри”, если луч, начинающий с точки и расширяющий к бесконечности, имеет нечетное число пересечений с многоугольником:
С FillStyle = Winding
, однако, треугольники выглядят по-другому друг от друга:
Для FillStyle = Winding
, извилистое количество точки должно быть ненулевым для этой точки, чтобы быть “внутри”. Извилистый номер является числом раз, линия многоугольника на самом деле “обтекает” точку. Это может быть определено путем последовательного рассмотрения всех ребер, подведения углов, под которыми соседние ребра замечены (заботьтесь о знаке его угол!) и деление на 2 π. В нашем примере точка в квадрате в верхнем треугольнике имеет извилистое количество 2, в то время как один в квадрате в более низком треугольнике имеет извилистое количество 0:
FillStyle = Winding
похоже на полное заполнение области многоугольника, но это устойчиво под маленькими смещениями точек многоугольника: