![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
Почему, когда я рисую окружность так
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
Потому что заведомо ты установливаешь количество пикселей в окружности (360). А если радиус будет большой, то будут дыры...
Лучше рисовать по алгоритму Брезенхема - он быстрее, без sin/cos, и без дыр будет... -------------------- С уважением, г-н Посол. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
Вот, накидал рисование через Брезенхема на примере того цветого круга, который ты хотел получить в соседней теме...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
А знаешь, в соседней теме, да и в этой я тоже пытался сделать так, чтобы к центру окружности, цвета становились темнее и в конце-концов стали черными, а к краям все было белее и белее и вдруг стало белым. Как это сделать?
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
Так ?
PS: изменил позже процедуру CalcColor, там из-за целочисленных вычислений/округлений была четкая граница между переходами R-G-B, теперь получше стало... Это сообщение отредактировал(а) p0s0l - 10.10.2004, 23:54 -------------------- С уважением, г-н Посол. |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 1 Всего: 54 |
-------------------- ![]() |
|||
|
||||
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
Kesh, мне надо, чтобы круг был не черно-белым, а полноцветным. Т.е. там должны быть все цвета радуги, плавно переходящие друг из друга в другие цвета. Мне надо такую окружность, как показал p0s0l, но с таким затемнением, как у тебя. Понятно?
Добавлено @ 08:30 p0s0l, все замечательно. Ты все сделал просто класс. Только теперь можно узнать, в чем состоит алгоритм Брозенхейма и парут-тройку комментаривев к твое программе. А то мне ее надо еще объянять преподу, да и отчет писать как-никак. -------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 1 Всего: 162 |
http://www.yandex.ru/yandsearch?text=%C1%F...5%E5%EC%E0&tb=1 -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 16 Всего: 112 |
Comments:
CalcColor - вычисляет цвет точки в зависимости от угла (вх. параметр a), и от радиуса окружности. Вначале выясняется, к какой трети окружности принадлежит данная точка, и в зависимости от этого вычисляется её цвет. Например, во второй трети (if a < pi43) вычисляется так: красная компонента = 0 зеленая компонента -> чем больше угол, тем меньше зелености синяя компонента - наоборот, чем больше угол, тем больше синевы Далее (if k <= 1) - если радиус текущей окружности ® меньше половины радиуса внешней окружности (rmax), то идёт затемнение цвета путём умножения составляющих цвета на коэффициент k, где k=[0..1] Если же (k > 1), то наоборот происходит осветление... DrawPixels - выводит 8 симметрично расположенных пикселей. Почему 8 ? В данном коде окружность разбивается на 8 частей, и алгоритмом Брезенхема вычисляется только одна часть, остальные части получаются путём зеркального отражения. А там дальше уже идёт сам Брезенхем - о нём можешь почитать в данных выше ссылках... -------------------- С уважением, г-н Посол. |
|||
|
||||
| MacTep |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: нет Всего: 4 |
Вот спасибо! Очень помогло!
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
| posleg |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 2.7.2009 Репутация: нет Всего: нет |
хороший пример))))
не подскажете как на его основе сделать 4- х связанный эллипс ?????????? плиз |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |