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

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

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

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

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

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


 
Опции темы
Непрочитано 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.RU
 
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: Нужна рабочая функция рисования закрашенного треугольника ...

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

Вот именно! Три вершины - три линии. Разницы не много между рисованием линии и закрашиванием по горизонтали. Если тупо тырить чужие либы без понимания процесса - на выходе будет говнокод, который работает медленно, нестабильно и жрет флеш.
Easyrider83 вне форума  
Непрочитано 16.11.2015, 13:58  
zöner
Гражданин KAZUS.RU
 
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 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.RU
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Нужна рабочая функция рисования закрашенного треугольника ...

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

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

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

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

Сообщение от zöner Посмотреть сообщение
или это особое требование?
Дык первый пост "...или многоугольника (полилинии) на си с использованием алгоритма Брезенхема."
AJScorp вне форума  
Непрочитано 16.11.2015, 22:08  
AJScorp
Почётный гражданин KAZUS.RU
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
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, время: 10:18.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot