Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Mathematik

InBetween - Prüfen ob sich ein Punkt zwischen 2 Punkten befindet

Lizenz:Erster Autor:Letzte Bearbeitung:
GPLMitgliedPMedia 09.12.2010

Aus Bedarf wiedermal eine (ausführlich getestete und als "funktionierend" eingestufte) Funktion von mir, die inBetween().

1. und 2. Parameter geben den Rahmen an, der 3. Parameter den zu überprüfenden Wert an.

inBetween gibt es in 3 Versionen, für einen 1-dimensionalen Zahlenstrahl, für ein 2-dimensionales sowie für ein 3-dimensionales Feld.

Type Coord
    X As Double
    Y As Double
End Type

Type Vector
    X As Double
    Y As Double
    Z As Double
End Type

Function InBetween1D(A as Double, B As Double, P As Double) As Byte
    If A < B then
        If (A <= P) AND (P <= B) then
            return -1
        else
            return 0
        end if
    elseIf A > B then
        If (B <= P) AND (P <= A) then
            return -1
        else
            return 0
        end if
    End If
End Function

Function InBetween2D(A as Coord, B As Coord, P As Coord) As Byte
    If inBetween1D(A.X, B.X, P.X) then
        If inBetween1D(A.Y, B.Y, P.Y) then
            return -1
        else
            return 0
        end if
    else
        return 0
    end if
End Function

Function InBetween3D(A as Vector, B As Vector, P As Vector) As Byte
    If inBetween1D(A.X, B.X, P.X) then
        If inBetween1D(A.Y, B.Y, P.Y) then
            If inBetween1D(A.Z, B.Z, P.Z) then
                return -1
            else
                return 0
            end if
        else
            return 0
        end if
    else
        return 0
    end if
End Function

Beispiel:

Print InbetWeen3D(type(10,10,10),type(20,20,20),type(15,15,9))
Print InbetWeen3D(type(10,10,10),type(20,20,20),type(15,15,15))
Sleep

InBetween3D eignet sich ideal für Bounding Boxes in 3D-Spielen, InBetween2D zB in einer GUI als Hotspot. Beide Funktionen setzen inBetween1D voraus.


Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 06.01.2008 von MitgliedPMedia angelegt.
  • Die aktuellste Version wurde am 09.12.2010 von Redakteurytwinky gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen