| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Правильное рисование окружности |
| Автор: MacTep 9.10.2004, 07:34 | ||
Почему, когда я рисую окружность так
|
| Автор: p0s0l 9.10.2004, 09:59 |
| Потому что заведомо ты установливаешь количество пикселей в окружности (360). А если радиус будет большой, то будут дыры... Лучше рисовать по алгоритму Брезенхема - он быстрее, без sin/cos, и без дыр будет... |
| Автор: p0s0l 9.10.2004, 10:58 | ||
Вот, накидал рисование через Брезенхема на примере того цветого круга, который ты хотел получить в соседней теме...
|
| Автор: MacTep 10.10.2004, 23:02 |
| А знаешь, в соседней теме, да и в этой я тоже пытался сделать так, чтобы к центру окружности, цвета становились темнее и в конце-концов стали черными, а к краям все было белее и белее и вдруг стало белым. Как это сделать? |
| Автор: p0s0l 10.10.2004, 23:23 | ||
Так ?
PS: изменил позже процедуру CalcColor, там из-за целочисленных вычислений/округлений была четкая граница между переходами R-G-B, теперь получше стало... |
| Автор: Kesh 10.10.2004, 23:28 | ||
|
| Автор: MacTep 11.10.2004, 08:20 |
| Kesh, мне надо, чтобы круг был не черно-белым, а полноцветным. Т.е. там должны быть все цвета радуги, плавно переходящие друг из друга в другие цвета. Мне надо такую окружность, как показал p0s0l, но с таким затемнением, как у тебя. Понятно? Добавлено @ 08:30 p0s0l, все замечательно. Ты все сделал просто класс. Только теперь можно узнать, в чем состоит алгоритм Брозенхейма и парут-тройку комментаривев к твое программе. А то мне ее надо еще объянять преподу, да и отчет писать как-никак. |
| Автор: Alex 11.10.2004, 08:39 | ||
http://www.yandex.ru/yandsearch?text=%C1%F0%E5%E7%E5%ED%F5%E5%EC%E0&tb=1 |
| Автор: p0s0l 11.10.2004, 10:39 |
| Comments: CalcColor - вычисляет цвет точки в зависимости от угла (вх. параметр a), и от радиуса окружности. Вначале выясняется, к какой трети окружности принадлежит данная точка, и в зависимости от этого вычисляется её цвет. Например, во второй трети (if a < pi43) вычисляется так: красная компонента = 0 зеленая компонента -> чем больше угол, тем меньше зелености синяя компонента - наоборот, чем больше угол, тем больше синевы Далее (if k <= 1) - если радиус текущей окружности ® меньше половины радиуса внешней окружности (rmax), то идёт затемнение цвета путём умножения составляющих цвета на коэффициент k, где k=[0..1] Если же (k > 1), то наоборот происходит осветление... DrawPixels - выводит 8 симметрично расположенных пикселей. Почему 8 ? В данном коде окружность разбивается на 8 частей, и алгоритмом Брезенхема вычисляется только одна часть, остальные части получаются путём зеркального отражения. А там дальше уже идёт сам Брезенхем - о нём можешь почитать в данных выше ссылках... |
| Автор: MacTep 11.10.2004, 10:42 |
| Вот спасибо! Очень помогло! |
| Автор: posleg 22.1.2010, 00:42 |
| хороший пример)))) не подскажете как на его основе сделать 4- х связанный эллипс ?????????? плиз |