Punkte über Kreisradius berechnen??



  • Hi,

    ich zeichne über mein programm eine zielscheibe mit 3 kreisen in einem Panel, welche unterschiedlich groß sind und übereinander liegen.
    Vom prinzip soetwas: http://intranet.design.fh-aachen.de:81/images/visperanto/1001.gif

    Nun wird per zufall ein "dartschuß" über x und y kooardinaten bestimmt.
    Jede fläche giebt eine andere Punkteanzahl.
    Zum eigentlichen problem: Wie berechne ich am einfachsten, auf welchem kreis sich der schuß befindet?

    Bekannt sind mir ja x und y des schusses, sowie die radien der kreise.



  • definiere die mitte der Scheibe als 0/0
    nimm den Vektor X/Y und vergleiche die radien der verschiedenen kreisen und du weisst in welchem kreis der pfeil ist



  • Hallo

    du hast ja zwei Ausgangswerte : Den Mittelpunkt der Konzentrischen Kreise, PKreis, und den Punkt des Treffers, PTreffer. Du must jetzt nur die Länge der Strecke von PKreis nach PTreffer bestimmen, und das Ergebnis mit den Radien der einzelnen Kreise vergleichen, um die Trefferzone zu bestimmen.
    Das Berechnen der Strecke zwischen den Punkten ist Trigonometrie, also Satz des Pythagoras.

    bis bald
    akari



  • ungefähr so habe ich mir das vorgestellt
    http://www.bigneal.ch/diverses/temp/Dart.gif



  • Hallo,

    #include <math.h>
    
    double radius(int x,int y){
            int xm=8;       //Mittelpunkt Koordinate der Dartscheibe
            int ym=5;       //Mittelpunkt Koordinate der Dartscheibe
            x=x-xm;         //berechne Abstand zum Mittelpunkt
            y=y-ym;         //berechne Abstand zum Mittelpunkt
            double ret=sqrt(x*x+y*y);
            return ret;     //ret ist radius auf dem der Dartpfeil liegt
    }
    

    Und jetzt nur noch den Radius mit den Kreisradien vergleichen.

    Gruß Alex



  • ah,
    Pythagoras... 🙂

    Vielen dank euch. Mit der berechnung bei der Mitte startend, über Pythagoras funktioniert es nun.
    Ich wuste doch das es eine einfache lösung giebt. 😃


Anmelden zum Antworten