Java について少し助けが必要です。2 点間にいくつかの曲線を作成する必要があります。アプリケーションは、ランダムに生成された始点からランダムに生成された終点に接続するランダムな数の曲線を作成する必要があります。
これまでの私のコードは次のとおりです。
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tryproject;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.geom.QuadCurve2D;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
import javax.swing.JPanel;
/**
*
* @author Q
*/
public class GUI extends JPanel{
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
ArrayList<Point> jaa = new ArrayList<Point>();
Random ja = new Random();
Random p = new Random();
int x = ja.nextInt(50) +50;
int y = ja.nextInt(150) + 150;
Point pocetnaTacka = new Point(Math.abs(ja.nextInt(150)),Math.abs(ja.nextInt(150)));
Point zavrsmaTacka = new Point(Math.abs(ja.nextInt(300) ) ,Math.abs(ja.nextInt(300)));
int lx = pocetnaTacka.x;
int ly = pocetnaTacka.y;
jaa.add(pocetnaTacka);
int rastojanje = (pocetnaTacka.x - zavrsmaTacka.x)/10;
for (int i = 1;i< Math.abs(ja.nextInt(8));i++){
x = lx + Math.abs(ja.nextInt(50));
y = ly + Math.abs(ja.nextInt(50));
jaa.add(new Point(x,y));
lx = x;
ly = y;
}
Graphics2D g2 = (Graphics2D) g;
RenderingHints rh = new RenderingHints(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.setRenderingHints(rh);
jaa.add(zavrsmaTacka);
Point lastpp = (Point)pocetnaTacka.clone();
for(Point pp: jaa)
{
QuadCurve2D q = new QuadCurve2D.Float();
// draw QuadCurve2D.Float with set coordinates
q.setCurve(lastpp.x, lastpp.y, pp.x/3, pp.y/3, pp.x, pp.y);
g2.draw(q);
lastpp = (Point) pp.clone();
}
for(Point aa: jaa)
{
System.out.println(aa.x + " , "+aa.y);
}
}
}
これはどのように見えるべきかですが、私はこのようにすることはできません: http://www.dodaj.rs/f/2U/qT/4LubxcQN/everytime.png そして、アプリケーションが実行されるたびに 2 つの新しいポイントが生成され、 にカーブします。 . sin 関数、cos 関数を試しましたが、2 点間で動作させることができません。誰でも私を助けることができます。
前もって感謝します。