Подскажу идею: печатай по строкам. Тогда тебе нужно будет для каждой строки определить начало и конец.
Также для упрощения задачи найди "среднюю" вершину треугольника по высоте, и разбей его на два по этой вершине. Если такой нет (т.е. одна из сторон прямоугольника горизонтальна) - задача упрощается.
Пример
# было
*
***
*****
*******
****
*
# верхний полутреугольник
*
***
*****
*******
# нижний полутреугольник
****
*
Таким образом, ты можешь по координатам вершин вычислить шаг - через сколько строк надо уменьшить/увеличить координату начального и конечного столбца. А дальше простой цикл.
ЕМНИП, так делают видеокарты, только с пикселями.
Шаг имеет смысл оставить дробным, чтобы избежать проблем с накапливающейся ошибкой округления.