私はいくつかのポイントを通してラインカーブを作る方法を探しています。カーブに文脈を与えるためには、ポイントに入る線の角度に文脈を与えることが必要であるかもしれないと私は考えていましたが、3点を使用することが望ましいでしょう。ポイントを使ってラインカーブを作成する方法
一般に、開始点P1、制御点P2、および終了点P3の場合、線はP1からP2にカーブし、次にP2からP3にカーブする必要があります。ここでは実際には
は私が達成したい効果の完璧な例です:
私はこれを行うことができれば、私は本当に永遠に感謝されます! Javaでは
これまでのところ、私は(はPath2D.Doubleでcurvetoといったを使用して)Cub icCurve2D.Double、などQuadCurve2D.Doubleようなもので遊んでみましたともPath2D.Doubleましたが、無駄に - 描かれている曲線が通過するのにも近くありませんコントロールポイントが指定されています。ここで
は、私がこれまで試してみました方法の画像です:
そして、ここでは、私は、画像内の点と曲線を生成するために使用されるコードは次のとおりです。
Graphics2D g = (Graphics2D) window.getGraphics();
g.setColor(Color.blue);
int d = 4;
// P0
int x0 = window.getWidth()/8;
int y0 = 250;
g.drawString("P0", x0, y0 + 4*d);
g.fillRect(x0, y0, d, d);
// P1
int x1 = (window.getWidth()/7)*2;
int y1 = 235;
g.drawString("P1", x1, y1 + 4*d);
g.fillRect(x1, y1, d, d);
// P2
int x2 = (window.getWidth()/2);
int y2 = 200;
g.drawString("P2", x2, y2 - 2*d);
g.fillRect(x2, y2, d, d);
// P3
int x3 = (window.getWidth()/7)*5;
int y3 = 235;
g.drawString("P3", x3, y3 + 4*d);
g.fillRect(x3, y3, d, d);
// P4
int x4 = (window.getWidth()/8)*7;
int y4 = 250;
g.drawString("P4", x4, y4 + 4*d);
g.fillRect(x4, y4, d, d);
g.setColor(Color.cyan);
QuadCurve2D quadCurve = new QuadCurve2D.Double(x0, y0, x2, y2, x4, y4);
g.draw(quadCurve);
g.setColor(Color.YELLOW);
CubicCurve2D.Double cubicCurve = new CubicCurve2D.Double((double)x0, (double)y0,
(double)x1, (double)y1,
(double)x2, (double)y2,
(double)x4, (double)y4);
g.draw(cubicCurve);
g.setColor(Color.red);
Path2D.Double path1 = new Path2D.Double();
path1.moveTo(x1, y1);
path1.curveTo(x0, y0, x2, y2, x4, y4);
g.draw(path1);
私が書いた折れ線グラフ上の頂点間の遷移を「滑らかにしたい」ということが、曲線を曲線を通るようにしたいという私の理由です。誰もがそれを言及する前にJFree Chartはオプションではありません。私は使用されているさまざまな種類の曲線とスプラインがあることを理解していますが、私は彼らの動作の仕方や私のニーズに合ったものを実装する方法を正確に理解することができませんでした。
事前に感謝の意を表します。
点の配列を通って曲線を描くように求めていますか? –
はい、Irwin-Hallスプライン上の各点が配列内の要素であると考えてください。 –