Класс CubicCurve2D
- Все реализуемые интерфейсы:
Shape, Cloneable
- Прямые известные подклассы:
CubicCurve2D.Double, CubicCurve2D.Float
public abstract class CubicCurve2D extends Object implements Shape, Cloneable
CubicCurve2D задаёт сегмент кубической параметрической кривой в координатном пространстве (x,y). Этот класс является только абстрактным суперклассом для всех объектов, хранящих сегмент двумерной кубической кривой. Способ хранения координат определяется подклассом.
- Начиная с версии:
- 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 |
Задаёт координаты конечных и контрольных точек этой кривой, используя значения типа double из указанного массива начиная с указанного смещения. |
abstract void |
setCurve |
Задаёт координаты конечных и контрольных точек этой кривой указанными значениями типа double. |
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. Объект 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 не повлияют на уже выполняющиеся итерации этой геометрии.- Определено в:
-
getPathIteratorв интерфейсеShape - Параметры:
-
at— необязательныйAffineTransform, применяемый к координатам при их возврате в ходе итерации, илиnull, если нужны координаты без преобразования - Возвращает:
- объект
PathIterator, который возвращает геометрию контура этойCubicCurve2Dпо одному сегменту за раз. - С версии:
- 1.2
getPathIterator
public PathIterator getPathIterator(AffineTransform at, double flatness)
CubicCurve2D не гарантирует, что изменения геометрии объекта CubicCurve2D не повлияют на уже выполняющиеся итерации этой геометрии.- Определено в:
-
getPathIteratorв интерфейсеShape - Параметры:
-
at— необязательныйAffineTransform, применяемый к координатам при их возврате в ходе итерации, илиnull, если нужны координаты без преобразования -
flatness— максимальное отклонение контрольных точек заданной кривой от коллинеарности, при превышении которого кривая после разбиения заменяется прямой линией, соединяющей конечные точки - Возвращает:
- объект
PathIterator, который возвращает геометрию контура этойCubicCurve2Dпо одному сегменту за раз. - С версии:
- 1.2
clone
public Object clone()
- Переопределяет:
-
cloneв классеObject - Возвращает:
- копию этого экземпляра.
- Выбрасывает:
-
OutOfMemoryError— если недостаточно памяти. - С версии:
- 1.2
- См. также:
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/geom/CubicCurve2D.html