Nächstgelegenes Objekt zum Mauszeiger auswählen und farbig markieren
-
hi leute,
ich muss in c++ ein zeichenprogramm schreiben und bis sonntag fertig haben. habe es soweit auch fertig, leider klappt eine funktion nicht, welche bei gedrückter Maustaste das nächstgelene Objekt zum Mauszeiger auswählt und farbig hervorhebt. Die Berechnung der Entfernungen klappt auch soweit, die Distanz zwischen Mausposition und Objekt(mittelpunkt) wird korrekt ausgegeben. was ich aber leider nicht hinbekomme ich, dann das entsprechende Objekt auch auzuwählen...
hier der code:for (zaehler=0; zaehler<objektanzahl; zaehler ++) { objekt *objekt=dokument()->holeobjekt(zaehler); //bestimmung der position rect.TopLeft()=objekt->point_tl; rect.BottomRight()=objekt->point_br; point=rect.CenterPoint(); //bestimmung der entfernung zw. mausposition und point a=mauspos.x-point.x; b=mauspos.y-point.y; c[zaehler]=((a²+b²)^1/2); //soweit klappt alles, aber ich kriege es nicht hin, dann das objekt //welches am nächsten ist auszuwählen und farbig darzustellen while (c[zaehler+1]<c[zaehler])//hier steckt wohl der wurm drin :) { //*objekt an dieser stelle auswählen //das klappt irgendwie nicht richtig objekt=dokument()->holeobjekt(zaehler+1); rect.TopLeft()=objekt->point.tl; rect.BottomRight()=objekt->point.br; //und farbig darstellen... } }wahrscheinlich müsste vor
whilenoch eine schleife mit eingebaut werden, aber ich komme nicht drauf, irgendwie hab ich da voll das brett vorm kopf.
hat jemand eine idee? wäre echt super...
danke!
-
Nimm eine Variable in der Du den "Best Match" inkl. der bisherigen minimalen Entfernung speicherst (am Anfang einfach das erste). Laufe über alle Objekte. Wenn Du ein besseres Objekt als das bisherige findest dann merke Dir eben das...
-
Hallo etwas verzweifelt!
ich bin noch etwas mehr verzweifelt! Nichtmals die 2 hab ich bisher geschafft. Könntest du mir ein paar Tipps geben? Das würde mir sehr helfen. Hier meine eMail Adresse: Salatblatt85@yahoo.de
Ich würde mich sehr darüber freuen, schonmal Danke!
-
Ich habe Dir alles geschrieben was zu schreiben ist!
Ich bin nicht dafür da Hausaufgaben zu machen, oder möchtest Du mich bezahlen?BestElement auf NULL setzen BesteEntfernung auf sehr Großen (bzw. unmöglichen Wert) setzen Laufe über alle Objekte Errechne Distanz Wenn Neue Distanz < als bisher Bester Treffer oder noch nichts da ist (BestElement ist NULL) Merke Dir neues Bestes Element und neue DistanzThats it.
Der Rest sollte doch wohl ein Kinderspiel sein
-
Hi Martin,
danke für die Antwort(en).
@"etwas mehr verzweifelt":
Ich denke die erste und erst recht die zweite Antwort von Martin sollten ausreichen. Da hat er schon recht, der Rest sollte ein Kinderspiel sein.
Habe es zwar auch noch nicht hinbekommen, aber ist ja noch zeit bis morgen...
Ich habe auch noch nicht die anderen Lösungen so wie sie laut Aufgabenstellung zu erledigen sind, wollte erstmal diese Funktion hinkriegen.@Martin:
ich hatte nicht vor, hier zu posten, damit jemand anderes meine Hausaufgaben macht. Ich wollte nur ein Hinweis von Leuten, die sich in der Materie besser auskennen als ich. Und ich bin nicht der User "etwas mehr verzweifelt"!