Розуміння растерізації та алгоритму художника може допомогти.
Один із способів надання векторної графіки (графіки, визначеної багатокутниками, замість пікселів) до пікселів, - це растеризація полігонів під час виконання алгоритму художника.
Алгоритм художника - це процес знизу вгору, коли ви спочатку кладете фон, а потім малюєте зверху цього фону кожним шаром кольору, поки не досягнете верхнього шару.
Коли ви наносите шар, ви звертаєте увагу на його покриття (зазвичай зберігається в додатковому каналі, альфа-каналі) і використовуєте його для змішування доданого кольору з тим, що вже є.
Якщо ваш новий шар покриває піксель на 50%, а він синій, ви порівнюєте поточний колір цього пікселя із синім та малюєте його замість цього.
Речі стають трохи складнішими, якщо ви створюєте зображення з прозорістю, але не принципово.
Растерізація - це процес перетворення багатокутника в пікселі. Тут ми розробимо, наскільки багатокутник охоплює заданий піксель за допомогою деякої алгебри, а потім обчислимо суму покриття.
Якщо у вас є два краї багатокутника, які збігаються - точно один над одним - але обидва наполовину покривають заданий піксель, те, що відбувається, є проблемою.
Припустимо, нижній багатокутник червоний, а верхній синій, а фон білий.
Спочатку фарбуємо червоний. Це змішується з білим, приводячи до 50% білого 50% червоного.
Потім фарбуємо в синій. Це змішується з 50% білим 50% червоним, і ми отримуємо 25% білий 25% червоний 50% синій. Те ж саме відбувається, якщо червоний і синій зустрічаються посередині, або якщо синій покриває червоний колір повністю.
Але "насправді" синій багатокутник повністю покрив червоний, то чому ми його бачимо? Тому що алгоритм забуває деталі розміщення підпікселів.
Поки є 100% охоплення одного багатокутника, це не проблема.
Тепер ця проблема не є принциповою. Ви можете робити багатокутну візуалізацію за допомогою підходу, що нагадує промінь (де ви переказуєте на коефіцієнт N ^ 2 у точках), або навіть чисто-векторний підхід (де ви віднімаєте блокуючі фігури з геометрії фігур під їх, вирізавши). Ні в якому разі не "проховані" кольори просочуються до вихідного зображення.
Алгоритм художника не єдиний випадок, коли «прихована» геометрія може просочитися. Якщо ви друкуєте непрозорі носії, іноді кольорові шари не ідеально вирівнюються. Тому під шарами просочується, коли верхній шар повинен повністю покривати його.
Оскільки ви не знаєте, як буде виводитися ваше векторне зображення, подібні виїмки дозволяють робити більш надійні зображення проти недосконалих технік друку / відображення.