2D-Grafik Linie von Kreis zu Kreis

Diskutiere Linie von Kreis zu Kreis im AWT, Swing, JavaFX & SWT Bereich.
L

liann

Hallo, ich will zwei Punkte (jeweils den Mittelpunkt) meiner Objekte der Klasse
Java:
Circle
mit einer Linie verbinden und dies zeichnen. Das klappt alles, nur wird, da ja der Mittelpunkt genommen wird, die Linie in den Kreis reingezeichnet. Und ich weiß nicht, wie ich den geeigneten Punkt dazu finden sollte. Ich habe an etwas gedacht wie:
Java:
public Point getNearestPointTo(Circle c){
    return null; // weiß echt nicht wie
}
Ich könnte natürlich auch, weil die Linie nur für eine Visualisierung da ist und nichts mit dem Spiel an sich zu tun hat, einfach den Kreis in der jeweiligen Farbe drüber zeichnen, nur ist das ja nicht gerade schön gemacht. Wie soll ich das am Besten machen?

Danke im Voraus :)

EDIT:
Der Kreis hat methoden wie
Java:
public int radius(){
    return size / 2;
}

public int getX(){
    return x;
}

public int getY(){
    return y;
}

public Point getCenter(){
    return new Point(getX() + radius(), getY() + radius());
}

public void setCenter(Point center){
    this.x = center.x - radius();
    this.y = center.y - radius();
}

public boolean collision(Circle c){
    return c.getCenter().distance(getCenter()) <= radius() + c.radius();
}

public Shape getShape(){
   return new Ellipse2D.Double(x, y, size, size);
}

public static boolean collision(Circle c1, Circle c2){
    return c1.collision(c2);
}
falls irgendetwas hilft.
 
Zuletzt bearbeitet:
mihe7

mihe7

Java:
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class Kreis extends JComponent {

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

        int x1 = 100, y1 = 100, r1 = 25;
        int x2 = 300, y2 = 200, r2 = 45;
        g2.setColor(Color.RED);
        g2.draw(new Ellipse2D.Double(x1 - r1, y1 - r1, r1*2, r1*2));
        g2.draw(new Ellipse2D.Double(x2 - r2, y2 - r2, r2*2, r2*2));

        int vx = x2 - x1;
        int vy = y2 - y1;
        double len = Math.sqrt(vx*vx+vy*vy);

        double k1x = x1+r1 * vx/len;
        double k1y = y1+r1 * vy/len;
        double k2x = x2-r2 * vx/len;
        double k2y = y2-r2 * vy/len;
        g2.draw(new Line2D.Double(k1x, k1y, k2x, k2y));
    }

    public void run() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.add(new Kreis());
        frame.setSize(800, 600);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Kreis().run());
    }
}
 
Thema: 

Linie von Kreis zu Kreis

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben