Hallo!
Ich bins mal wieder ^^
Diesmal will ich einen Kreis auf einer Linie platzieren. Und zwar an einem bestimmten Punkt.
Der Kreis wird in seiner Bewegung die Linie schneiden.
(Grün = Boundingbox, Blauer Punkt = Koordinate des Kreises, Roter Punkt = Nähester Punkt zum Kreis)
Der Kreis schneidet vereinfacht gesagt die Linie im roten Punkt. Allerdings lässt sich das nicht vermeiden, dass der Kreis kurz durch die Linie schwebt.
Jetzt soll der Kreis auf die Linie platziert werden. Und zwar so, dass die Linie eine Tangente zum Kreis durch den roten Punkt ist!
Meine Idee:
Man sieht das einfach aus der sicht von der Linie. Damit müsste der Kreis jetzt nurnoch das kleine Stückchen nach oben (der Teil vom Kreis, der unter der Linie ist). Zu sehen in Bild 2.
Aber was heißt "y nach oben gesehen von der Linie" für das normale Koordinatensystem?
Jetzt weiß ich, dass es Koordinatentransformation gibt
Koordinatentransformation ? Wikipedia
Aber so richtig darauf anwenden kann ich das irgendwie nicht. ???:L
Hat einer von euch vielleicht schon Erfahrung damit gemacht?
Hier noch ein bisschen Code, damit ihr nen Bezugspunkt habt:
MfG, Lurchi :rtfm:
Ich bins mal wieder ^^
Diesmal will ich einen Kreis auf einer Linie platzieren. Und zwar an einem bestimmten Punkt.
Der Kreis wird in seiner Bewegung die Linie schneiden.

(Grün = Boundingbox, Blauer Punkt = Koordinate des Kreises, Roter Punkt = Nähester Punkt zum Kreis)
Der Kreis schneidet vereinfacht gesagt die Linie im roten Punkt. Allerdings lässt sich das nicht vermeiden, dass der Kreis kurz durch die Linie schwebt.

Jetzt soll der Kreis auf die Linie platziert werden. Und zwar so, dass die Linie eine Tangente zum Kreis durch den roten Punkt ist!

Meine Idee:
Man sieht das einfach aus der sicht von der Linie. Damit müsste der Kreis jetzt nurnoch das kleine Stückchen nach oben (der Teil vom Kreis, der unter der Linie ist). Zu sehen in Bild 2.
Aber was heißt "y nach oben gesehen von der Linie" für das normale Koordinatensystem?
Jetzt weiß ich, dass es Koordinatentransformation gibt
Koordinatentransformation ? Wikipedia
Aber so richtig darauf anwenden kann ich das irgendwie nicht. ???:L
Hat einer von euch vielleicht schon Erfahrung damit gemacht?
Hier noch ein bisschen Code, damit ihr nen Bezugspunkt habt:
Java:
//Der Kreis
Object2D circle = this;
//Die Linie mit welcher der Kreis kollidiert
Line2D line = new Line2D.Double(200,300,Main.mousePosition[0],Main.mousePosition[1]);
//Der Mittelpunkt vom Kreis
Point2D center = new Point2D.Double(circle.getX()+circle.weidth/2, circle.getY()+circle.getHeigth()/2);
//Radius vom Kreis
double r = 25;
//Nähester Punkt zum Kreis (der rote)
Point2D closest = Collision.closestPointToLine(line, center);
//Kollisionserkennung
if(closest.distanceSq(center) < r*r)
{
//System.out.println("Collision!");
//Jetzt müsste man den Kreis auf die Linie setzen!!! <----------------------------------
}
//MALEN (Nur die Punkte, Linie und Bounding Box)
g2.setPaint(Color.red);
g2.fill(new Ellipse2D.Double(closest.getX()-2, closest.getY()-2, 4, 4));
g2.setPaint(Color.green);
g2.draw(circle.getShape().getBounds2D());
g2.setPaint(Color.blue);
g2.fill(new Ellipse2D.Double(circle.getPos()[0]-2, circle.getPos()[1]-2, 4, 4));
g2.setPaint(Color.black);
g2.draw(line);
g2.fill(new Ellipse2D.Double(center.getX()-2, center.getY()-2, 4, 4));
MfG, Lurchi :rtfm: