Color - Руководство по Вердж3Д - Софт Эйт Софт
Description: Узнайте как использовать Color в интерактивных 3Д-веб-приложениях сделанных на Вердж3Д

# Color

Класс, представляющий цветовое значение (RGB).

Перечисление Color выдаёт его компоненты `(r, g, b)` в том же порядке.

## Примеры

Цвет может быть инициализирован любым из следующих способов:

`// пустой конструктор - по умолчанию будет белым const color1 = new v3d.Color(); // шестнадцатеричный цвет (рекомендуется) const color2 = new v3d.Color(0xff0000); // RGB-строка const color3 = new v3d.Color("rgb(255, 0, 0)"); const color4 = new v3d.Color("rgb(100%, 0%, 0%)"); // имя цвета CSS - поддерживаются все 140 цветов const color5 = new v3d.Color('skyblue'); // строка HSL const color6 = new v3d.Color("hsl(0, 100%, 50%)"); // значения RGB между 0 и 1 const color7 = new v3d.Color(1, 0, 0);`

## Конструктор

### Color(r : Color_Hex_or_String, g : Float, b : Float)

- r — (необ.) Если определены аргументы g и b, красная составляющая цвета. Если они не определены, это может быть шестнадцатеричный триплет (рекомендуется), строка в стиле CSS или другой экземпляр Color.
- g — (необ.) Если он определен, зеленый компонент цвета.
- b — (необ.) Если он определен, синий компонент цвета.

Обратите внимание, что стандартным методом указания цвета в «Вердж3Д» является шестнадцатеричный триплет, и этот метод используется во всей остальной документации.

Если все аргументы определены, то r — это красный компонент, g — зеленый компонент и b — синий компонент цвета.

Когда определен только r:

- Это может быть шестнадцатеричный триплет представляющий цвет (рекомендуется).
- Это может быть другой экземпляр Color.
- Это может быть строка в виде CSS-стиля. Например:
  - `'rgb(250, 0,0)'`
  - `'rgb(100%,0%,0%)'`
  - `'hsl(0, 100%, 50%)'`
  - `'#ff0000'`
  - `'#f00'`
  - `'red'`

## Свойства

### # .isColor : Boolean

Указывает, что объект является экземпляром класса Color. Только для чтения.

### # .r : Float

Значение красного канала от `0` до `1`. По умолчанию `1`.

### # .g : Float

Значение зеленого канала от `0` до `1`. По умолчанию `1`.

### # .b : Float

Значение синего канала от `0` до `1`. По умолчанию `1`.

## Методы

### # .add(color : Color) → Color

Добавляет значения RGB из color к значениям RGB текущего цвета.

### # .addColors(color1 : Color, color2 : Color) → Color

Устанавливает значения RGB текущего цвета в сумму значений RGB color1 и color2.

### # .addScalar(s : Float) → Color

Добавляет s к значениям RGB текущего цвета.

### # .clone() → Color

Возвращает новый цвет с теми же значениями r, g и b, что и данный.

### # .copy(color : Color) → Color

Копирует параметры r, g и b из color в этот цвет.

### # .convertLinearToSRGB() → Color

Преобразует данный цвет из линейного пространства в пространство sRGB.

### # .convertSRGBToLinear() → Color

Преобразует данный цвет из пространства sRGB в линейное пространство.

### # .copyLinearToSRGB(color : Color]) → Color

color — цвет для копирования.

Копирует заданный цвет в этот цвет, а затем преобразует этот цвет из линейного пространства в пространство sRGB.

### # .copySRGBToLinear(color : Color) → Color

color — цвет для копирования.

Копирует заданный цвет в этот цвет, а затем преобразует этот цвет из пространства sRGB в линейное пространство.

### # .equals(color : Color) → Boolean

Сравнивает RGB-значения color со значениями данного объекта. Возвращает true, если они одинаковы, false в противном случае.

### # .fromArray(array : Array, offset : Integer) → Color

- array - Array поплавков в виде [r, g, b].
- offset — Необязательное смещение в массиве.

Устанавливает компоненты текущего цвета на основе массива, отформатированного как [r, g, b].

### # .fromBufferAttribute(attribute : BufferAttribute, index : Integer) → this

- attribute — атрибут источника.
- index — индекс в атрибуте.

Устанавливает компоненты текущего цвета из атрибута BufferAttribute.

### # .getHex(colorSpace : String = SRGBColorSpace) → Integer

Устанавливает компоненты текущего цвета из атрибута BufferAttribute.

### # .getHexString() → String

Возвращает шестнадцатеричное значение текущего цвета в виде строки (например, `'FFFFFF'`).

### # .getHSL(target : Object, colorSpace : String = LinearSRGBColorSpace) → Object

target — результат будет скопирован в этот объект. Добавляет ключи h, s и l к объекту (если они еще не присутствуют).

Преобразует значения r, g и b текущего цвета в формат HSL и возвращает объект вида:

`{ h: 0, s: 0, l: 0 }`

### # .getStyle(colorSpace : String = SRGBColorSpace) → String

Возвращает значение текущего цвета в виде строки стиля CSS, например `rgb(255,0,0)`.

### # .lerp(color : Color, alpha : Float) → Color

- color — цвет для сходства.
- alpha — коэффициент интерполяции в интервале `[0, 1]`.

Линейно интерполирует значения RGB текущего цвета к значениям RGB переданного аргумента. Аргумент alpha можно представить как соотношение между двумя цветами, где `0.0` - данный цвет, а `1.0` - первый аргумент.

### # .lerpColors(color1 : Color, color2 : Color, alpha : Float) → this

- color1 — начальный цвет.
- color2 — конечный цвет для интерполяции.
- alpha — коэффициент интерполяции в интервале `[0, 1]`.

Устанавливает текущий цвет как результат интерфоляции между color1 и color2 где `alpha` процентное расстояние вдоль линии, соединяющей два цвета - alpha = 0 станет color1, а alpha = 1 станет color2.

### # .lerpHSL(color : Color, alpha : Float) → Color

color — цвет для сходства. alpha — коэффициент интерполяции в замкнутом интервале `[0, 1]`.

Линейно интерполирует значения HSL текущего цвета к значениям HSL переданного аргумента. Он отличается от классического .lerp тем, что не интерполирует прямо от одного цвета к другому, а проходит через все оттенки между этими двумя цветами. Аргумент alpha можно представить как соотношение между двумя цветами, где 0.0 - этот цвет, а 1.0 - первый аргумент.

### # .multiply(color : Color) → Color

Умножает значения RGB текущего цвета на значения RGB данного color.

### # .multiplyScalar(s : Float) → Color

Умножает значения RGB текущего цвета на s.

### # .offsetHSL(h : Float, s : Float, l : Float) → Color

Добавляет заданные значения h, s и l к значениям текущего цвета. Внутренне это преобразует значения r, g и b цвета в HSL, добавляет h, s и l, а затем преобразует цвет обратно в RGB.

### # .set(value : Color_Hex_or_String) → Color

value — значение для установки текущего цвета.

Смотрите конструктор выше для получения полной информации о том, чем может быть value. Делегирует .copy, .setStyle или .setHex в зависимости от типа ввода.

### # .setHex(hex : Integer) → Color

hex — шестнадцатеричный триплет формат.

Устанавливает этот цвет из шестнадцатеричного значения.

### # .setHSL(h : Float, s : Float, l : Float) → Color

- h — значение оттенка в диапазоне от 0.0 до 1.0.
- s — значение насыщенности от 0.0 до 1.0.
- l — значение освещенности в диапазоне от 0.0 до 1.0.

Устанавливает цвет из значений HSL.

### # .setRGB(r : Float, g : Float, b : Float) → Color

- r — значение красного канала между 0.0 и 1.0.
- g — значение зеленого канала между 0.0 и 1.0.
- b — значение синего канала между 0.0 и 1.0.

Устанавливает данный цвет из значений RGB.

### # .setScalar(scalar : Float) → Color

scalar — значение между 0.0 и 1.0.

Устанавливает все три цветовых компонента в значение scalar.

### # .setStyle(style : String) → Color

style — цвет как строка CSS-стиля.

Устанавливает этот цвет из строки CSS-стиля. Например,

- `"rgb(250, 0,0)"`
- `"rgb(100%, 0%, 0%)"`
- `"hsl(0, 100%, 50%)"`
- `"#ff0000"`
- `"#f00"`
- `"red"`

или любого имени цвета X11 [link:https://ru.wikipedia.org/wiki/Список_цветов_в_X11] - поддерживаются все 140 названий цветов).

Полупрозрачные цвета, такие как "rgba(255, 0, 0, 0, 0.5)" и "hsla(0, 100%, 50%, 0.5)" также принимаются, но координата альфа-канала будет отброшена.

Обратите внимание, что для названий цветов X11 несколько слов, таких как Dark Orange, превращаются в строку 'darkorange' (все строчные буквы).

### # .setColorName(style : String) → Color

style — название цвета (из X11 названий цветов).

Устанавливает этот цвет из имени цвета. Быстрее, чем метод .setStyle, если вам не нужны другие форматы CSS-стилей.

Для удобства список имен представлен в Color.NAMES в виде хэша:

`Color.NAMES.aliceblue // returns 0xF0F8FF`

### # .sub(color : Color) → Color

Вычитает компоненты RGB данного цвета из компонентов RGB текущего цвета. Если в результате получается отрицательный компонент, он устанавливается равным нулю.

### # .toArray(array : Array, offset : Integer) → Array

- array — необязательный массив для хранения цвета.
- offset — необязательное смещение в массиве.

Возвращает массив вида [r, g, b].

## Исходный файл

О том как получить исходный код этого модуля читайте тут.