Обход всех пикселей круга.

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Обход всех пикселей круга.

Сообщение GAGArin » 06.04.2007 (Пт) 22:48

Есть круг заданного радиуса, надо нарисовать его по точкам. Тоесть мне нужно задать вычисление цвета для каждой точки круга. Задача для реализации своего упрощенного алгоритма отрисовки 3D шарика. Если кто-то подскажет еще и алгоритм отрисовки трехмерного шарика - буду вдвойне благодарен. Алгоритм должен быть простой, математический. Компы слбые. Никакой трассировки лучей быть не должно и в помине.
Последний раз редактировалось GAGArin 06.04.2007 (Пт) 22:52, всего редактировалось 1 раз.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.04.2007 (Пт) 22:50

Эээ, Брезенхем?
http://algolist.manual.ru/graphics/painting/circle.php


Код для отрисовки трёхмерного шарика я выкладывал на TP7, а GSerg переводил на VB.net, года эдак два назад.

Для одного шарика никакой трассировки лучей и не нужно. Яркость -- косинус угла от направления света до нормали. (Откуда тебе свет должен падать, кстати?)
Последний раз редактировалось tyomitch 06.04.2007 (Пт) 22:59, всего редактировалось 1 раз.
Изображение

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 06.04.2007 (Пт) 22:56

Спс за наводку. Сейчас разберусь, но думаю сложностей быть особых не должно. Еще бы примерно прикинуть как освещенность учитывать, но это опытным путём думаю придумается.

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 06.04.2007 (Пт) 23:02

Еще раз спасибо. Что-то подобное про освещенность и думал делать. Просто хотелось реализовать максимально красиво и на довольно близких к шарику расстояниях.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.04.2007 (Пт) 23:30

На всякий случай, вот (примитивный) сэмпл для освещения из (1,1,2).
Вроде красиво.
Код: Выделить всё
Private Sub Form_DblClick()
ScaleMode = vbPixels
Dim x As Long, y As Long, z As Long, r As Long, c As Single
If ScaleWidth < ScaleHeight Then r = ScaleWidth / 2 Else r = ScaleHeight / 2
For x = -r To r
    For y = -r To r
        If x * x + y * y <= r * r Then
            z = Sqr(r * r - x * x - y * y)
            c = (x + y + 2 * z) / (r * 2)
            If c < 0 Then c = 0
            PSet (x + r, y + r), RGB(c * 153, c * 50, c * 204)
        End If
    Next
Next
End Sub
Изображение


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 122

    TopList