Szukam sposobu, aby utworzyć krzywą liniową przez wiele punktów. Byłoby lepiej użyć 3 punktów, chociaż uważałem, że w celu podania kontekstu do kąta linii wchodzącej do punktu może być potrzebne więcej, aby nadać kontekst krzywej, by tak rzec.Jak utworzyć krzywą liniową przez punkty
Ogólnie P1 punktu początkowego punktu kontroli i P2 P3 punktu końcowego linii powinien krzywa z P2-P1, a krzywa z P2-P3.
W rzeczywistości tutaj jest doskonałym przykładem efektu chciałbym osiągnąć:
Gdybym mógł to zrobić naprawdę byłaby wdzięczna!
W Javie tak daleko, próbowałem zabawy z rzeczy, takich jak QuadCurve2D.Double, Cub icCurve2D.Double a także Path2D.Double (stosując curveTo z Path2D.Double), ale bezskutecznie - krzywe, które są malowane nie są nawet blisko przejazdem określony punkt kontrolny.
Oto obraz metod próbowałem dotąd:
A oto kod I używany do generowania punktów i krzywych na obrazku:
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);
Moje powody, dla których chciałbym, aby zakrzywiona linia przechodziła przez punkty, polega na tym, że chcę "wygładzić" przejście między wierzchołkami na wykresie liniowym, który napisałem. Zanim ktokolwiek o tym wspomina, Wykres JFree nie jest opcją. Rozumiem, że są różne typy krzywych i splajnów, które są używane, ale nie miałem szczęścia w zrozumieniu, jak one działają i jak zaimplementować coś, co odpowiada moim potrzebom.
Byłbym bardzo wdzięczny za każdą oferowaną pomoc - Z góry dziękuję.
Pozwól mi wyjaśnić, czy pytasz o możliwość narysowania krzywej przez szereg punktów? –
Tak, więc należy wziąć pod uwagę, że każdy punkt splajnu Irwin-Hall jest elementem w tablicy. –