|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Nick Kovaliov 2:5020/400 15 Apr 2003 09:06:57 To : Anton Chernousov Subject : Re: Градиентная заливка в произвольном направлении -------------------------------------------------------------------------------- AC> А если нам дан вектор напрвления (dx, dy), AC> начальный и конечный цвет ? Всё же задавать надо две точки - начальную, и конечную. AC> Вообще, хотелось бы, чтоб и AC> цвет задавался нелинейно, AC> как функция С(r), r-расстояния AC> от 0 до текущей точки. Тогда итеративно не получится. AC>NK> Ежели быть более точным, AC>NK> то это 3 линейные функции, AC>NK> по каждой из составляющих цвета (R, B, G). AC> или одна, если цвет 0хRRGGBB... Одна таким образом не получится. Ты же функцию вычислять должен. AC> Конечно, желательно, быстро ! AC> А не итеративно это можно осуществить ? Можно, 2 умножения на точку. [... Skipped ...] Hужно идти сканлайном, и вычислять, какой цвет будет в данной точке. Во-первых, вычисли коэффициенты линейной функции, как это делать, потом напишу, да и сам должен догадаться. У тебя получается g (x, y) = a + b*x + c*y При каждом фиксированном yFixed вдоль твоего сканлайна получается линейная функция, зависящая от x. g (x, yFixed) = (a+c*yFixed) + b*x Как быстро вычислять линейную функцию - найдёшь в каком-нить факе, например, на www.enlight.ru Ежели не найдёшь, или не поймёшь, может объясню. Сразу скажу, что лучше ищи метод, использующий FixedPoint. Так вот. А ежели надо нелинейную ф-ю, то просто делай подстановку f(g (x, y)) Ежели надо что-то более сложное, ну тут либо опять же подстановка f (g (x(u), y(v))), где x(u), y(u) некие ф-и, или тогда давай отдельно беседовать. До встречи, всего наилучшего ! --- ifmail v.2.15dev4 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/24632f141a050.html, оценка из 5, голосов 10
|