Чому сусідні трикутники ніколи не перекриваються, коли растровані?


11

Вибачте за наступне запитання Noob, я просто ніде не можу знайти задовільної відповіді ...

Коли я представляю простий квадратик, орієнтований на вісь, складений із двох трикутників, я не розумію, чому на діагональному краю, де ці трикутники зустрічаються, ніколи не зустрічаються видимі артефакти. Деякі з цих пікселів мають бути в обох трикутниках, правда? Отже, якщо мій фрагмент завжди випромінює частково прозорий колір - 50% чорного кольору, - то чи не має бути помітна темна діагональна лінія в отриманому квадраті?

Очевидно, це здорово, що це не реальна проблема, яку треба кодувати навколо, я просто не розумію, чому це не так. Яка магія графічного процесора змушує це завжди працювати?

Відповіді:


10

Це та сама проблема, яку обговорювалося у розділі Що таке вибіркові прогалини під час перетворення скану?

Коротко, растерізація - принаймні, з більшістю апаратних систем - тестує в одній "нескінченно малої" точці для кожного пікселя, щоб визначити, чи знаходиться цей піксель всередині заданого трикутника.

Якщо точка вибірки лежить саме на межі, то в програму вступають додаткові правила розриву зв’язків, які часто називають «правилами заповнення». Зазвичай вони будуть чимось еквівалентними, скажімо, вважати лише точки ребер у верхньому / лівому ** краях трикутника "всередині".

** Інші правила доступні ;-)


Так, я просто шукав цю відповідь
joojaa

1
Відповідний уривок із Чорної книги: jagregory.com/abrash-black-book/…
bblack

Дуже дякую! Це своєрідно має сенс, і ця чорна книга теж виглядає як чудовий ресурс
Рубін Скреттон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.