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
подобен полному заполнению области полигона, но это стабильно под маленькими смещениями точек полигона: