Как заполнить треугольник с помощью библиотеки LCD5110 Graph?
Добрый день! В настоящее время я пытаюсь создать небольшой 3D-движок, используя C++, Arduino UNO, а также дисплей Nokia 5110 с библиотека. Теперь я успешно нарисовал куб с помощью треугольников, но я хочу заполнить треугольники, чтобы добавить правильное освещение. Мой метод рисования треугольников следующий:
LCD5110 lcd(8,9,10,12,11);
void DrawTriangle(int x1, int y1, int x2, int y2, int x3, int y3) {
lcd.drawLine(x1, y1, x2, y2);
lcd.drawLine(x2, y2, x3, y3);
lcd.drawLine(x3, y3, x1, y1);
}
К сожалению, в моей библиотеке нет методов рисования или заливки треугольников. Я понятия не имею, как заполнить треугольник, поэтому надеюсь на помощь.
Заранее спасибо...
ПРИМЕЧАНИЕ: Пожалуйста, будьте проще.
ПРИМЕЧАНИЕ NR.2: я уже задавал этот вопрос на StackOverflow, но у меня нет хорошего ответа, поэтому я попробую еще раз.
@Leocat, 👍0
Обсуждение1 ответ
Лучший ответ:
После нескольких часов возни я наконец нашел отличный способ заполнять треугольники! Вот так:
for(int x = x1; x<=x2; x++) {
for(int y = y1; y<=y2; y++) {
lcd.drawLine(x3, y3, x, y);
}
}
Отлично!
Если вы добавите недостающий }, он будет работать. Но это не очень эффективно. Если производительность не имеет значения, вы правы: это просто и работает., @Peter Paul Kiefer
- Как отобразить символ º на ЖК-дисплее?
- Потенциометр 10 кОм против резистора 10 кОм на ЖК-дисплее
- Как преобразовать код Arduino во встроенный код C/C++
- Печать содержимого файла SD - карты на ЖК-дисплее
- Это правильный способ мигать символом на ЖК-дисплее?
- Считывание 10-контактного 7-сегментного (2 цифры) сингла Arduino 1
- Первое использование Kuman 3,5-дюймового TFT-экрана модели SC3A-NEW-UK с Arduino
- Как заставить ЖК-дисплей отображать китайские и японские иероглифы?
Вроде никто не отвечает..., @Leocat
Это, скорее всего, потому, что нет хорошего ответа. Если в вашей библиотеке нет метода отрисовки заполненного многоугольника, вы должны нарисовать его самостоятельно. Хорошо, это стандартный алгоритм компьютерной графики, но объяснить его непросто. Например, не хватает времени, чтобы подумать, как объяснить это в нескольких словах. Но я могу указать вам на простой для понимания алгоритм, который называется алгоритмом «заливки». Если я правильно помню, существует реализация C++ под названием FloodSpill., @Peter Paul Kiefer
Я посмотрю на FloodSpill., @Leocat
Как я сказал в комментариях к вашему ответу: если данное решение работает для вас, а производительность не имеет значения, ваше решение намного лучше, чем мое предложение. Но не забудьте добавить } к приведенному ниже коду. Так как это может сбить с толку других, которые хотят использовать ваше решение., @Peter Paul Kiefer