Класс 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. |
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. |
Методы, объявленные в классе java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе java.awt.Shape
getBounds2D
Подробное описание конструкторов
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)
- Parameters:
-
x1— координата X, определяющая начальную точкуCubicCurve2D -
y1— координата Y, определяющая начальную точкуCubicCurve2D -
ctrlx1— координата X, определяющая первую контрольную точкуCubicCurve2D -
ctrly1— координата Y, определяющая первую контрольную точкуCubicCurve2D -
ctrlx2— координата X, определяющая вторую контрольную точкуCubicCurve2D -
ctrly2— координата Y, определяющая вторую контрольную точкуCubicCurve2D -
x2— координата X, определяющая конечную точкуCubicCurve2D -
y2— координата Y, определяющая конечную точкуCubicCurve2D - Returns:
- кривизна
CubicCurve2D, представленная заданными координатами. - Since:
- 1.2
getFlatnessSq
public static double getFlatnessSq(double[] coords, int offset)
- Parameters:
-
coords— массив, содержащий координаты -
offset— индексcoords, с которого начинать получение конечных точек и контрольных точек кривой - Returns:
- квадрат кривизны
CubicCurve2D, заданной координатами вcoordsпо указанному смещению. - Since:
- 1.2
getFlatness
public static double getFlatness(double[] coords, int offset)
- Parameters:
-
coords— массив, содержащий координаты -
offset— индексcoords, с которого начинать получение конечных точек и контрольных точек кривой - Returns:
- кривизна
CubicCurve2D, заданной координатами вcoordsпо указанному смещению. - Since:
- 1.2
getFlatnessSq
public double getFlatnessSq()
- Returns:
- квадрат кривизны этой кривой.
- Since:
- 1.2
getFlatness
public double getFlatness()
- Returns:
- кривизна этой кривой.
- Since:
- 1.2
subdivide
public void subdivide(CubicCurve2D left, CubicCurve2D right)
- Parameters:
-
left— объект кубической кривой для хранения левой или первой половины раздробленной кривой -
right— объект кубической кривой для хранения правой или второй половины раздробленной кривой - Since:
- 1.2
subdivide
public static void subdivide(CubicCurve2D src, CubicCurve2D left, CubicCurve2D right)
src, и сохраняет две получившиеся подкривые в параметрах кривых left и right. Левый и/или правый объекты могут быть такими же, как объект src, или null.
- Parameters:
-
src— кубическая кривая, подлежащая делению -
left— объект кубической кривой для хранения левой или первой половины раздробленной кривой -
right— объект кубической кривой для хранения правой или второй половины раздробленной кривой - Since:
- 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), чтобы избежать выделения дополнительного места для этой общей точки.- Parameters:
-
src— массив, содержащий координаты исходной кривой -
srcoff— смещение в массиве начала 6 исходных координат -
left— массив для хранения координат первой половины раздробленной кривой -
leftoff— смещение в массиве начала 6 левых координат -
right— массив для хранения координат второй половины раздробленной кривой -
rightoff— смещение в массиве начала 6 правых координат - Since:
- 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, от уравнения, у которого нет корней.- Parameters:
-
eqn— массив, содержащий коэффициенты для кубического уравнения - Returns:
- количество корней или -1, если уравнение является постоянным.
- Since:
- 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, от уравнения, у которого нет корней.- Parameters:
-
eqn— указанный массив коэффициентов для решения кубического уравнения -
res— массив, содержащий вещественные корни, полученные в результате решения кубического уравнения - Returns:
- количество корней или -1, если уравнение является постоянным
- Since:
- 1.3
contains
public boolean contains(double x, double y)
Shape, как описано в определении инвариантности.- Specified by:
-
containsв интерфейсеShape - Parameters:
-
x— указанная координата X для проверки -
y— указанная координата Y для проверки - Returns:
-
trueесли указанные координаты находятся внутри границShape;falseв противном случае. - Since:
- 1.2
contains
public boolean contains(Point2D p)
Point2D внутри границ Shape, как описано в определении инвариантности.- Specified by:
-
containsв интерфейсеShape - Parameters:
-
p— указаннаяPoint2Dдля проверки - Returns:
-
trueесли указаннаяPoint2Dнаходится внутри границShape;falseв противном случае. - Since:
- 1.2
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, и поэтому может быть использован, если требуется более точный ответ.- Specified by:
-
intersectsв интерфейсеShape - Parameters:
-
x- координата X левого верхнего угла указанной прямоугольной области -
y- координата Y левого верхнего угла указанной прямоугольной области -
w- ширина указанной прямоугольной области -
h- высота указанной прямоугольной области - Returns:
-
trueесли внутренние областиShapeи прямоугольной области пересекаются или обе области, скорее всего, пересекаются, а вычисления пересечения слишком сложны;falseв противном случае. - Since:
- 1.2
- See Also:
intersects
public boolean intersects(Rectangle2D r)
Shape с внутренней областью указанного Rectangle2D. Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true в случае: - высокой вероятности пересечения
Rectangle2DиShape, но - чрезмерной сложности вычислений для точного определения этого пересечения.
Shapes этот метод может вернуть true, даже если Rectangle2D не пересекает Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, и поэтому может быть использован, если требуется более точный ответ.- Specified by:
-
intersectsв интерфейсеShape - Parameters:
-
r- указанныйRectangle2D - Returns:
-
trueесли внутренние областиShapeи указанногоRectangle2Dпересекаются или обе области, скорее всего, пересекаются, а вычисления пересечения слишком сложны;falseв противном случае. - Since:
- 1.2
- See Also:
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, и поэтому может быть использован, если требуется более точный ответ.- Specified by:
-
containsв интерфейсеShape - Parameters:
-
x- координата X левого верхнего угла указанной прямоугольной области -
y- координата Y левого верхнего угла указанной прямоугольной области -
w- ширина указанной прямоугольной области -
h- высота указанной прямоугольной области - Returns:
-
trueесли внутренняя областьShapeполностью содержит указанную прямоугольную область;falseв противном случае или еслиShapeсодержит прямоугольную область, и методintersectsвозвращаетtrueи вычисления включения слишком сложны. - Since:
- 1.2
- See Also:
contains
public boolean contains(Rectangle2D r)
Shape содержит указанный Rectangle2D. Метод Shape.contains() позволяет реализации Shape консервативно возвращать false в случае: - метод
intersectвозвращаетtrueи - вычисления того, полностью ли
Shapeсодержит указанныйRectangle2D, слишком сложны.
Shapes этот метод может вернуть false, даже если Shape содержит Rectangle2D. Класс Area выполняет более точные геометрические вычисления, чем большинство объектов Shape, и поэтому может быть использован, если требуется более точный ответ.- Specified by:
-
containsв интерфейсеShape - Parameters:
-
r- УказанныйRectangle2D - Returns:
-
trueесли внутренняя областьShapeполностью содержит указанныйRectangle2D;falseв противном случае или еслиShapeсодержит указанныйRectangle2D, и методintersectsвозвращаетtrueи вычисления включения слишком сложны. - Since:
- 1.2
- See Also:
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)
- Specified by:
-
getBoundsв интерфейсеShape - Returns:
- целый
Rectangle, полностью охватывающийShape. - Since:
- 1.2
- See Also:
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, 2021, 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/17/docs/api/java.desktop/java/awt/geom/CubicCurve2D.html