WikiDer > Ненулевое правило
В двухмерном компьютерная графика, то правило ненулевой обмотки является средством определения того, точка попадает в замкнутую кривую. В отличие от аналогичных четно-нечетное правило, он полагается на знание направления штриха для каждой части кривой.
Для данной кривой C и данной точки P: построить луч (прямую линию), идущий от P в любом направлении к бесконечности. Найдите все пересечения C с этим лучом. Подсчитайте число витков следующим образом: для каждого пересечения по часовой стрелке (кривая, проходящая через луч слева направо, если смотреть со стороны P) вычтите 1; для каждого пересечения против часовой стрелки (кривая, проходящая справа налево, если смотреть со стороны P) добавьте 1. Если общее число витков равно нулю, P находится за пределами C; в противном случае он находится внутри.
В номер намотки фактически является подсчетом того, сколько полных оборотов против часовой стрелки («витков») кривая делает вокруг точки P без удвоения. (Если бы P был гвоздем, а C - отрезком веревки с петлей, попробуйте потянуть какую-то часть веревки в сторону от гвоздя: она либо освободится, либо будет несколько раз намотана на гвоздь. Некоторые реализации вместо этого увеличивают количество оборотов по часовой стрелке, так что переходы по часовой стрелке получают +1, переходы против часовой стрелки - -1. Результат тот же.
Одно формальное определение числа витков точки P относительно кривой C (где P не лежит на кривой) выглядит следующим образом:
Рассмотрим точку Q, которая проходит один раз вокруг C. Конечная точка вектора от P до Q после нормализации движется по единичной окружности с центром в P. Если мы представим след этой конечной точки как резинку, и пусть полоса сжимается. , он будет обернут вокруг круга несколько раз. Номер намотки - это количество витков (для витков по часовой стрелке номер намотки отрицательный).[1]
В SVG Стандарт векторной компьютерной графики по умолчанию использует правило ненулевого значения при рисовании полигонов.[2]
Смотрите также
использованная литература
- ^ Джеймс Д. Фоули, Андрис Ван Дам, Стивен К. Фейнер и Джон Ф. Хьюз (1996) Компьютерная графика: принципы и практика п. 965. Эддисон-Уэсли. ISBN 9780201848403
- ^ [1], w3c.org, получено 2019 03 28
внешняя ссылка
Этот компьютерное программирование-связанная статья является заглушка. Вы можете помочь Википедии расширяя это. |