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

# Curve

Абстрактный базовый класс для создания объекта Curve, содержащего методы интерполяции. Массивы Curve содержатся в классе CurvePath.

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

### Curve()

Этот конструктор создает новый Curve.

## Свойства

### # .arcLengthDivisions : Integer

Это значение определяет количество делений при вычислении суммарной длины сегментов кривой через .getLengths. Для обеспечения точности при использовании таких методов, как .getSpacedPoints, рекомендуется увеличить .arcLengthDivisions, если кривая очень большая. По умолчанию это значение равно `200`.

## Методы

### # .getPoint(t : Float, optionalTarget : Vector) → Vector

- t — положение на кривой. Должно находиться в диапазоне `[0, 1]`.
- optionalTarget — (необ.) если указан, результат будет скопирован в этот вектор, иначе будет создан новый вектор.

Возвращает вектор для заданной позиции на кривой.

### # .getPointAt(u : Float, optionalTarget : Vector) → Vector

- u — положение на кривой в соответствии с длиной дуги. Должно находиться в диапазоне `[0, 1]`.
- optionalTarget — (необ.) если указан, результат будет скопирован в этот вектор, иначе будет создан новый вектор.

Возвращает вектор для заданной позиции на кривой в соответствии с длиной дуги.

### # .getPoints(divisions : Integer) → Array

divisions — количество частей, на которые нужно разделить кривую. По умолчанию `5`.

Возвращает набор делений + 1 точек с помощью getPoint(t).

### # .getSpacedPoints(divisions : Integer) → Array

divisions — количество частей, на которые нужно разделить кривую. По умолчанию `5`.

Возвращает набор делений + 1 равноотстоящих друг от друга точек с помощью getPointAt(u).

### # .getLength() → Float

Получает общую длину дуги кривой.

### # .getLengths(divisions : Integer) → Array

Получает список кумулятивных длин сегментов.

### # .updateArcLengths()

Обновить кэш кумулятивного сегментного расстояния. Этот метод должен вызываться каждый раз при изменении параметров кривой. Если обновляемая кривая входит в композитную кривую, например CurvePath, то .updateArcLengths() должен быть вызывать также для композитной кривой.

### # .getUtoTmapping(u : Float, distance : Float) → Float

Считая что `u` находится в диапазоне `[0, 1]`, возвращает `t` также в диапазоне `[0, 1]`. В дальнейшем `u` и `t` можно использовать для получения точек, равноудаленных от концов кривой, с помощью метода .getPoint.

### # .getTangent(t : Float, optionalTarget : Vector) → Vector

- t — положение на кривой. Должно находиться в диапазоне `[0, 1]`.
- optionalTarget — (необ.) если указан, результат будет скопирован в этот вектор, иначе будет создан новый вектор.

Возвращает единичный вектор, касательный к `t`. Если производная кривой не позволяет рассчитать касательную, то для нахождения ее градиента будут использованы две точки, находящиеся на расстоянии небольшой дельты друг от друга, что, дает приближённый результат.

### # .getTangentAt(u : Float, optionalTarget : Vector) → Vector

- u — положение на кривой в соответствии с длиной дуги. Должно находиться в диапазоне `[0, 1]`.
- optionalTarget — (необ.) если указан, результат будет скопирован в этот вектор, иначе будет создан новый вектор.

Возвращает касательную в точке, равноудаленной к концам кривой от точки, указанной в .getTangent.

### # .computeFrenetFrames(segments : Integer, closed : Boolean) → Object

Генерирует рамки Френе. Требуется определение кривой в трехмерном пространстве. Используется в геометриях типа TubeGeometry и ExtrudeGeometry.

### # .clone() → Curve

Создает клон данного экземпляра.

### # .copy(source : Curve) → Curve

Копирует другой объект Curve в данный экземпляр.

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

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