メソッドを使って設定

広告

CubicCurve2D.Doubleクラスで各設定値をコンストラクタで指定する以外にオブジェクトを作成した後でメソッドを使って設定することが出来ます。CubicCurve2D.Doubleクラスで用意されている「setCurve」メソッドを使います。

この曲線の終点と制御点の位置を、指定された double 座標に設定します。 

パラメータ:
  x1 - この CubicCurve2D の始点を設定するために 使用される X 座標
  y1 - この CubicCurve2D の始点を設定するために 使用される Y 座標
  ctrlx1 - この CubicCurve2D の最初の制御点を設定するために 使用される
    X 座標
  ctrly1 - この CubicCurve2D の最初の制御点を設定するために 使用される
    Y 座標
  ctrlx2 - この CubicCurve2D の 2 番目の制御点を設定するために 使用され
    る X 座標
  ctrly2 - この CubicCurve2D の 2 番目の制御点を設定するために 使用され
    る Y 座標
  x2 - この CubicCurve2D の終点を設定するために 使用される X 座標
  y2 - この CubicCurve2D の終点を設定するために 使用される Y 座標

1番目と2番目の引数で始点座標を指定します。3番目と4番目の引数で1番目の制御点の座標を指定します。5番目と6番目の引数で2番目の制御点の座標を指定します。7番目と8番目の引数で終点座標を指定します。

具体的には次のように記述します。

CubicCurve2D.Double curve = new CubicCurve2D.Double();
curve.setCurve(20.0d, 20.0d, 20.0d, 160.0d, 40.0d, 30.0d, 150.0d, 100.0d);

サンプルプログラム

簡単なサンプルを一度試してみます。

CubicCurve2DTest1.java

import javax.swing.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.*;

public class CubicCurve2DTest1 extends JPanel{
  public static void main(String[] args){
    JFrame frame = new JFrame();

    CubicCurve2DTest1 app = new CubicCurve2DTest1();
    frame.getContentPane().add(app);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("タイトル");
    frame.setVisible(true);
  }

  public void paintComponent(Graphics g){
    Graphics2D g2 = (Graphics2D)g;

    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
                        RenderingHints.VALUE_ANTIALIAS_ON);

    CubicCurve2D.Double curve = new CubicCurve2D.Double();
    curve.setCurve(60.0d, 20.0d, 
                   40.0d, 140.0d, 
                   200.0d, 30.0d, 
                   220.0d, 120.0d);

    g2.draw(curve);

    double x1 = curve.x1;
    double y1 = curve.y1;
    double x2 = curve.x2;
    double y2 = curve.y2;
    double ctrlx1 = curve.ctrlx1;
    double ctrly1 = curve.ctrly1;
    double ctrlx2 = curve.ctrlx2;
    double ctrly2 = curve.ctrly2;

    g2.draw(new Ellipse2D.Double(x1 - 5.0d, y1 - 5.d, 10.d, 10.0d));
    g2.draw(new Ellipse2D.Double(x2 - 5.0d, y2 - 5.d, 10.d, 10.0d));
    g2.draw(new Ellipse2D.Double(ctrlx1 - 5.0d, ctrly1 - 5.d, 10.d, 10.0d));
    g2.draw(new Ellipse2D.Double(ctrlx2 - 5.0d, ctrly2 - 5.d, 10.d, 10.0d));
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

始点や終点を設定する

( Written by Tatsuo Ikura )