Radius Abfrage
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
Mathias-KwiatkowskiBetreff: Radius Abfrage |
Mo, Feb 20, 2012 1:35 Antworten mit Zitat |
|
---|---|---|
Also hi erstmal^^
ich weiss nicht recht wie ich anfangen soll habe nun auch schon einiges einfach probiert, um irgendwie selbst auf eine lösung zu kommen, es war allerdings ' fail... also wenn ich ein bereich prüfen will ob jemand irgendwo geklickt hat mach ich es so: Code: [AUSKLAPPEN] if mousedown(1) and mousex()> 50 and mousex()<150 and mousey()>60 and mousey()<80 then end das beinhaltet ja das wenn man in diesem (4eck / Rechteck ) klickt das programm abgebrochen wird. aber wie mache ich es möglich einen radius abzufragen. also ein Kreis Z.b. fazit wenn man in diesem kreis klickt beenden... ich weis da derzeit kein rat daher verwirrung ^^ |
||
Midimaster |
Mo, Feb 20, 2012 1:40 Antworten mit Zitat |
|
---|---|---|
nehmen wir an die RadiusMitte wäre bei X Y und der Radius wäre R:
BlitzMax: [AUSKLAPPEN] If MouseDown(1) Then es handelt sich um den alten Pythagoras a² + b² = c² |
||
PhillipK |
Mo, Feb 20, 2012 2:13 Antworten mit Zitat |
|
---|---|---|
wobei ich gelesen habe, das man kein ^2 etc schreiben sollte, da es langsamer sein soll.
Getestet habe ichs nicht, aber wenn man die rechnung ausschreibt (also statt x^2 lieber x*x!), ist man auf der sicheren seite Ansonsten: Jip, entweder so oder über einen Pythagoras (c² = a²+b²). Eine solche funktion macht sich immer ganz gut, grade wenn man Spieleprogrammierung betreibt Schussabfragen, Ki, etc. Lohnt also, sich sowas als funktion abzulegen. |
||
BladeRunnerModerator |
Mo, Feb 20, 2012 9:59 Antworten mit Zitat |
|
---|---|---|
Ich kann nicht sagen ob BMax ein ^2 automatisch zu x*x optimiert, das kann man ja aber selbst mal testen.
Ohne Optimierung wäre ein ^2 idR wirklich ein wenig langsamer. Der wesentliche Punkt ist es bei dem Vergleich keine Wurzel zu ziehen (was hier ja auch noch keiner vorgeschlagen hat), da diese Operation wirklich sehr teuer ist, und es ja genauso effizient ist die Quadrate miteinander zu vergleichen. Zudem: Diese Optimierungen sind nur interessant wenn sehr viele Radien verglichen werden sollen. Bei ein paar hundert Stück sollte das keinen halbwegs modernen Rechner beeinträchtigen. EDIT: Zitat: Ansonsten: Jip, entweder so oder über einen Pythagoras (c² = a²+b²)
*Hust* Das IST der Pythagoras, wie es Midimaster beschreibt |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
ozzi789 |
Mo, Feb 20, 2012 12:13 Antworten mit Zitat |
|
---|---|---|
Da dies wahrscheinlich nicht die einzige Mausabfrage sein wird, würde ich dir anraten MouseX() und MouseY() in einer globalen Variable zu speichern | ||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
DAK |
Mo, Feb 20, 2012 13:51 Antworten mit Zitat |
|
---|---|---|
Und das Gleiche mit dem MouseDown, vorallem wenns ein MouseHit ist, der ja nach der ersten Abfrage sofort auf 0 gesetzt wird. | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
Nicdel |
Mo, Feb 20, 2012 16:15 Antworten mit Zitat |
|
---|---|---|
Macht in der Tat einen großen Unterschied ob man x*x oder x^2 schreibt:
Zitat: x*x: 9
x^2: 1331 BlitzMax: [AUSKLAPPEN] Local x:Int = 1337 |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
Midimaster |
Mo, Feb 20, 2012 16:23 Antworten mit Zitat |
|
---|---|---|
Nun beruhigt euch mal wieder!
Es dürfte dem Anfragenden ziemlich egal sein, ob seine gesuchte Funktion... 0,00001234 sec oder... 0,00000009 sec ...dauert! Er soll das Prinzip verstehen. Warum schreibt Ihr darüber nix. Ich habe ihm nur einen Algo hingeknallt. Wenn Ihr schon weiter ausholen wollt, dann doch in Richtung Thema! |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
Mathias-Kwiatkowski |
Mo, Feb 20, 2012 19:15 Antworten mit Zitat |
|
---|---|---|
ja ich danke dir,
und ja es is mir in dem fall auch egal wiviel mikrosekunden es dauert ^^ aber interessant zu wissen das es da ein unterschied gibt. von daher danke an allen. |
||
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group