Класс CubicCurve2D
- Все реализованные интерфейсы:
-
Shape,Cloneable
- Прямые известные подклассы:
-
CubicCurve2D.Double,CubicCurve2D.Float
public abstract class CubicCurve2D extends Object implements Shape, Cloneable
CubicCurve2D определяет сегмент кубической параметрической кривой в пространстве координат (x,y). Этот класс является только абстрактным суперклассом для всех объектов, хранящих сегмент 2D кубической кривой. Фактическое представление координат оставляется подклассу.
- С тех пор:
- 1.2
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
CubicCurve2D.Double |
Сегмент кубической параметрической кривой, заданный координатами double. |
static class |
CubicCurve2D.Float |
Сегмент кубической параметрической кривой, заданный координатами float. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Это абстрактный класс, который нельзя создать напрямую. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
clone() |
Создает новый объект того же класса, что и этот объект. |
boolean |
contains |
Проверяет, находятся ли указанные координаты внутри границы Shape, как описано в определении принадлежности. |
boolean |
contains |
Проверяет, полностью ли внутренность Shape содержит указанную прямоугольную область. |
boolean |
contains |
Проверяет, находится ли указанная Point2D внутри границы Shape, как описано в определении принадлежности. |
boolean |
contains |
Проверяет, полностью ли внутренность Shape содержит указанную Rectangle2D. |
Rectangle |
getBounds() |
Возвращает целое число Rectangle, которое полностью охватывает Shape. |
Rectangle2D |
getBounds2D() |
Возвращает прямоугольник, ограничивающий Shape, с большей точностью, чем метод getBounds. |
abstract Point2D |
getCtrlP1() |
Возвращает первую управляющую точку. |
abstract Point2D |
getCtrlP2() |
Возвращает вторую управляющую точку. |
abstract double |
getCtrlX1() |
Возвращает координату X первой управляющей точки с двойной точностью. |
abstract double |
getCtrlX2() |
Возвращает координату X второй управляющей точки с двойной точностью. |
abstract double |
getCtrlY1() |
Возвращает координату Y первой управляющей точки с двойной точностью. |
abstract double |
getCtrlY2() |
Возвращает координату Y второй управляющей точки с двойной точностью. |
double |
getFlatness() |
Возвращает степень кривизны этой кривой. |
static double |
getFlatness |
Возвращает степень кривизны кубической кривой, заданной управляющими точками, хранящимися в указанном массиве по указанному индексу. |
static double |
getFlatness |
Возвращает степень кривизны кубической кривой, заданной указанными управляющими точками. |
double |
getFlatnessSq() |
Возвращает квадрат степени кривизны этой кривой. |
static double |
getFlatnessSq |
Возвращает квадрат степени кривизны кубической кривой, заданной управляющими точками, хранящимися в указанном массиве по указанному индексу. |
static double |
getFlatnessSq |
Возвращает квадрат степени кривизны кубической кривой, заданной указанными управляющими точками. |
abstract Point2D |
getP1() |
Возвращает начальную точку. |
abstract Point2D |
getP2() |
Возвращает конечную точку. |
PathIterator |
getPathIterator |
Возвращает объект итерации, определяющий границу фигуры. |
PathIterator |
getPathIterator |
Возвращает объект итерации, определяющий границу сглаженной фигуры. |
abstract double |
getX1() |
Возвращает координату X начальной точки с двойной точностью. |
abstract double |
getX2() |
Возвращает координату X конечной точки с двойной точностью. |
abstract double |
getY1() |
Возвращает координату Y начальной точки с двойной точностью. |
abstract double |
getY2() |
Возвращает координату Y конечной точки с двойной точностью. |
boolean |
intersects |
Проверяет, пересекается ли внутренность Shape с внутренней частью указанной прямоугольной области. |
boolean |
intersects |
Проверяет, пересекается ли внутренность Shape с внутренней частью указанного Rectangle2D. |
void |
setCurve |
Устанавливает расположение конечных точек и управляющих точек этой кривой в соответствии с двойными координатами по указанному смещению в указанном массиве. |
abstract void |
setCurve |
Устанавливает расположение конечных точек и управляющих точек этой кривой в соответствии с указанными двойными координатами. |
void |
setCurve |
Устанавливает расположение конечных точек и управляющих точек этой кривой так же, как и у указанной CubicCurve2D. |
void |
setCurve |
Устанавливает расположение конечных точек и управляющих точек этой кривой в соответствии с координатами объектов Point2D по указанному смещению в указанном массиве. |
void |
setCurve |
Устанавливает расположение конечных точек и управляющих точек этой кривой в соответствии с указанными координатами Point2D. |
static int |
solveCubic |
Решает кубическое уравнение, коэффициенты которого находятся в массиве eqn, и помещает некомплексные корни обратно в тот же массив, возвращая количество корней. |
static int |
solveCubic |
Решает кубическое уравнение, коэффициенты которого находятся в массиве eqn, и помещает некомплексные корни в массив res, возвращая количество корней. |
static void |
subdivide |
Делит кубическую кривую, заданную координатами, хранящимися в массиве src по индексам srcoff до (srcoff + 7), и сохраняет полученные две подразделенные кривые в двух массивах результатов по соответствующим индексам. |
void |
subdivide |
Делит эту кубическую кривую и сохраняет полученные две подразделенные кривые в параметрах левой и правой кривых. |
static void |
subdivide |
Делит кубическую кривую, заданную параметром src, и сохраняет полученные две подразделенные кривые в параметрах кривых left и right. |
Подробное описание конструкторов
CubicCurve2D
protected CubicCurve2D()
- С тех пор:
- 1.2
- См. также:
Подробное описание методов
getX1
public abstract double getX1()
- Возвращает:
- координату X начальной точки кривой
CubicCurve2D. - С тех пор:
- 1.2
getY1
public abstract double getY1()
- Возвращает:
- координату Y начальной точки кривой
CubicCurve2D. - С тех пор:
- 1.2
getP1
public abstract Point2D getP1()
- Возвращает:
- объект
Point2D, представляющий начальную точку кривойCubicCurve2D. - С тех пор:
- 1.2
getCtrlX1
public abstract double getCtrlX1()
- Возвращает:
- координату X первой контрольной точки кривой
CubicCurve2D. - С тех пор:
- 1.2
getCtrlY1
public abstract double getCtrlY1()
- Возвращает:
- координату Y первой контрольной точки кривой
CubicCurve2D. - С тех пор:
- 1.2
getCtrlP1
public abstract Point2D getCtrlP1()
- Возвращает:
- объект
Point2D, представляющий первую контрольную точку кривойCubicCurve2D. - С тех пор:
- 1.2
getCtrlX2
public abstract double getCtrlX2()
- Возвращает:
- координату X второй контрольной точки кривой
CubicCurve2D. - С тех пор:
- 1.2
getCtrlY2
public abstract double getCtrlY2()
- Возвращает:
- координату Y второй контрольной точки кривой
CubicCurve2D. - С тех пор:
- 1.2
getCtrlP2
public abstract Point2D getCtrlP2()
- Возвращает:
- объект
Point2D, представляющий вторую контрольную точку кривойCubicCurve2D. - С тех пор:
- 1.2
getX2
public abstract double getX2()
- Возвращает:
- координату X конечной точки кривой
CubicCurve2D. - С тех пор:
- 1.2
getY2
public abstract double getY2()
- Возвращает:
- координату Y конечной точки кривой
CubicCurve2D. - С тех пор:
- 1.2
getP2
public abstract Point2D getP2()
- Возвращает:
- объект
Point2D, представляющий конечную точку кривойCubicCurve2D. - С тех пор:
- 1.2
setCurve
public abstract void setCurve(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)
- Параметры:
-
x1- координата X, используемая для установки начальной точки этой кривойCubicCurve2D -
y1- координата Y, используемая для установки начальной точки этой кривойCubicCurve2D -
ctrlx1- координата X, используемая для установки первой контрольной точки этой кривойCubicCurve2D -
ctrly1- координата Y, используемая для установки первой контрольной точки этой кривойCubicCurve2D -
ctrlx2- координата X, используемая для установки второй контрольной точки этой кривойCubicCurve2D -
ctrly2- координата Y, используемая для установки второй контрольной точки этой кривойCubicCurve2D -
x2- координата X, используемая для установки конечной точки этой кривойCubicCurve2D -
y2- координата Y, используемая для установки конечной точки этой кривойCubicCurve2D - С тех пор:
- 1.2
setCurve
public void setCurve(double[] coords, int offset)
- Параметры:
-
coords- массив координат с типом double -
offset- индекс в массивеcoords, с которого начинать установку конечных точек и контрольных точек этой кривой в соответствии с координатами в массивеcoords - С тех пор:
- 1.2
setCurve
public void setCurve(Point2D p1, Point2D cp1, Point2D cp2, Point2D p2)
Point2D.- Параметры:
-
p1- первый указанный объектPoint2D, используемый для установки начальной точки этой кривой -
cp1- второй указанный объектPoint2D, используемый для установки первой контрольной точки этой кривой -
cp2- третий указанный объектPoint2D, используемый для установки второй контрольной точки этой кривой -
p2- четвёртый указанный объектPoint2D, используемый для установки конечной точки этой кривой - С тех пор:
- 1.2
setCurve
public void setCurve(Point2D[] pts, int offset)
Point2D в указанном массиве по заданному смещению.- Параметры:
-
pts- массив объектовPoint2D -
offset- индекс в массивеpts, с которого начинать установку конечных точек и контрольных точек этой кривой в соответствии с точками в массивеpts - С тех пор:
- 1.2
setCurve
public void setCurve(CubicCurve2D c)
CubicCurve2D.- Параметры:
-
c- указанная криваяCubicCurve2D - С тех пор:
- 1.2
getFlatnessSq
public static double getFlatnessSq(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)
- Параметры:
-
x1- координата X, определяющая начальную точку кривойCubicCurve2D -
y1- координата Y, определяющая начальную точку кривойCubicCurve2D -
ctrlx1- координата X, определяющая первую контрольную точку кривойCubicCurve2D -
ctrly1- координата Y, определяющая первую контрольную точку кривойCubicCurve2D -
ctrlx2- координата X, определяющая вторую контрольную точку кривойCubicCurve2D -
ctrly2- координата Y, определяющая вторую контрольную точку кривойCubicCurve2D -
x2- координата X, определяющая конечную точку кривойCubicCurve2D -
y2- координата Y, определяющая конечную точку кривойCubicCurve2D - Возвращает:
- квадрат отклонения кривой
CubicCurve2D, представленной указанными координатами. - С тех пор:
- 1.2
getFlatness
public static double getFlatness(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)
- Параметры:
-
x1- координата X, задающая начальную точкуCubicCurve2D -
y1- координата Y, задающая начальную точкуCubicCurve2D -
ctrlx1- координата X, задающая первую контрольную точкуCubicCurve2D -
ctrly1- координата Y, задающая первую контрольную точкуCubicCurve2D -
ctrlx2- координата X, задающая вторую контрольную точкуCubicCurve2D -
ctrly2- координата Y, задающая вторую контрольную точкуCubicCurve2D -
x2- координата X, задающая конечную точкуCubicCurve2D -
y2- координата Y, задающая конечную точкуCubicCurve2D - Возвращает:
- кривизну
CubicCurve2D, представленной указанными координатами. - С:
- 1.2
getFlatnessSq
public static double getFlatnessSq(double[] coords, int offset)
- Параметры:
-
coords- массив, содержащий координаты -
offset- индексcoords, с которого начинать извлечение конечных точек и контрольных точек кривой - Возвращает:
- квадрат кривизны
CubicCurve2D, заданной координатами вcoordsпо указанному смещению. - С:
- 1.2
getFlatness
public static double getFlatness(double[] coords, int offset)
- Параметры:
-
coords- массив, содержащий координаты -
offset- индексcoords, с которого начинать извлечение конечных точек и контрольных точек кривой - Возвращает:
- кривизну
CubicCurve2D, заданной координатами вcoordsпо указанному смещению. - С:
- 1.2
getFlatnessSq
public double getFlatnessSq()
- Возвращает:
- квадрат кривизны этой кривой.
- С:
- 1.2
getFlatness
public double getFlatness()
- Возвращает:
- кривизну этой кривой.
- С:
- 1.2
subdivide
public void subdivide(CubicCurve2D left, CubicCurve2D right)
- Параметры:
-
left- объект кубической кривой для хранения левой или первой половины подразделенной кривой -
right- объект кубической кривой для хранения правой или второй половины подразделенной кривой - С:
- 1.2
subdivide
public static void subdivide(CubicCurve2D src, CubicCurve2D left, CubicCurve2D right)
src, и сохраняет полученные две подразделенные кривые в параметрах кривых left и right. Левый и/или правый объекты могут быть такими же, как и объект src, или null.- Параметры:
-
src- кубическая кривая для деления -
left- объект кубической кривой для хранения левой или первой половины подразделенной кривой -
right- объект кубической кривой для хранения правой или второй половины подразделенной кривой - С:
- 1.2
subdivide
public static void subdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff)
src по индексам srcoff через (srcoff + 7), и сохраняет полученные две подразделенные кривые в два массива результатов по соответствующим индексам. Массивы left и right могут быть null или ссылкой на тот же массив, что и массив src. Обратите внимание, что последняя точка первой подразделенной кривой совпадает с первой точкой второй подразделенной кривой. Таким образом, можно передать один и тот же массив для left и right и использовать смещения, такие как rightoff равно (leftoff + 6), для избежания выделения дополнительного хранилища для этой общей точки.- Параметры:
-
src- массив, содержащий координаты исходной кривой -
srcoff- смещение в массиве начала 6 исходных координат -
left- массив для хранения координат первой половины подразделенной кривой -
leftoff- смещение в массиве начала 6 левых координат -
right- массив для хранения координат второй половины подразделенной кривой -
rightoff- смещение в массиве начала 6 правых координат - С:
- 1.2
solveCubic
public static int solveCubic(double[] eqn)
eqn, и помещает вещественные корни обратно в тот же массив, возвращая количество корней. Решаемое кубическое уравнение представлено уравнением:
eqn = {c, b, a, d}
dx^3 + ax^2 + bx + c = 0
Значение -1 используется для различения константного уравнения, которое может всегда быть 0 или никогда не быть 0, от уравнения, у которого нет корней.- Параметры:
-
eqn- массив, содержащий коэффициенты кубического уравнения - Возвращает:
- количество корней или -1, если уравнение — константа.
- С:
- 1.2
solveCubic
public static int solveCubic(double[] eqn, double[] res)
eqn, и помещает вещественные корни в массив res, возвращая количество корней. Решаемое кубическое уравнение представлено уравнением: eqn = {c, b, a, d} dx^3 + ax^2 + bx + c = 0 Значение -1 используется для различения константного уравнения, которое может всегда быть 0 или никогда не быть 0, от уравнения, у которого нет корней.- Параметры:
-
eqn- указанный массив коэффициентов для решения кубического уравнения -
res- массив, содержащий вещественные корни, полученные в результате решения кубического уравнения - Возвращает:
- количество корней или -1, если уравнение — константа
- С:
- 1.3
contains
public boolean contains(double x, double y)
Shape, как описано в определении принадлежности.contains
public boolean contains(Point2D p)
Point2D внутри границ Shape, как описано в определении принадлежности.intersects
public boolean intersects(double x, double y, double w, double h)
Shape с внутренней частью указанной прямоугольной области. Прямоугольная область считается пересекающей Shape, если любая точка содержится как во внутренней части Shape, так и в указанной прямоугольной области. Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true, когда:
- существует высокая вероятность пересечения прямоугольной области и
Shape, но - вычисления для точного определения этого пересечения являются чрезмерно дорогостоящими.
Shapes этот метод может возвращать true, даже если прямоугольная область не пересекает Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, и поэтому может использоваться, если требуется более точный ответ.- Определено в:
-
intersectsв интерфейсеShape - Параметры:
-
x- координата X верхнего левого угла указанной прямоугольной области -
y- координата Y верхнего левого угла указанной прямоугольной области -
w- ширина указанной прямоугольной области -
h- высота указанной прямоугольной области - Возвращает:
-
true, если внутренняя частьShapeи внутренняя часть прямоугольной области пересекаются или обе с большой вероятностью пересекаются, а вычисления пересечения слишком дороги;falseв противном случае. - С:
- 1.2
- См. также:
intersects
public boolean intersects(Rectangle2D r)
Shape с внутренней частью указанного Rectangle2D. Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true, когда: - существует высокая вероятность пересечения
Rectangle2DиShape, но - вычисления для точного определения этого пересечения являются чрезмерно дорогостоящими.
Shapes этот метод может возвращать true, даже если Rectangle2D не пересекает Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, и поэтому может использоваться, если требуется более точный ответ.- Определено в:
-
intersectsв интерфейсеShape - Параметры:
-
r- указанныйRectangle2D - Возвращает:
-
true, если внутренняя частьShapeи внутренняя часть указанногоRectangle2Dпересекаются или обе с большой вероятностью пересекаются, а вычисления пересечения слишком дороги;falseв противном случае. - С:
- 1.2
- См. также:
contains
public boolean contains(double x, double y, double w, double h)
Shape содержит указанную прямоугольную область. Все координаты, лежащие внутри прямоугольной области, должны лежать внутри Shape для того, чтобы вся прямоугольная область считалась содержащейся в Shape. Метод Shape.contains() позволяет реализации Shape консервативно возвращать false, когда:
- метод
intersectвозвращаетtrueи - вычисления для определения того, полностью ли
Shapeсодержит прямоугольную область, являются чрезмерно дорогостоящими.
Shapes этот метод может возвращать false, даже если Shape содержит прямоугольную область. Класс Area выполняет более точные геометрические вычисления, чем большинство объектов Shape, и поэтому может использоваться, если требуется более точный ответ.- Определено в:
-
containsв интерфейсеShape - Параметры:
-
x- координата X верхнего левого угла указанной прямоугольной области -
y- координата Y верхнего левого угла указанной прямоугольной области -
w- ширина указанной прямоугольной области -
h- высота указанной прямоугольной области - Возвращает:
-
true, если внутренняя частьShapeполностью содержит указанную прямоугольную область;falseв противном случае или еслиShapeсодержит прямоугольную область и методintersectsвозвращаетtrue, а вычисления включения слишком дороги. - С:
- 1.2
- См. также:
contains
public boolean contains(Rectangle2D r)
Shape содержит указанный Rectangle2D. Метод Shape.contains() позволяет реализации Shape консервативно возвращать false, когда: - метод
intersectвозвращаетtrueи - вычисления для определения того, полностью ли
ShapeсодержитRectangle2D, являются чрезмерно дорогостоящими.
Shapes этот метод может возвращать false, даже если Shape содержит Rectangle2D. Класс Area выполняет более точные геометрические вычисления, чем большинство объектов Shape, и поэтому может использоваться, если требуется более точный ответ.- Определено в:
-
containsв интерфейсеShape - Параметры:
-
r- УказанныйRectangle2D - Возвращает:
-
true, если внутренняя частьShapeполностью содержитRectangle2D;falseв противном случае или еслиShapeсодержитRectangle2Dи методintersectsвозвращаетtrue, а вычисления включения слишком дороги. - С:
- 1.2
- См. также:
getBounds2D
public Rectangle2D getBounds2D()
Shape, чем метод getBounds. Обратите внимание, что нет гарантии, что возвращаемый Rectangle2D является наименьшей ограничивающей рамкой, охватывающей Shape, только что Shape целиком находится внутри указанной Rectangle2D. Ограничивающая рамка, возвращаемая этим методом, обычно уже, чем та, которая возвращается методом getBounds, и никогда не терпит неудачу из-за проблем с переполнением, поскольку возвращаемое значение может быть экземпляром Rectangle2D, который использует значения двойной точности для хранения размеров. Обратите внимание, что определение включения может привести к ситуациям, когда точки на определяющей контуре shape могут не считаться содержащимися в возвращаемом объекте bounds, но только в тех случаях, когда эти точки также не считаются содержащимися в исходном shape.
Если point находится внутри shape в соответствии с методом contains(point), то он должен находиться внутри границ возвращаемого Rectangle2D в соответствии с методом contains(point) объекта bounds. В частности:
shape.contains(p) требует bounds.contains(p)
Если point не находится внутри shape, то он все равно может содержаться в объекте bounds:
bounds.contains(p) не подразумевает shape.contains(p)
- Определено в:
-
getBounds2Dв интерфейсеShape - Возвращает:
- экземпляр
Rectangle2D, являющийся высокоточной ограничивающей рамкойShape. - С:
- 1.2
- См. также:
getBounds
public Rectangle getBounds()
Rectangle, полностью охватывающее Shape. Обратите внимание, что нет гарантии, что возвращаемый Rectangle является наименьшей ограничивающей рамкой, охватывающей Shape, только что Shape полностью лежит внутри указанной Rectangle. Возвращаемый Rectangle также может не полностью охватывать Shape, если Shape переполняет ограниченный диапазон целочисленного типа данных. Метод getBounds2D, как правило, возвращает более точную ограничивающую рамку благодаря большей гибкости в представлении. Обратите внимание, что определение принадлежности может привести к ситуациям, когда точки на определяющей контуре shape могут не считаться содержащимися в возвращаемом bounds объекте, но только в тех случаях, когда эти точки также не считаются содержащимися в исходном shape.
Если point находится внутри shape в соответствии с методом contains(point), то он обязательно должен находиться внутри возвращаемых Rectangle границ объекта в соответствии с методом contains(point) bounds. Конкретно:
shape.contains(x,y) требует bounds.contains(x,y)
Если point не находится внутри shape, то он все равно может быть содержащимся в bounds объекте:
bounds.contains(x,y) не подразумевает shape.contains(x,y)
getPathIterator
public PathIterator getPathIterator(AffineTransform at)
CubicCurve2D класс не гарантирует, что изменения в геометрии этого CubicCurve2D объекта не повлияют на уже выполняющиеся итерации по этой геометрии.- Specified by:
-
getPathIteratorв интерфейсеShape - Parameters:
-
at- необязательноеAffineTransform, которое должно быть применено к координатам по мере их возвращения в итерации, илиnull, если требуются не преобразованные координаты - Returns:
- объект
PathIterator, возвращающий геометрию контура этогоCubicCurve2D, по одному сегменту за раз. - Since:
- 1.2
getPathIterator
public PathIterator getPathIterator(AffineTransform at, double flatness)
CubicCurve2D класс не гарантирует, что изменения в геометрии этого CubicCurve2D объекта не повлияют на уже выполняющиеся итерации по этой геометрии.- Specified by:
-
getPathIteratorв интерфейсеShape - Parameters:
-
at- необязательноеAffineTransform, которое должно быть применено к координатам по мере их возвращения в итерации, илиnull, если требуются не преобразованные координаты -
flatness- максимальное отклонение, на которое контрольные точки кривой могут отличаться от коллинеарных до замены кривой с разделением на прямую линию, соединяющую конечные точки. - Returns:
- объект
PathIterator, возвращающий геометрию контура этогоCubicCurve2D, по одному сегменту за раз. - Since:
- 1.2
clone
public Object clone()
- Overrides:
-
cloneв классеObject - Returns:
- клонированный экземпляр.
- Throws:
-
OutOfMemoryError- если памяти недостаточно. - Since:
- 1.2
- See Also:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/geom/CubicCurve2D.html