vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Suche Visual-Basic Code
Re: Kolisionsabfrage 
Autor: wincnc
Datum: 22.07.06 14:19

Hallo, ich habe da etwas für Dich.
Du benötigst eine Form und 2 Shape`s (1 mal als Rechteck und 1 mal als Kreis).
Schiebe die beiden Shape`s soweit zusammen, dass der Kreis das Rechteck berührt
und führe den Code aus.
Dann ziehe die Shape`s auseinander und führe nochmal den Code aus.
Private Type MyCircle
  X As Single
  Y As Single
  Radius As Single
End Type
 
Private Type RECT
  Left As Single
  Top As Single
  Right As Single
  Bottom As Single
End Type
 
Private Sub Command1_Click()
Dim C As MyCircle
Dim R As RECT
Dim ret As Boolean
 
  ' Rechteck Shape1
  R.Left = Shape1.Left
  R.Top = Shape1.Top
  R.Right = Shape1.Left + Shape1.Width
  R.Bottom = Shape1.Top + Shape1.Height
 
  ' Kreis Shape2 (X und Y = Kreismittelpunkt)
  C.X = Shape2.Left + Shape2.Width / 2
  C.Y = Shape2.Top + Shape2.Height / 2
  C.Radius = Shape2.Width / 2
 
  ret = CircleRectCollision(C, R)
 
  If ret Then
    MsgBox "Rechteck und Kreis berühren sich."
  Else
    MsgBox "Rechteck und Kreis berühren sich NICHT."
  End If
 
End Sub
 
Private Function CircleRectCollision(TheCircle As MyCircle, TheRect As RECT) As _
  Boolean
Dim TestX As Single, TestY As Single
 
TestX = TheCircle.X
TestY = TheCircle.Y
 
If TestX < TheRect.Left Then TestX = TheRect.Left
 
If TestX > TheRect.Right Then TestX = TheRect.Right
 
If TestY < TheRect.Top Then TestY = TheRect.Top
 
If TestY > TheRect.Bottom Then TestY = TheRect.Bottom
 
CircleRectCollision = FindDistance(TheCircle.X, _
TheCircle.Y, TestX, TestY) < TheCircle.Radius
 
End Function
 
Private Function FindDistance(X1 As Single, Y1 As Single, X2 As Single, Y2 As _
  Single) As Single
  FindDistance = Sqr((X2 - X1) * (X2 - X1) + (Y2 - Y1) * (Y2 - Y1))
End Function
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Kolisionsabfrage1.242Jack22.07.06 13:13
Re: Kolisionsabfrage803Zardoz22.07.06 14:03
Re: Kolisionsabfrage750wincnc22.07.06 14:19
Re: Kolisionsabfrage769Jack22.07.06 19:09

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel