Dreieck zeichnen mit java

Hi!

Ich habe ein kleines Problem mit Java.

Mein Ziel ist es, eine Klasse zu entwerfen, die anhand der Angabe von drei Seiten längen ein Dreieck zeichnet. Ich habe es bisher nur geschafft die drei Seiten durch Angabe von jeweils 2 Punkten pro Seite zu zeichnen, oder durch Angabe von höhe und breite des Dreiecks.

Hier der Quelltext der Klasse:

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class Dreieck extends JFrame {

public Dreieck() {

//einige mögliche Einstellungen für Frame

setTitle(„DreieckFrame“); //Titel
setSize(200,200);//Größe

//Hintergrundfarbe
setBackground(new Color(0,153,255));

// überwacht schließen des Frames

addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{
System.exit(0);
}
});

setVisible(true);

}

public void paint(Graphics g)
{

//Zeichenfarbe
g.setColor(Color.black);

//das ist das Dreieck

//Seite c
g.drawLine(60,60,180,180);
//Seite b
g.drawLine(180,180,180,60);
//Seite a
g.drawLine(180,60,60,60);

}

public static void main(String args[]) {
new Dreieck();
}

}

Meine Idde war es, die Koordinaten anhand der Seiten angaben auszurechnen.

Hat jemand eine Ahnung wie?

Vielen Dank im voraus!

P.S.:
Das ist mein erster Beitrag, also sagt mir bitte Bescheid, sollte ich etwas vergessen haben:smile:

So sieht die Lösung mittels „analogen“ Zeichengeräten aus

  1. zeichne eine Seite
  2. zeichne um die Eckpunkte Kreise mit den Radien der anderen beiden Seiten
  3. ein Schnittpunkt der Kreise ist der dritte Punkt (Orientierung beachten)

das Ganze muss du nun „digital“ nachbauen…

Das bedeutet für die Kreise brauchst du eine Kreisfunktion die deinen Schnittpunkt berechnet…

Das Vorgehen:

  1. die erste Linie zeichnen.
  2. mit der Kreisfunktion den Schnittpunkt berechnen
  3. zweite Linen zeichen:
    Startpunkt 1. Linie ist gleich Startpunkt 2. Linie
    Endpunkt 2. Linie ist gleich Schnittpunkt
  4. dritte Linen zeichen:
    Endpunkt 1. Linie ist gleich Startpunkt 3. Linie
    Endpunkt 3. Linie ist gleich Schnittpunkt

Hinweis:
deine Zeichenfläche muss als Koordinatensystem aufgefasst werden und die Maßeinheit ist in Pixel

Hier hast du einen Hilfreichen Link wegen der Kreisberechnungen…

http://www.matheboard.de/archive/3119/thread.html

Danke yrow:smile:

Also ich hab es jetzt etwas anders versucht, da ich nicht weiß, wie ich Kreisfunktionen mit Java zeichnen kann.

Meine Idee war es, es über die Winkelfunktionen zu versuchen:

//Seite A
g.drawLine(20,100,mA,100);

//Seite B
g.drawLine(20,100,(int)(Math.sin((Math.PI/2)-(Math.acos(((mA*mA)+(mB*mB)-(mC*mC))/(2*mA*mB))))*mB),(int)(Math.cos((Math.PI/2)-(Math.acos(((mA*mA)+(mB*mB)-(mC*mC))/(2*mA*mB))))*mB));

//Seite C
g.drawLine(mA,200,(int)(Math.sin((Math.PI/2)-(Math.acos(((mA*mA)+(mC*mC)-(mB*mB))/(2*mA*mC))))*mC),(int)(Math.cos((Math.PI/2)-(Math.acos(((mA*mA)+(mC*mC)-(mB*mB))/(2*mA*mC))))*mC));

mA, mB und mC werden hier aus der Eingabe entnommen. Kann mir jemand sagen, wo hier der Fehler liegen könnte? Ich bin am verzweifeln.

Grundlage dafür ist die Berechnung der Winkel in einem Dreieck anhand der angegebenen Seiten.

Gruß
stingraysoldier

Wenn du Winkelfunktionen einsetzt, dann benutzt du doch „Kreisfunktionen“.

OK, der Mathematiker würde jetzt den Zeigefinger erheben und sagen: „Nee, das kann man so nicht sagen, da…“

Aber genau das meinte ich. Hast du mal meinen Hilfelink angeschaut? Denn weiter unten ist einmal ein VBA und einmal ein Java Beispiel vorhanden, wie man diesen Schnittpunkt der Kreise berechnen kann…

Ob diese Lösungen gut sind oder nicht, kann ich jetzt nicht sagen. Aber im Zweifel wende dich doch an die beiden Autoren dieser Lösung bzw. an die User des Matheboards.