Помогите понять это? - PullRequest
       13

Помогите понять это?

0 голосов
/ 21 августа 2010

У меня есть этот алгоритм, который я нашел здесь, только одна вещь меня озадачивает:

    Clear the stencil buffer to 1.
    Pick an arbitrary vertex v0, probably somewhere near the polygon to reduce floating-point errors.
    For each vertex v[i] of the polygon in clockwise order:
        let s be the segment v[i]->v[i+1] (where i+1 will wrap to 0 when the last vertex is reached)
        if v0 is to the "right" of s:
            draw a triangle defined by s, v[i], v[i+1] that adds 1 to the stencil buffer
        else
            draw a triangle defined by s, v[i], v[i+1] that subtracts 1 from the stencil buffer
    end for
    fill the screen with the desired color/texture, testing for stencil buffer values >= 2.

By "right of s" I mean from the perspective of someone standing on v[i] and facing v[i+1]. This can be tested by using a cross product:

cross(v0 - v[i], v[i+1] - v[i]) > 0

То, что меня смутило, было то, где мне нужно нарисовать треугольник, определенный S, V [i], V [i + 1].Если S - это сегмент v [i] -> v [i + 1], то как это возможно?

Спасибо

Ответы [ 3 ]

1 голос
/ 21 августа 2010

Если я правильно помню, нужно нарисовать треугольники v0 - v [i] - v [i + 1]

0 голосов
/ 21 августа 2010

Да, это похоже на ошибку, поскольку s является сегментом, определенным как v [i] и v [i + 1] . Это имело бы смысл в контексте рисования вогнутого многоугольника. Перейти с v0, v [i], v [i + 1] .

0 голосов
/ 21 августа 2010

Если я правильно прочитал ваш пример, s - это сегмент между двумя вершинами, которые являются краем треугольника. Так что он «обходит» треугольник по часовой стрелке, заполняя вершины.

«Обмотка» - по часовой стрелке или против часовой стрелки - определяет нормаль треугольника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...