Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

Нужна рабочая функция рисования закрашенного треугольника ...

Непрочитано 16.11.2015, 11:20  
MikhailSh
Временная регистрация
 
Регистрация: 06.05.2007
Сообщений: 75
Сказал спасибо: 18
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
MikhailSh на пути к лучшему
По умолчанию Re: Нужна рабочая функция рисования закрашенного треугольника ...

Перевел из паскаля http://www.delphimaster.net/view/8-1126933826 в си:
Код:
Код удалил много ошибок!
алгоритм пока тоже не работает, точки вообще не отображаются. Разбираюсь...
Реклама:

Последний раз редактировалось MikhailSh; 18.11.2015 в 13:21.
MikhailSh вне форума  
Непрочитано 16.11.2015, 12:11  
zöner
Гражданин KAZUS.RUN
 
Регистрация: 16.02.2012
Сообщений: 440
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: Нужна рабочая функция рисования закрашенного треугольника ...

шо-то слишком сложно.
zöner вне форума  
Непрочитано 16.11.2015, 12:14  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Нужна рабочая функция рисования закрашенного треугольника ...

Вот именно! Три вершины - три линии. Разницы не много между рисованием линии и закрашиванием по горизонтали. Если тупо тырить чужие либы без понимания процесса - на выходе будет говнокод, который работает медленно, нестабильно и жрет флеш.
Easyrider83 вне форума  
Непрочитано 16.11.2015, 13:58  
zöner
Гражданин KAZUS.RUN
 
Регистрация: 16.02.2012
Сообщений: 440
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: Нужна рабочая функция рисования закрашенного треугольника ...

используя 3й метод из http://totologic.blogspot.fr/2014/01...ngle-test.html
определяем ограничивающий прямоугольник:
Код:
inline int16_t min(int16_t v1, int16_t v2){ return (v1 ‹ v2) ? v1 : v2; }
inline int16_t max(int16_t v1, int16_t v2){ return (v1 › v2) ? v1 : v2; }
int16_t xmin = min(x1, min(x2,x3));
int16_t ymin = min(y1, min(y2,y3));
int16_t xmax = max(x1, max(x2,x3));
int16_t ymax = max(y1, max(y2,y3));
обход точек прямоугольника и закрашивание тех, которые лежат внутри треугольника:
Код:
for (int16_t y=ymin; y‹=ymax; y++){
  for (int16_t x=xmin; x‹=xmax; x++){
    int16_t dot1 = (y2 - y1)*(x - x1) + (-x2 + x1)*(y - y1);
    int16_t dot2 = (y3 - y2)*(x - x2) + (-x3 + x2)*(y - y2);
    int16_t dot3 = (y1 - y3)*(x - x3) + (-x1 + x3)*(y - y3);
    if ((dot1 ›=0)&&(dot2 ›=0)&&(dot3 ›=0)){
      // закрашивание точки
      draw_dot(x,y);
    }
  }
}
zöner вне форума  
Непрочитано 16.11.2015, 16:22  
MikhailSh
Временная регистрация
 
Регистрация: 06.05.2007
Сообщений: 75
Сказал спасибо: 18
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
MikhailSh на пути к лучшему
По умолчанию Re: Нужна рабочая функция рисования закрашенного треугольника ...

Спасибо.
Помоему в этих методах используются операции с типами real и * в циклах.

Нашел в переводе на Си несколько багов, исправлю и проверю...
MikhailSh вне форума  
Непрочитано 16.11.2015, 21:46  
AJScorp
Почётный гражданин KAZUS.RUN
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,550
Сказал спасибо: 384
Сказали Спасибо 735 раз(а) в 416 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Нужна рабочая функция рисования закрашенного треугольника ...

zöner, Это прикол, или... ТС желает решение через Брезенхема.

Сообщение от MikhailSh Посмотреть сообщение
используются операции с типами real и * в циклах.
Именно так, форумчане желают, чтобы Вы сами допёрли до решения. Изи в посте №13 Вам намекнул направление.

Последний раз редактировалось AJScorp; 16.11.2015 в 21:58.
AJScorp вне форума  
Непрочитано 16.11.2015, 21:52  
zöner
Гражданин KAZUS.RUN
 
Регистрация: 16.02.2012
Сообщений: 440
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: Нужна рабочая функция рисования закрашенного треугольника ...

Цитата:
zöner, Это прикол, или... Не Брезенхем же это.
какая разница? или это особое требование?
Цитата:
Помоему в этих методах используются операции с типами real и * в циклах.
все операции целочисленные. Там некоторые операции можно вынести наружу. А умножение даже на AVR двухцикловое, не говоря про всякие ARM. Уточните какой у вас контроллер.
zöner вне форума  
Непрочитано 16.11.2015, 22:02  
AJScorp
Почётный гражданин KAZUS.RUN
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,550
Сказал спасибо: 384
Сказали Спасибо 735 раз(а) в 416 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Нужна рабочая функция рисования закрашенного треугольника ...

Сообщение от zöner Посмотреть сообщение
или это особое требование?
Дык первый пост "...или многоугольника (полилинии) на си с использованием алгоритма Брезенхема."
AJScorp вне форума  
Непрочитано 16.11.2015, 22:08  
AJScorp
Почётный гражданин KAZUS.RUN
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,550
Сказал спасибо: 384
Сказали Спасибо 735 раз(а) в 416 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Нужна рабочая функция рисования закрашенного треугольника ...

В любом случае, адаптировать любой открытый код рисования линии по Брезенхему для вычисления 2х координат по X не представляет никакой сложности.
AJScorp вне форума  
Непрочитано 18.11.2015, 13:41  
MikhailSh
Временная регистрация
 
Регистрация: 06.05.2007
Сообщений: 75
Сказал спасибо: 18
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
MikhailSh на пути к лучшему
По умолчанию Re: Нужна рабочая функция рисования закрашенного треугольника ...

Вот почти работающий код получился. Но когда треугольник становится равносторонним (почти) алгоритм неправильно работает причем со второй его частью... Например координаты: 0,0; 50,175; 175,50 - Ошибка; 0,0; 50,174; 174,50 - Нормально.

По поводу чужого кода:
Зачем изобретать велосипед, если можно взять готовое. Но разобраться в нем несомненно нужно. Хотя в чужие мысли не залезешь. Это касается кажущейся простоты адаптации чужого кода. Особенно когда там ошибки и недочеты содержатся. Но иногда писать свой код с нуля - трата времени, особенно когда этот код второстепенный... Действовать нужно по обстаятельствам

Микроконтроллер STM32F407.
Вложения:
Тип файла: zip Keil_p1.zip (444.1 Кб, 8 просмотров)
MikhailSh вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна простая рабочая схема для Х10 coolbassnik Автоматика и аппаратура связи 0 17.01.2010 17:36


Часовой пояс GMT +4, время: 05:36.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.