Я вже коментував використання заливної заливки і як це було б краще, оскільки це гнучкіше, але іншим можливим рішенням є сканування. (Я кажу, що це можливо, оскільки це робить багато припущень щодо вашої геометрії, але для конкретного набору та багатьох подібних він би працював.)
Для вашого прикладу з 3 балами: Знайдіть вершину перетину від відрізка v1, v2 та лінії, на якій лежить v3. (Вершина ліворуч від v2) Ми будемо називати цю вершину v4.
For every vertex pair a,b down v1,v4 and v1,v3
For every vertex from a to b
Mark as in the set
For every vertex pair a,b down v3,v2 and v4,v3
For every vertex from a to b
Mark as in the set
Це називається скануванням, оскільки (на зображенні вище) ви одночасно спускаєтесь по червоній та зеленій лініях, а потім червоні та сині лінії одночасно скануєте лінії в процесі руху.
Це рішення було б дуже швидким, якщо існує індексна схема, що часто буває. Інакше знадобиться розрахунок, щоб визначити, яка сусідня вершина лежить на прямій.
Найсмішніше - сканування, барицентричне тестування (у вікні, що обмежує трикутник), і заливка - це всі способи малювання трикутників у 3d-рендерінгу.