Anzeige:
Ergebnis 1 bis 7 von 7

Thema: winkel zwischen 2 geraden

  1. #1
    Flatlander
    Gast

    winkel zwischen 2 geraden

    ich soll n prog schreiben was für ein gegebenes polygon überprüft ob es konvex ist...
    dafür will ich immer überprüfen, ob der winkel zwischen 2 gerade unter 180 grad bleibt
    es gibt leider keine solche funktion

    habt ihr ne idee?

    hier mein bisheriger code (sorry wenns n bissl caotisch is)

    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import java.math.*;

    public class Konpoly extends Frame{


    Point2D []pkta = new Point2D [11];
    int zähler;
    double [] winkel = new double [11];



    Konpoly(){
    super("Aufgabe 3.3");
    setBackground(Color.WHITE);
    setSize(600,600);
    setVisible(true);

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

    addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e){
    Graphics2D g2 = (Graphics2D)getGraphics();

    if(e.getButton()==3){
    g2.drawLine((int)pkta[1].getX(),(int)pkta[1].getY(),
    (int)pkta[zähler].getX(), (int)pkta[zähler].getY());
    zähler=0;
    //System.out.println(getAngle());
    return;
    }//if
    else {
    zähler++;
    System.out.println("Sie haben bereits "+zähler+" Punkte gesetzt");
    if(zähler < 11){
    pkta[zähler]=(Point2D)e.getPoint();
    g2.drawLine((int)pkta[zähler-1].getX(),(int)pkta[zähler-1].getY(),
    (int)pkta[zähler].getX(), (int)pkta[zähler].getY());
    if(zähler>2)//System.out.println(schnittWinkel(pkta[zähler],pkta[zähler-1],pkta[zähler-2]));
    //System.out.println(berechneM());
    }//if
    else System.out.println("Zu viele Eckpunkte");
    }//else

    }//mouseclicked
    }//mouselistener
    );//mouseadapter
    }//mouselistener



    private void pruefeKonvex(){

    }

    /*public double getAngle() {
    double distCentWristX = pkta[zähler].getX() - pkta[zähler-1].getX();
    double distCentWristY = pkta[zähler].getY() - pkta[zähler-1].getY();
    double getangle = Math.acos( distCentWristX /pkta[zähler].distance(pkta[zähler-1]));
    double x = (getangle * 360 ) / (2*Math.PI);
    return x;
    }*/

    private double berechneM(){
    return( (pkta[zähler].getY()-pkta[zähler-1].getY())/(pkta[zähler].getX()-pkta[zähler-1].getX()));
    }

    private double berechneM(Point2D p1, Point2D p2){
    return( (p2.getY()-p1.getY())/(p2.getX()-p1.getX()));
    }

    /*private double schnittWinkel(Point2D p1, Point2D p2, Point2D p3){
    return Math.acos(((berechneM(p2,p1))-(berechneM(p3,p2)))/(1+(berechneM(p2,p3)*(berechneM(p2,p1)))));
    }*/


    public static void main(String[]args){
    Konpoly f = new Konpoly();
    //System.out.println(toDeg(Math.acos(1)));

    }

    }

  2. #2
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    kannst du das ganze in code tags packen? ist um einiges lesbarer

    was ist dein problem genau? weißt du nicht wie man das ausrechnet, oder weißt du nicht wie du dies in eine funktion packen sollst?

    greetz

  3. #3
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Ich denke nicht, dass das hier ein Mathematikforum ist.

  4. #4
    Registrierter Benutzer
    Registriert seit
    21.06.1999
    Beiträge
    677
    Zitat Zitat von Flatlander
    ich soll n prog schreiben was für ein gegebenes polygon überprüft ob es konvex ist...
    dafür will ich immer überprüfen, ob der winkel zwischen 2 gerade unter 180 grad bleibt
    es gibt leider keine solche funktion
    Schau Dir mal in Deinem Matehmatikbuch die Definition des Skalarprodukts an. Dann sollte klar sein, wie der Winkel berechnet wird.

    Ob man damit aber Konvexität überprüft, bin ich mir im Moment nicht so sicher.

  5. #5
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    @Waxolunist:

    Glaubst Du wirklich, dass Flatlander das noch liest?
    Schau Dir mal das Datum an!

    Außerdem sind hier einige Informatiker unterwegs, die ganz gut Mathematik beherrschen. Deshalb sollte eine mathematische Frage mal nebenbei kein Problem darstellen.
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  6. #6
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    @Caveman: Hab leider nicht auf das Datum gesehen.

    Zum konvex-Problem: Ich hab noch nicht verstanden, wie er überprüfen möchte ob ein Polygon konvex ist, mittels der Überprüfung ob der Winkel zwischen 2 Geraden unter 180Grad ist. Ein Dreieck hat grundsätzlich nur Winkel unter 180Grad, dennoch ist es immer konvex.

    Stell dir ein M mit einem Strich darunter vor. Ein nicht konvexes Polygon. Trotzdem ist jeder Winkel in diesem M unter 180Grad.

    Ich hab mal kurz über das Problem nachgedacht, bin jedoch auf keine Lösung gekommen. Man müsste ein sehr engmaschiges Gitter darüberziehen und jeden Punkt mit jedem verbinden, sehen ob die dadurch entstehende Gerade einen Punkt berührt, der nicht vom Polygon eingeschlossen ist. Das ist bestimmt eine interessante Aufgabe. Vor allem erst im dreidimensionalen Raum, wo es dann sehr auf den Gittergenerator ankommt.

    Ich denke dass ist mathematisch nicht lösbar, sondern nur durch try and error. Aber vielleicht bin ich jetzt schon total am Holzweg. Das könnte man hier gerne diskutieren. Gibt es dafür schon Lösungen? Ich wär gespannt.

  7. #7
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Ok mein Fehler. Der Winkel darf natürlich nicht größer als 180Grad innen liegend sein. Hatte eine falsche Sichtweise auf das Problem. Das kommt von der verdammten Simulationstechnik und Numerik. Da gibts dann nur mehr MC.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •