IntersectsWith mit einer ellipse

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    IntersectsWith mit einer ellipse

    hey,

    hab mal wieder nen problem, ich code zz ein spiel in dem es eine kugel gibt und ich möchte abfragen ob die kugel(10x10 pixel) mit einem rectangle in berührung ist, hab schon bissl gesucht und den thread hier gefunden:[VB 2010] GDI
    und darin den code hier:

    VB.NET-Quellcode

    1. rKreis = Math.sqrt(Ellipse.Width ^ 2 + Ellipse.Height ^ 2)
    2. rMaus = Math.Sqrt( (Ellipse.X - e.X)^ 2 + (Ellipse.Y - e.Y) ^ 2)
    3. If rMaus <= rKreis Then
    4. 'Kollision
    5. End If


    nur wie soll ich "Ellipse" definieren? habs mitm rectangle versucht hat dann aber ned wirklich erkannt obs nur innerhalb der ellipse ist, sondern auchn stück drumherum(also um das rectangle, ned um den kreis)

    hoffe ihr könnt mir helfen

    mfg
    0,0,10,10
    rKreis = 14,17...=Wurzel(200)

    Rechnen wir Width bzw. Height / 2 ergibt den Radius, logischerweiße:
    rKreis = 5

    Wie du siehst ist das Humbuck...
    Außerdem hab ich noch nie ne Kugel mit der größe 10x10 Wursteinheiten gesehen, das nennt sich dann Kreis/Ellipse...

    Die Berechnung von rMaus hingegen ist Durchaus korrekt, das gibt dir den Abstand(ist einfacher Pythagoras) zum Mittelpunkt deiner Ellipse, wenn du jetzt einen Kreis hast, überprüfst du einfach ob rMaus <= Width/2 bzw. Height/2 ist, andernfalls dürfte dir das hier weiter helfen:
    de.wikipedia.org/wiki/Ellipse
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Löse Dein Problem zunächst mit den Um-Rechtecken.
    Wenn das perfekt funktioniert und Du verstanden hast, was da passiert, erhöhe die Stufe und nimm Ellipsen.
    Und dann denk gleich in Ellipsen und sieh den Kreis als Sonderfall einer Ellipse mit A = B an.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!