JavaTM 2
Platform
Std. Ed. v1.4.0

java.awt.geom
クラス CubicCurve2D

java.lang.Object
  |
  +--java.awt.geom.CubicCurve2D
すべての実装インタフェース:
Cloneable, Shape
直系の既知のサブクラス:
CubicCurve2D.Double, CubicCurve2D.Float

public abstract class CubicCurve2D
extends Object
implements Shape, Cloneable

CubicCurve2D クラスは、(x, y) 座標空間の 3 次パラメトリック曲線セグメントを定義します。

このクラスは、2D の 3 次曲線セグメントを格納するすべてのオブジェクトの抽象スーパークラスであり、座標の実際の記憶域表現はサブクラスに委ねられます。


入れ子クラスの概要
static class CubicCurve2D.Double
          double 座標で指定された 3 次パラメトリック曲線セグメントです。
static class CubicCurve2D.Float
          float 座標で指定された 3 次パラメトリック曲線セグメントです。
 
コンストラクタの概要
protected CubicCurve2D()
          これは、インスタンスを直接には生成できない抽象クラスです。
 
メソッドの概要
 Object clone()
          このオブジェクトと同じクラスの新しいオブジェクトを作成します。
 boolean contains(double x, double y)
          指定された座標が形状の境界内にあるかどうかを判定します。
 boolean contains(double x, double y, double w, double h)
          形状の内部が、指定された矩形座標セットを完全に包含しているかどうかを判定します。
 boolean contains(Point2D p)
          指定された Point2D が形状の境界内にあるかどうかを判定します。
 boolean contains(Rectangle2D r)
          形状の内部が、指定された Rectangle2D を完全に包含しているかどうかを判定します。
 Rectangle getBounds()
          形状のバウンディングボックスを返します。
abstract  Point2D getCtrlP1()
          最初の制御点を返します。
abstract  Point2D getCtrlP2()
          2 番目の制御点を返します。
abstract  double getCtrlX1()
          最初の制御点の X 座標を倍精度で返します。
abstract  double getCtrlX2()
          2 番目の制御点の X 座標を倍精度で返します。
abstract  double getCtrlY1()
          最初の制御点の Y 座標を倍精度で返します。
abstract  double getCtrlY2()
          2 番目の制御点の Y 座標を倍精度で返します。
 double getFlatness()
          この曲線のフラットネスを返します。
static double getFlatness(double[] coords, int offset)
          指定された配列の、指定されたインデックスに格納された制御点で示される、3 次曲線のフラットネスを返します。
static double getFlatness(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)
          指定された制御点で指定される 3 次曲線のフラットネスを返します。
 double getFlatnessSq()
          この曲線のフラットネスの 2 乗を返します。
static double getFlatnessSq(double[] coords, int offset)
          指定された配列の、指定されたインデックスに格納された制御点で示される 3 次曲線のフラットネスの 2 乗を返します。
static double getFlatnessSq(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)
          指定された制御点で示される 3 次方程式のフラットネスの 2 乗を返します。
abstract  Point2D getP1()
          始点を返します。
abstract  Point2D getP2()
          終点を返します。
 PathIterator getPathIterator(AffineTransform at)
          形状の境界を定義する繰り返しオブジェクトを返します。
 PathIterator getPathIterator(AffineTransform at, double flatness)
          平坦化された形状の境界を定義する繰り返しオブジェクトを返します。
abstract  double getX1()
          始点の X 座標を倍精度で返します。
abstract  double getX2()
          終点の X 座標を倍精度で返します。
abstract  double getY1()
          始点の Y 座標を倍精度で返します。
abstract  double getY2()
          終点の Y 座標を倍精度で返します。
 boolean intersects(double x, double y, double w, double h)
          形状が、指定された矩形座標セットの内部と交差するかどうかを判定します。
 boolean intersects(Rectangle2D r)
          形状が、指定された Rectangle2D の内部と交差するかどうかを判定します。
 void setCurve(CubicCurve2D c)
          この曲線の端点と制御点の位置を、指定された CubicCurve2D 内の対応する位置と同じに設定します。
 void setCurve(double[] coords, int offset)
          この曲線の端点と制御点の位置を、指定されたオフセットにある double 座標に指定された配列として設定します。
abstract  void setCurve(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)
          この曲線の端点と制御点の位置を、指定された double 座標に設定します。
 void setCurve(Point2D[] pts, int offset)
          指定された配列の指定されたオフセットにある Point2D オブジェクトの座標に、この曲線の端点と制御点の位置を設定します。
 void setCurve(Point2D p1, Point2D cp1, Point2D cp2, Point2D p2)
          この曲線の端点と制御点の位置を、指定された Point2D 座標に設定します。
static int solveCubic(double[] eqn)
          係数が eqn 配列にある 3 次方程式の解を得て、非複素数解を同じ配列に戻し、結果として解の個数を返します。
static int solveCubic(double[] eqn, double[] res)
          係数が eqn 配列にある 3 次方程式の解を得て、非複素数解を res 配列に戻し、結果として解の個数を返します。
 void subdivide(CubicCurve2D left, CubicCurve2D right)
          この 3 次曲線を分割して、分割した 2 つの曲線を left および right の 3 次曲線パラメータに格納します。
static void subdivide(CubicCurve2D src, CubicCurve2D left, CubicCurve2D right)
          src パラメータで指定された 3 次曲線を分割して、分割した 2 つの曲線を left および right の曲線パラメータに格納します。
static void subdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff)
          src 配列のインデックス srcoff から (srcoff + 7) までに格納されている座標で指定される 3 次曲線を分割して、分割した 2 つの曲線を 2 つの配列の対応するインデックスに格納します。
 
クラス java.lang.Object から継承したメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
インタフェース java.awt.Shape から継承したメソッド
getBounds2D
 

コンストラクタの詳細

CubicCurve2D

protected CubicCurve2D()
これは、インスタンスを直接には生成できない抽象クラスです。インスタンス生成のためには型固有の実装サブクラスが用意されており、これらのサブクラスにより、下記の各種アクセス用メソッドに必要な情報を格納するための形式が多数提供されます。

関連項目:
CubicCurve2D.Float, CubicCurve2D.Double
メソッドの詳細

getX1

public abstract double getX1()
始点の X 座標を倍精度で返します。

戻り値:
CubicCurve2D の始点の X 座標

getY1

public abstract double getY1()
始点の Y 座標を倍精度で返します。

戻り値:
CubicCurve2D の始点の Y 座標

getP1

public abstract Point2D getP1()
始点を返します。

戻り値:
CubicCurve2D の始点を表す Point2D

getCtrlX1

public abstract double getCtrlX1()
最初の制御点の X 座標を倍精度で返します。

戻り値:
CubicCurve2D の最初の制御点の X 座標

getCtrlY1

public abstract double getCtrlY1()
最初の制御点の Y 座標を倍精度で返します。

戻り値:
CubicCurve2D の最初の制御点の Y 座標

getCtrlP1

public abstract Point2D getCtrlP1()
最初の制御点を返します。

戻り値:
CubicCurve2D の最初の制御点を表す Point2D

getCtrlX2

public abstract double getCtrlX2()
2 番目の制御点の X 座標を倍精度で返します。

戻り値:
CubicCurve2D の 2 番目の制御点の X 座標

getCtrlY2

public abstract double getCtrlY2()
2 番目の制御点の Y 座標を倍精度で返します。

戻り値:
CubicCurve2D の 2 番目の制御点の Y 座標

getCtrlP2

public abstract Point2D getCtrlP2()
2 番目の制御点を返します。

戻り値:
CubicCurve2D の 2 番目の制御点を表す Point2D

getX2

public abstract double getX2()
終点の X 座標を倍精度で返します。

戻り値:
CubicCurve2D の終点の X 座標

getY2

public abstract double getY2()
終点の Y 座標を倍精度で返します。

戻り値:
CubicCurve2D の終点の Y 座標

getP2

public abstract Point2D getP2()
終点を返します。

戻り値:
CubicCurve2D の終点を表す Point2D

setCurve

public abstract void setCurve(double x1,
                              double y1,
                              double ctrlx1,
                              double ctrly1,
                              double ctrlx2,
                              double ctrly2,
                              double x2,
                              double y2)
この曲線の端点と制御点の位置を、指定された double 座標に設定します。


setCurve

public void setCurve(double[] coords,
                     int offset)
この曲線の端点と制御点の位置を、指定されたオフセットにある double 座標に指定された配列として設定します。

パラメータ:
coords - 座標を格納する double 配列
offset - coords のインデックス。このインデックス位置以降の coords に格納された座標に、この曲線の端点と制御点を設定する

setCurve

public void setCurve(Point2D p1,
                     Point2D cp1,
                     Point2D cp2,
                     Point2D p2)
この曲線の端点と制御点の位置を、指定された Point2D 座標に設定します。

パラメータ:
p1 - この曲線の始点を設定するのに使われる、最初に指定された Point2D
cp1 - この曲線の最初の制御点を設定するのに使われる、2 番目に指定された Point2D
cp2 - この曲線の 2 番目の制御点を設定するのに使われる、3 番目に指定された Point2D
p2 - この曲線の終点を設定するのに使われる、4 番目に指定された Point2D

setCurve

public void setCurve(Point2D[] pts,
                     int offset)
指定された配列の指定されたオフセットにある Point2D オブジェクトの座標に、この曲線の端点と制御点の位置を設定します。

パラメータ:
pts - Point2D オブジェクトの配列
offset - pts のインデックス。このインデックス位置以降の pts に格納された点に、この曲線の端点と制御点を設定する

setCurve

public void setCurve(CubicCurve2D c)
この曲線の端点と制御点の位置を、指定された CubicCurve2D 内の対応する位置と同じに設定します。

パラメータ:
c - 指定された CubicCurve2D

getFlatnessSq

public static double getFlatnessSq(double x1,
                                   double y1,
                                   double ctrlx1,
                                   double ctrly1,
                                   double ctrlx2,
                                   double ctrly2,
                                   double x2,
                                   double y2)
指定された制御点で示される 3 次方程式のフラットネスの 2 乗を返します。フラットネスとは、端点間を結ぶ線から制御点への最大距離です。

戻り値:
指定された座標で表される CubicCurve2D のフラットネスの 2 乗

getFlatness

public static double getFlatness(double x1,
                                 double y1,
                                 double ctrlx1,
                                 double ctrly1,
                                 double ctrlx2,
                                 double ctrly2,
                                 double x2,
                                 double y2)
指定された制御点で指定される 3 次曲線のフラットネスを返します。フラットネスとは、端点間を結ぶ線から制御点への最大距離です。

戻り値:
指定された座標で表される CubicCurve2D のフラットネス

getFlatnessSq

public static double getFlatnessSq(double[] coords,
                                   int offset)
指定された配列の、指定されたインデックスに格納された制御点で示される 3 次曲線のフラットネスの 2 乗を返します。フラットネスとは、端点間を結ぶ線から制御点への最大距離です。

パラメータ:
coords - 座標が格納されている配列
offset - coords のインデックス。このインデックス位置以降の coords に格納された座標に、この曲線の端点と制御点を設定する
戻り値:
coords の指定されたオフセットにある座標で示される CubicCurve2D のフラットネスの 2 乗

getFlatness

public static double getFlatness(double[] coords,
                                 int offset)
指定された配列の、指定されたインデックスに格納された制御点で示される、3 次曲線のフラットネスを返します。フラットネスとは、端点間を結ぶ線から制御点への最大距離です。

パラメータ:
coords - 座標が格納されている配列
offset - coords のインデックス。このインデックス位置以降の coords に格納された座標に、この曲線の端点と制御点を設定する
戻り値:
coords の指定されたオフセットにある座標で示される CubicCurve2D のフラットネス

getFlatnessSq

public double getFlatnessSq()
この曲線のフラットネスの 2 乗を返します。フラットネスとは、端点間を結ぶ線から制御点への最大距離です。

戻り値:
この曲線のフラットネスの 2 乗

getFlatness

public double getFlatness()
この曲線のフラットネスを返します。フラットネスとは、端点間を結ぶ線から制御点への最大距離です。

戻り値:
この曲線のフラットネス

subdivide

public void subdivide(CubicCurve2D left,
                      CubicCurve2D right)
この 3 次曲線を分割して、分割した 2 つの曲線を left および right の 3 次曲線パラメータに格納します。left オブジェクトと right オブジェクトのどちらか、または両方とも、このオブジェクトと同じか null になります。

パラメータ:
left - 分割された曲線の左側 (最初の半分) を格納するための 3 次曲線オブジェクト
right - 分割された曲線の右側 (残り半分) を格納するための 3 次曲線オブジェクト

subdivide

public static void subdivide(CubicCurve2D src,
                             CubicCurve2D left,
                             CubicCurve2D right)
src パラメータで指定された 3 次曲線を分割して、分割した 2 つの曲線を left および right の曲線パラメータに格納します。left オブジェクトと right オブジェクトのどちらか、または両方とも、src オブジェクトと同じか null になります。

パラメータ:
src - 分割される 3 次曲線
left - 分割された曲線の左側 (最初の半分) を格納するための 3 次曲線オブジェクト
right - 分割された曲線の右側 (残り半分) を格納するための 3 次曲線オブジェクト

subdivide

public static void subdivide(double[] src,
                             int srcoff,
                             double[] left,
                             int leftoff,
                             double[] right,
                             int rightoff)
src 配列のインデックス srcoff から (srcoff + 7) までに格納されている座標で指定される 3 次曲線を分割して、分割した 2 つの曲線を 2 つの配列の対応するインデックスに格納します。left 配列と right 配列のどちらか、または両方とも、null か、src 配列と同じ配列への参照になります。ただし、分割された最初の曲線の終点は 2 つ目の曲線の始点と同じです。そのためこの共通の点に余分な記憶域を割り当てるのを避けるために、left 用と right 用として同じ配列を渡して、rightoff が (leftoff + 6) と等しいオフセットを使用できます。

パラメータ:
src - 転送元曲線の座標を保持する配列
srcoff - 6 つの転送元座標の先頭の配列へのオフセット
left - 分割された曲線の最初の半分の座標を格納するための配列
leftoff - 6 つの左座標の先頭の配列へのオフセット
right - 分割された曲線の残り半分の座標を格納するための配列
rightoff - 6 つの右座標の先頭の配列へのオフセット

solveCubic

public static int solveCubic(double[] eqn)
係数が eqn 配列にある 3 次方程式の解を得て、非複素数解を同じ配列に戻し、結果として解の個数を返します。解を得た 3 次方程式は次の等式で表されます。
     eqn = {c, b, a, d}
     dx^3 + ax^2 + bx + c = 0
 
戻り値の -1 を使うと、常に 0 であるかまたは 0 でない定数方程式と、ゼロを持たない方程式とを区別できます。

パラメータ:
eqn - 3 次方程式の係数を格納している配列
戻り値:
解の個数。ただし、方程式が定数の場合は -1

solveCubic

public static int solveCubic(double[] eqn,
                             double[] res)
係数が eqn 配列にある 3 次方程式の解を得て、非複素数解を res 配列に戻し、結果として解の個数を返します。解を得た 3 次方程式は eqn = {c, b, a, d} dx^3 + ax^2 + bx + c = 0 という等式で表されます。戻り値の -1 を使うと、常に 0 であるかまたは 0 でない定数方程式と、ゼロを持たない方程式とを区別できます。

パラメータ:
eqn - 3 次方程式の解を得るのに使う係数の、指定された配列
res - 3 次方程式の解から得られる非複素数解を格納する配列
戻り値:
解の個数。ただし、方程式が定数の場合は -1

contains

public boolean contains(double x,
                        double y)
指定された座標が形状の境界内にあるかどうかを判定します。

定義:
インタフェース Shape 内の contains
戻り値:
座標が形状の境界内にある場合は true、そうでない場合は false

contains

public boolean contains(Point2D p)
指定された Point2D が形状の境界内にあるかどうかを判定します。

定義:
インタフェース Shape 内の contains
パラメータ:
p - 判定対象の、指定された Point2D
戻り値:
p が形状の境界内にある場合は true、そうでない場合は false

intersects

public boolean intersects(double x,
                          double y,
                          double w,
                          double h)
形状が、指定された矩形座標セットの内部と交差するかどうかを判定します。

定義:
インタフェース Shape 内の intersects
パラメータ:
w - 指定された矩形領域の幅
h - 指定された矩形領域の高さ
戻り値:
形状が、指定された矩形領域の内部と交差する場合は true、そうでない場合は false
関連項目:
Area

intersects

public boolean intersects(Rectangle2D r)
形状が、指定された Rectangle2D の内部と交差するかどうかを判定します。

定義:
インタフェース Shape 内の intersects
パラメータ:
r - 判定対象の、指定された Rectangle2D
戻り値:
形状が、指定された Rectangle2D の内部と交差する場合は true、そうでない場合は false
関連項目:
Shape.intersects(double, double, double, double)

contains

public boolean contains(double x,
                        double y,
                        double w,
                        double h)
形状の内部が、指定された矩形座標セットを完全に包含しているかどうかを判定します。

定義:
インタフェース Shape 内の contains
パラメータ:
w - 指定された矩形形状の幅
h - 指定された矩形形状の高さ
戻り値:
形状が、指定された矩形座標セットを完全に包含している場合は true、そうでない場合は false
関連項目:
Area, Shape.intersects(double, double, double, double)

contains

public boolean contains(Rectangle2D r)
形状の内部が、指定された Rectangle2D を完全に包含しているかどうかを判定します。

定義:
インタフェース Shape 内の contains
パラメータ:
r - 判定対象の、指定された Rectangle2D
戻り値:
形状が、指定された Rectangle2D を完全に包含している場合は true、そうでない場合は false
関連項目:
Shape.contains(double, double, double, double)

getBounds

public Rectangle getBounds()
形状のバウンディングボックスを返します。

定義:
インタフェース Shape 内の getBounds
戻り値:
形状のバウンディングボックスを表す Rectangle
関連項目:
Shape.getBounds2D()

getPathIterator

public PathIterator getPathIterator(AffineTransform at)
形状の境界を定義する繰り返しオブジェクトを返します。このクラスの反復子は、マルチスレッドに対して安全ではありません。つまりこの CubicCurve2D クラスでは、この CubicCurve2D オブジェクトのジオメトリを変更すると、このジオメトリについてすでに進行中の繰り返し処理に影響を及ぼす場合があります。

定義:
インタフェース Shape 内の getPathIterator
パラメータ:
at - 繰り返し処理で返される座標に適用されるオプションの AffineTransform。変換されていない座標が必要な場合は null
戻り値:
この CubicCurve2D の輪郭のジオメトリを一度に 1 セグメントずつ返す PathIterator オブジェクト

getPathIterator

public PathIterator getPathIterator(AffineTransform at,
                                    double flatness)
平坦化された形状の境界を定義する繰り返しオブジェクトを返します。このクラスの反復子は、マルチスレッドに対して安全ではありません。つまりこの CubicCurve2D クラスでは、この CubicCurve2D オブジェクトのジオメトリを変更すると、このジオメトリについてすでに進行中の繰り返し処理に影響を及ぼす場合があります。

定義:
インタフェース Shape 内の getPathIterator
パラメータ:
at - 繰り返し処理で返される座標に適用されるオプションの AffineTransform。変換されていない座標が必要な場合は null
flatness - 指定された曲線上の制御点を動かしたとき、分割された曲線が端点を結ぶ直線により置換されない条件で、制御点がこの直線からもっとも離れる距離
戻り値:
この CubicCurve2D の輪郭のジオメトリを一度に 1 セグメントずつ返す PathIterator オブジェクト

clone

public Object clone()
このオブジェクトと同じクラスの新しいオブジェクトを作成します。

オーバーライド:
クラス Object 内の clone
戻り値:
このインスタンスの複製
例外:
OutOfMemoryError - 十分なメモリがない場合
導入されたバージョン:
1.2
関連項目:
Cloneable

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.