roboforum.ru

Технический форум по робототехнике.

anti-aliasing на TFT дисплеях?

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

anti-aliasing на TFT дисплеях?

Сообщение Myp » 08 апр 2016, 11:21

игрался с дисплейчиком китайским, 320х240
всё вроде бы ничего, но отсутствие сглаживания просто убивает.

и если шрифты ещё в принципе можно сделать в виде картинок и с карты памяти подхватывать их, эдакий костыль.
то с графикой полный швах.
Безымянный.jpg


может кто встречал библиотечки которые позволяют использовать сглаживание?
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: anti-aliasing на TFT дисплеях?

Сообщение loox » 08 апр 2016, 12:58

федор Анатольевич
Бригадир телепатов сейчас не может Вам ответить, а нам сирым трудно проникнуть в суть всей технической проблемы дистанционно, может чуть расширите суть проблемы.
Спасибо, младший ученик Бригадира телепатов Loox
loox
 
Сообщения: 326
Зарегистрирован: 26 мар 2008, 12:45

Re: anti-aliasing на TFT дисплеях?

Сообщение Myp » 08 апр 2016, 15:08

на картинке в верхнем посте предельно чётко проиллюстрирована суть проблемы
верхняя линия обычная, нижняя с сглаживанием.
может кто-то сталкивался с библиотеками которые позволяют реализовать сглаживание?

если ты хоть раз пробовал рисовать что-то на графическом экране то ты с этим сталкивался.
вот ярчайший пример отсутствия сглаживания:
Изображение
Изображение

линия отображается в виде отрезков. потому что пикселы на экране слишком большие.
применение сглаживания могло бы радикально исправить ситуацию
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: anti-aliasing на TFT дисплеях?

Сообщение Angel71 » 08 апр 2016, 15:27

какая ещё библиотека? :) в гугле "алгоритм сглаживания", "antialiasing line", "antialiasing curve",... выбирается из кучи реализаций понравившаяся и в имеющейся библиотеке заменяется/добавляется.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: anti-aliasing на TFT дисплеях?

Сообщение Myp » 08 апр 2016, 15:54

вот я и спрашиваю, вдруг кто-то уже это реализовал =)

есть некий http://pd4ml.com/pixelmeister
и к нему бибилиотечка с сглаживанием, а заодно он умеет конвертировать шрифты со сглаживанием :)
правда в нём нет поддержки того экрана который мне давали попользоваться, зато есть другие недорогие)
вот такой вроде поддерживается aliexpress.com/item/Wholesale-1PC-2-2-Inch-240-320-Dots-SPI-TFT-LCD-Serial-Port-Module-Display-ILI9341/1959463785.html
наверно куплю такой экранчик, проще купить подходящий чем в исходниках разбираться)))
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: anti-aliasing на TFT дисплеях?

Сообщение Angel71 » 08 апр 2016, 17:08

давно уже можно было дёрнуть реализацию хоть из второй библиотеки и не ждать с моря погоды.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: anti-aliasing на TFT дисплеях?

Сообщение Myp » 09 апр 2016, 00:12

там ни одного комментария даже :(
Код: Выделить всёРазвернуть
void PixelsAntialiased::drawLineAntialiased(int16_t x1, int16_t y1, int16_t x2, int16_t y2) {

    boolean steep = (y2 > y1 ? y2 - y1 : y1 - y2) > (x2 > x1 ? x2 - x1 : x1 - x2);
    if (steep) {
        int16_t tmp = x1;
        x1 = y1;
        y1 = tmp;
        tmp = x2;
        x2 = y2;
        y2 = tmp;
    }
    if (x1 > x2) {
        int16_t tmp = x1;
        x1 = x2;
        x2 = tmp;
        tmp = y1;
        y1 = y2;
        y2 = tmp;
    }
    int16_t deltax = x2 - x1;
    int16_t deltay = y2 - y1;
    double gradient = 1.0 * deltay / deltax;

    int16_t xend = x1; // round(x1);
    double yend = y1 + gradient * (xend - x1);
    double xgap = rfpart(x1 + 0.5);
    int16_t xpxl1 = xend;
    int16_t ypxl1 = ipart(yend);
    putColor(xpxl1, ypxl1, steep, rfpart(yend)*xgap);
    putColor(xpxl1, ypxl1 + 1, steep, fpart(yend)*xgap);
    double intery = yend + gradient;

    xend = x2; // round(x2);
    yend = y2 + gradient * (xend - x2);
    xgap = rfpart(x2 + 0.5);
    int16_t xpxl2 = xend;
    int16_t ypxl2 = ipart(yend);
    putColor(xpxl2, ypxl2, steep, rfpart(yend)*xgap);
    putColor(xpxl2, ypxl2 + 1, steep, fpart(yend)*xgap);

    for ( int16_t x = xpxl1 + 1; x < xpxl2 - 1; x++ ) {
          putColor(x, ipart(intery), steep, rfpart(intery));
          putColor(x, ipart(intery) + 1, steep, fpart(intery));
          intery += gradient;
    }
}
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: anti-aliasing на TFT дисплеях?

Сообщение Angel71 » 09 апр 2016, 04:24

абзац. коментарии для пары строк простенького кода, в котором максимум нужно понять, что параметры это координаты начальной и конечной точки, а в коде ф-и максимум нужно понять где вызывается ф-я отрисовки точки или записи цвета в какой буфер? ну хочется теории отрисовки, так изучается теория https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%92%D1%83, http://members.chello.at/easyfilter/bresenham.pdf и т.д.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1


Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2