title image


Smiley 4 gewinnt...
     Erinnert mich irgendwie an den Matheunterricht...  y-Achse    ^    |    |                           B    |                           .    |                           .    |           A................    |    |    +-----------------------------------> x-Achse    Beide Punkte bilden ein rechtwinkliges Dreieck - ich sach nur: Phytagoras.     Du suchst die Entfernung zwischen Punkt A und Punkt B.     Sie berechnet sich so: Enfernung = wurzel( x*x + y*y ).    A sei Dein betrachteter Punkt, B ein beliebiger Punkt aus Deinem Punkte-Array.    Jeder Punkt hat eine X und eine Y-Koordinate. Die Differenzen der    Koordinaten beider Punkte werden quadriert und addiert, danach die Wurzel gezogen.    Diese Rechnung muß für jeden Punkt in Deinem Array wiederholt werden, der Punkt mit     der geringsten Differenz leigt dann am nächsten bei A.    Also etwa so:    (1) Dein Testpunkt ist Test( X = 51, Y = 51)    (2) Deine Liste enthalte:        Punkt_1( X = 0 ,   Y = 0)        Punkt_2( X = 0 ,   Y = 100)        Punkt_3( X = 100,  Y = 0)        Punkt_4( X = 100,  Y = 100)        Die vier Punkte spannen ein Rechteck auf, Der Testpunkt liegt ganz knapp         näher am Punkt_4    (3) Die Rechnung        Entfernung Punkt_?  = Wurzel( Punkt_?.X * Test.X + Punkt_?Y * Test.Y )        Entfernung Punkt_1  = s.o.        Entfernung Punkt_2  = s.o.        Entfernung Punkt_3  = s.o.        Entfernung Punkt_4  = s.o.    (4) Programm        Dim n As Integer        Dim nDX As Integer        Dim nDY As Integer        Dim dEntfernung As Double        '-- die Liste        Dim daXCoord(3) As Double        Dim daYCoord(3) As Double        Dim dTestX As Double        Dim dTestY As Double        '-- Testpunkt        dTestX = 51        dTestY = 51        daXCoord(0) = 0        daYCoord(0) = 0        daXCoord(1) = 0        daYCoord(1) = 100        daXCoord(2) = 100        daYCoord(2) = 0        daXCoord(3) = 100        daYCoord(3) = 100        For n = 0 To UBound(daYCoord)            nDX = Abs(daXCoord(n) - dTestX)            nDY = Abs(daYCoord(n) - dTestY)            dEntfernung = Sqr(nDX * nDX + nDY * nDY)            Debug.Print ("x=" + CStr(nDX) + " Y=" + CStr(nDY) + " Entfernung: " + CStr(dEntfernung))        Next n       (5) Ausgabe des Programms           x=51 Y=51 Entfernung: 72,1248916810278           x=51 Y=49 Entfernung: 70,7248188403477           x=49 Y=51 Entfernung: 70,7248188403477           x=49 Y=49 Entfernung: 69,2964645562817            ==> Punkt_4 gewinnt                   (6) Hinweis           Das ganze wird von den MatheTeachern auch als "Länge eines Vektors" verkauft

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: