Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Геометрические свойства цвета

Автор:   •  Январь 25, 2021  •  Контрольная работа  •  1,641 Слов (7 Страниц)  •  311 Просмотры

Страница 1 из 7

Цвет

Геометрические свойства цвета

Как связан цвет с геометрией

  • всякий сложный цвет может быть получен путём смешивания долей трёх основных цветов (компонент) красного (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;

   For y:=0 To m Do                            //Сканируем окно по точкам

     For x:=0 To n Do

       Pixels[x,y]:=RGB(                       //Рисуем точки

          Round(((n-x)*(m-y)*r0+x*(m-y)*r1+x*y*r2+(n-x)*y*r3)/m/n),

          Round(((n-x)*(m-y)*g0+x*(m-y)*g1+x*y*g2+(n-x)*y*g3)/m/n),

          Round(((n-x)*(m-y)*b0+x*(m-y)*b1+x*y*b2+(n-x)*y*b3)/m/n));

  End;

end;

...

Скачать:   txt (10.6 Kb)   pdf (321.1 Kb)   docx (809.1 Kb)  
Продолжить читать еще 6 страниц(ы) »
Доступно только на Essays.club