![]() |
|
Модераторы: Poseidon |
![]()
|
|
| nnvz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 21.2.2006 Репутация: нет Всего: нет |
Задача состоит в следующем: имеем на полотне три виртуальных точки, каждая своего цвета. Нужно залить треугольник, образуемый этими точками, ровным градиентом, примерно так:
![]() Нужно реализовать это безо всяких сторонних библиотек вроде OpenGL. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 24 Всего: 110 |
а что именно интересует: вычисление цвета точки или способ рисования этих точек?
-------------------- qqq |
|||
|
||||
| nnvz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 21.2.2006 Репутация: нет Всего: нет |
Именно вычисление цвета, куда выводить и как - неважно
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 24 Всего: 110 |
ну, из того, что я увидел, можно придумать такое:
1. проводим медиану из левой точки 2. верхний треугольник закрашиваем градиентом от верхней угловой точки до левой 3. нижний - от нижней до левой еще можно немного другой способ, он более логичным кажется: каждая точка в треугольнике представляется, как выпуклая комбинация его вершин можно взять эти коэффициенты и составить по ним выпуклую комбинацию уже из цветов (для каждой точки нужно будет указать свой цвет)... -------------------- qqq |
|||
|
||||
| MBo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 10.6.2002 Репутация: 7 Всего: 18 |
Даны три точки A,B,C. Введем непрямоугольную систему координат с началом в точке A и базовыми векторами i=(B-A) и j=(C-A).
Для точки D внутри треугольника найдем параметрические координаты s и t из векторного соотношения D-A = s*i +t*j, расписав его по координатам X и Y. Цвет в точке D будет линейной комбинацией цветов вершин с весами A (1-s-t) B(s) C(t) s и t лежат в пределах 0..1, и их сумма не превышает 1. Например, середина стороны BC имеет координаты 1/2, 1/2 и цвет - среднее B и С Пример на Дельфи. Регион введен для простоты проверки. сдвиги на 8 влево-вправо - чтобы работать в целочисленной арифметике. Отмечу, что в Windows GDI есть функция GradientFill, которая умеет рисовать подобные вещи.
Это сообщение отредактировал(а) MBo - 21.2.2006, 17:44 Присоединённый файл ( Кол-во скачиваний: 22 )
shot.jpg 4,13 Kb |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |