Я реализую программный растеризатор на C++ и пытаюсь протестировать идею алгоритма заполнения треугольников. По сути, идея состоит в том, чтобы найти координаты самого большого прямоугольника (с точки зрения площади/количества пикселей) внутри указанного треугольника. У меня есть реализация растеризатора треугольника Пинеда, и мне было интересно, приведет ли к ускорению вызов функции заполнения прямоугольника, а затем функции Пинеды для полученных треугольников (меньшие треугольники, оставшиеся после того, как прямоугольник отрезан от исходного треугольника). Логика этого в том, что мне не придется запускать функцию края пикселя внутри этого прямоугольника, что потенциально сэкономит циклы процессора (?). Я даже не уверен, правда ли это, поэтому хотел бы попробовать.
У этой проблемы есть несколько условий. Во-первых, треугольник не ограничивается прямоугольными или равнобедренными углами, он может иметь любые три координаты. Во-вторых, прямоугольник внутри этого треугольника должен быть «вертикальным», то есть его стороны должны быть идеально горизонтальными или вертикальными, т. е. выровнены по пиксельной сетке, чтобы я мог просто вызвать цикл для заполнения этих пикселей, а не вычислять наклон/ градиент.
Нарисуйте то, что я имею в виду.
Я не ищу код как ответ, а просто логику того, с чего мне начать. подходим к этой проблеме.
Подробнее здесь: https://stackoverflow.com/questions/781 ... he-coordin