| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| lernwillig Registriert seit: May 2004 Ort: Berlin
Beiträge: 221
|
Hallo zusammen, ich versuche einen unförmigen kollisionsHALBRING!! (bzw. rechteck mit einer konkaven seitelinie) zu berechnen. Stellt euch vor ihr hab ein rohr, in dem objekte (rechtecke und kreise) nicht die aussenwand berühren dürfen. Bei kreisen habe ich kein problem, allerdings bei rechtecken funktioniert ein absolut runder kreis nicht, da bei der abstand je nach position variiert. Meine frage: Kann man so einen kreis überhaupt berechnen und im falle dessen, wie?? Damit ihr es euch besser vorstellen könnt hier einen screenshot wie es aussehen müsste. Und zur besseren verdeutlichung, einen link zur aktuellen, noch nicht ganz fehlerfreien version: http://www.dpi72.net/pub/kollision/kollisionskreis.jpg http://www.dpi72.net/pub/kollision/index.html Bin für jegliche anregungen dankbar. Beste grüße Fabian |
| | |
| | #2 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Wo in deinem Screenshot ist ein Rechteck mit einer konkaven Seitenlinie? Um welche Form geht es? um die schwarze Linie, deren obere Hälfte wie aus einer Parabel, und die untere Hälfte aus zwei Teilstücken besteht?
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #3 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Ahh, ich glaub ich check was du willst. Kannst du nicht einfach Die Abstände aller Ecken zum Mittelpunkt des Kreises berechnen, ist ein Abstand größer dem Radius des Kreises, knallts.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #4 (permalink) |
| lernwillig Registriert seit: May 2004 Ort: Berlin
Beiträge: 221
|
Hi, eigentlich geht es mir nur um die schwarze linie, auf der die blauen rechtecke liegen. Das ist immer das selbe rechteck und soll nur die verschiedenen fälle zeigen. Habe mal den screenshot aktualisiert, damit es deutlicher wird. Das beispiel behandelt jetzt nur die linke seite, später werde ich den kollisionsbereich für die andere seite spiegeln. |
| | |
| | #5 (permalink) | |
| lernwillig Registriert seit: May 2004 Ort: Berlin
Beiträge: 221
| Zitat:
Klick mal den anderen link, da funktioniert es ja schon für kreise, allerdings nicht bei den rechtecken. Oder habe ich dich falsch verstanden? Update: Ah, du hast meine frage ja shcon zum teil beantwortet merke ich gerade, sind das parabeln? Wow, parabeln habe ich flash noch nie berechnet...Hast du zufällig die formel zu hand? Geändert von Bugfixer (16-08-2006 um 21:05 Uhr) | |
| | |
| | #6 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Ich glaube nicht, das das Parabeln sind, das sah nur so aus, als ich noch nicht wusste, wie die Linie eigentlich zustande kommt. Bin dennoch der Meinung, dass es mit meinem letzten Vorschlag funktioniert. Nehmen wir das Recheck ungefähr bei 7:30 Uhr. Du berechnest einfach nacheinander den Abstand aller Ecken zur Mitte des äußersten Kreises (also zur Wand) (das ist doch ein Kreis? Auf dem Gitter täuscht das) Sobald einmal der Abstand zur Mitte größer als der Radius des Wand-Kreises ist, ist dein Rechteck außerhalb geraden. Und die 4 Abstände zu berechnen sollte auch nicht sehr auf die Performance stoßen, du musst nichtmal Wurzeln, kannst auch direkt die Abstände im Quadrat vergleichen.
__________________ »Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!) |
| | |
| | #7 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
habe nicht so ganz verstanden, wer trifft jetzt wen? alle kreise und alle rechtecke untereinander oder wird da flippermäig was rundes reingeworfen? ein echtes berechnen ist etwas aufwendiger. stichwort: rigidbody vielleicht tut's das da auch, oder bringt dich auf neue ideen: http://www.seibsprogrammladen.de/fra...ispiele/flash6 -> DragImRaum im ZIP: NoDrawArea
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (17-08-2006 um 08:07 Uhr) |
| | |
| | #8 (permalink) |
| lernwillig Registriert seit: May 2004 Ort: Berlin
Beiträge: 221
|
Hi hgseib, ich verwende bereits eine modifizierte variante deines noDrawArea scriptes. Eigentlich möchte ich nur, dass die rechtecke und kreise den innenbereich nicht verlassen. Die kollision untereinander funktioniert ja schon. Ich habe aber an deinem beispiel dragImRaum gesehen, dass du nur die eckpunkte, bei nicht runden objekten, zur kollisionsberechnung verwendest. Das werde ich doch gleich mal ausprobieren. Vielen Dank Grüße Fabian Geändert von Bugfixer (17-08-2006 um 09:31 Uhr) |
| | |
| | #9 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.324
|
"..dass die rechtecke und kreise den innenbereich nicht verlassen.." da ist doch die antwort von Janoscharlipp in #3 bereits richtig gewesen! rr=kreis_mc._width*kreis_mc._width; // rect=rechteck_mc.getBounds(this); ecke1X=rect.xMin-kreis_mc._x; ecke1Y=rect.yMin-kreis_mc._y; if (ecke1X*ecke1X+ecke1Y*ecke1Y > rr) { // rechteck ist draussen } // dito die anderen drei ecken oder bei n-ecken, die zusätzlich scaliert und gedreht werden: ein leeres mc in jede ecke des n-ecks und via localToGlobal bekommst du die koordinaten. "..dass du nur die eckpunkte.." das ist falsch. ich teste (keine eckpunkte, sondern) immer nur den mittelpunkt des zu bewegenden objektes und mache die kollisionsfläche um den radius (bzw. bei den rechtecken um breite und höhe halbe) grösser.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (17-08-2006 um 10:30 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |