Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Нарисовать 4-угольник с градиентами от углов (http://www.flasher.ru/forum/showthread.php?t=104658)

LinuxVideo 29.11.2007 17:45

Нарисовать 4-угольник с градиентами от углов
 
Вложений: 1
Есть BitmapData, на нем надо нарисовать 4-угольник. У каждой вершины есть свой цвет, градиентами которых надо залить всю площадь фигуры. Пример во вложении. Только при его создании использовался обычный линейный градиент, поэтому цвета снизу несовсем такие как надо, а поскольку стороны у нас не параллельны, то линейный градиент тут непригоден.

Причем рисовать желательно быстро, таких полигонов несколько тысяч, выставленных рядом. Но это не главное - гланое точная заливка, надо как можно точнее передать цвет.

__i 29.11.2007 17:53

Линейный, в направлении биссектрисы угла с цветом угла, от с альфой [1,0], какого размера незнаю. х 4 угла (4 раза заливаем )

F_Flash 29.11.2007 18:13

Ты хочешь сделать градиент меш. быстрым он не будет в любом случае...
Но например как вриант решения.
1й шаг.Залить все полигоны цветами - средним арифметическим от цветов четырех вершин каждого полигона по RGB.
2й шаг 2 варианта.
ваиант а) Исолзовать радиальную заливку со мещенным фокал центром в каждой вершине. радиус и положение заливки должен быть равен радиусу окружности описанной вокруг многоугольника образованного из точек смежных к данной вершине а фокал центр сместить в положение вершины, б) нарисовать туже окружность без градинета с половинным радусом а потом после отрисовки всех окружностей на все изображдение применить блур фильтр.

LinuxVideo 30.11.2007 00:04

Вложений: 1
Цитата:

Линейный, в направлении биссектрисы угла с цветом угла, от с альфой [1,0], какого размера незнаю
В том то и проблема, что размер зависит от длинны стороны. Вот биссектриса угла и примерное направление градиента. Между ними должен быть прямой угол, а его как-то не видно...

Цитата:

Исолзовать радиальную заливку со мещенным фокал центром в каждой вершине
Нет, нужно как можно точнее передать значения пикселей, в дальнейшем это будет использована как битовая карта (вообще, битмап тут используется для визуального контроля и ускорения прорисовки), поэтому допуски "чуть краснее" делать бы не хотелось.

BlooDHounD 30.11.2007 00:52

всё там видно. просто площадь занимаемоя конкретным цветом разная. жотого само сабой сабой меньше всего, так как у него угол имеет самое большое отклоение от прямого. у угла в 90 градусов будет самая большая активность.

undefined 30.11.2007 13:39

можно рисовать как это делают вот эти товарищи. Создается битмапдата 2x2 с параметром smooth, точки красятся цветами вершин, далее считаются нужные трансформации для битмапа и рисуется на экране через beginBitmapFill. В твоем случае, т.к. полигон четырехугольный, надо разбить его на 2 треугольника и для каждого посчитать свой matrix.
Делаешь 3д движок, да?

aQuestion 30.11.2007 16:14

можно попробовать залить дважды линейными градиентами цветов от 1 к 3 и от 2 к 4 с 50% прозрачности во второй раз.

undefined 30.11.2007 16:21

тама полигонов несколько тысяч, флэш мувики с альфой очень медленно отрисовывает, у fp сердечный приступ случится =)
на самом деле тот вариант что я описал такое тоже не потянет, на моей тачке рисуется 100-120 полигонов при fps ~ 25, это так для прикидки.

aQuestion 30.11.2007 16:23

Цитата:

Сообщение от LinuxVideo
В том то и проблема, что размер зависит от длинны стороны. Вот биссектриса угла и примерное направление градиента. Между ними должен быть прямой угол, а его как-то не видно...

почему, собственно, бисектрисса? берите высоту на диагональ, соединяющую две соседние вершины... но целых это 4 заливки (+ ещё 1 на средний средний цвет, чтобы не было дырки в центре)

Цитата:

Сообщение от undefined
тама полигонов несколько тысяч, флэш мувики с альфой очень медленно отрисовывает, у fp сердечный приступ случится =)

загоняйте альфу непосредственно в градиент.

undefined 30.11.2007 16:25

а какая разница?


Часовой пояс GMT +4, время: 02:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.