![]() |
|
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
![]() |
#1 |
Moderator
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1031 ![]() ![]() ![]() |
![]()
Учусь рисовать на lcd5110. Кружочки (кривые), квадратики это все рисую с помощью adafruitGFX.
А вот как нарисовать допустим линию, вращающуюся относительно точки на угол заданный извне? Например имитация аналогового спидометра? |
![]() |
![]() |
![]() |
#2 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Нужно рисовать линию , потом стирать ее и рисовать новую линию уже развернутую под углом
|
![]() |
![]() |
![]() |
#3 |
Moderator
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1031 ![]() ![]() ![]() |
![]()
Это я примерно понимаю. Но при перерисовке одного объекта страдают и соседние области. То есть надо перерисовывать все содержимое дисплея?
С расчетом точек начала и конца линии у меня тоже проблема. До 90 градусов тригонометрия помогает. А вот с 90 уже не очень - это отдельно проверять надо? А как решаются сложные алгоритмы? Ну например вращающийся квадрат? У меня с практическим применением математики туговато.. Нет ли сайтика с примерами таких алгоритмов? |
![]() |
![]() |
![]() |
#4 | |||
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Цитата:
Еще понадобится создать фунцию setPixel, которая будет рисовать точку PHP код:
Цитата:
В этих либах есть все функции рисования |
|||
![]() |
![]() |
![]() |
#5 |
Moderator
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1031 ![]() ![]() ![]() |
![]()
Так я и использую AdafruitGFX, с рисованием линии проблемы нет. Что там с фоном спрайта предположить затрудняюсь, ИМХО там тупо ставится курсор в первую непустую позицию и выставляются биты по-порядку дальше. И-за этого пропадает часть изображения попавшая в поле работы.
Можно конечно придумать хитрые алгоритмы, но мне сейчас проще перерисовывать весь экран. Возвращаясь к линии. В библиотеке есть функция: drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color), Ок. допустим точка x0y0 мне известна и не меняется. Как расчитать точку x1y1 если известен угол от 0 до 359 градусов? |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|