Геометрические свойства цвета
Автор: zacetavtom11 • Январь 25, 2021 • Контрольная работа • 1,641 Слов (7 Страниц) • 305 Просмотры
Цвет
Геометрические свойства цвета
Как связан цвет с геометрией
- всякий сложный цвет может быть получен путём смешивания долей трёх основных цветов (компонент) красного (Red), зелёного (Green) и синего (Blue);
- доли выражаются целыми числами отрезка [0, 255] , которые определяют степени яркости (интенсивности) компонент;
- смешанный цвет представляется тройкой целых чисел r, g, b, выражающих интенсивности основных цветов (этот приём называется кодировкой цвета в системе RGB);
- если интерпретировать тройку (r, g, b) в виде точки 3-мерного пространства, то получится множество точек, образующих куб с ребром 256, три рёбра куба лежат на координатных осях R, G, B;
[pic 1]
Как используется геометрия цвета
- в соответствии с геометрическим представлением цвета можно говорить о близости или удалённости двух цветов друг от друга (как обычных точек пространства);
- чтобы на отрезке с координатами (x1, y1) и (x3, y3) построить точку (x2, y2), которая делит отрезок в отношении m : n, надо вычислять координаты по формуле
[pic 2];
если к тому же концы отрезка окрашены цветами (r1, g1, b1) и (r3, g3, b3), то возникает проблема окрасить делящую точку так, чтобы обеспечить плавный переход от одного цвета к другому;
практика показывает, что новый цвет (r2, g2, b2) следует положить равным
[pic 3];
Рассмотрим задачу.
Дан единичный квадрат, с вершинами в точках
(x0, y0), (x0+1, y0), (x0+1, y0+1), (x0, y0+1)
которые окрашены цветами:
(r0, g0, b0), (r1, g1, b1), (r2, g2, b2), (r3, g3, b3).
Внутри квадрата находится точка C(x, y).
Требуется подобрать цвет точки, обеспечивающий плавный переход меду цветами.
[pic 4]
Расчёты представлены на чертеже. Сначала через точку C проводят горизонтальную и вертикальную прямую. Прямые отсекают на сторонах квадрата отрезки
n = Frac(x), m = Frac(y).
причём
x0 = Trunc(x), y0 = Trunc(y)
Горизонтальная прямая пересекает квадрат в точках A и B. Цвета этих точек рассчитываются по вышеуказанным формулам. На рисунке вверху справа показано как вычисляются значения красных компонент точек. Затем по тем же формулам находят цвет точки C.
Если в алгоритме поменять ролями горизонтальную и вертикальную прямую, то результат не изменится.
Указанный приём легко обобщается для произвольного прямоугольника и позволяет раскрашивать фигуру по цветам четырёх вершин.
[pic 5]
Ниже приводится текст подпрограммы, которая раскрашивает окно Image1, используя цвета его угловых точек.
//========================== //Раскраска прямоугольника //========================== procedure TForm1.FormCreate(Sender: TObject); Var r0,r1,r2,r3:Integer; //Красные компоненты вершин g0,g1,g2,g3:Integer; //Зелёные компоненты вершин b0,b1,b2,b3:Integer; //Синие компоненты вершин n,m:Integer; //Размеры прямоугольника x,y:Integer; //Координаты внутренней точки begin r0:=255; g0:=255; b0:=255; //Задание цвета вершины 0 r1:=255; g1:=0; b1:=0; //Задание цвета вершины 1 r2:=0; g2:=0; b2:=0; //Задание цвета вершины 2 r3:=0; g3:=0; b3:=255; //Задание цвета вершины 3 With Image1.Canvas Do //Работаем на канве Begin n:=ClipRect.Right; //Находим размеры окна m:=ClipRect.Bottom;
End; end; |
...