Afstand tussen 2 punten berekenen

Door Mike , 21 jaar geleden, 8.120x bekeken

Gesponsorde koppelingen

PHP script bestanden

  1. afstand-tussen-2-punten-berekenen

 

Er zijn 3 reacties op 'Afstand tussen 2 punten berekenen'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Leroy Boerefijn
Leroy Boerefijn
21 jaar geleden
 
0 +1 -0 -1
lol! ik had dit vandaag ook gemaakt in javascript :P
maar het is wel leuk (vooral voor beginners) om te zien hoe je wiskundige functies doet oid :)

ik denk alleen niet dat het egt een script is.. maarja..
Henk
Henk
21 jaar geleden
 
0 +1 -0 -1
Ik vind hem zo mooier :-P
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
    /**
     * float afstand ( array $aCoords )
     * float afstand ( float $iX1 , float $iY1 , float $iX2 , float $iY2 )
     *
     * De afstand berekenen tussen 2 coordinaten
     */

    function afstand ( )
    {

        /**
         * We stoppen alle meegegeven argumenten in de array $a
         */

        $a = func_get_args ( );
        
        /**
         * Als het eerste argument een array is dan zijn dat de coordinaten
         */

        if ( is_array ( $a [ 0 ] ) )
        {

            $a = $a [ 0 ];
            /**
             * Als de key 0 of 1 ontbreekt returnen we false, want dan klopt er iets niet
             * dus returnen we false
             */

            if ( !array_key_exists ( 0 , $a ) OR !array_key_exists ( 1 , $a ) OR !array_key_exists ( 0 , $a [ 0 ] ) OR !array_key_exists ( 1 , $a [ 0 ] ) OR !array_key_exists ( 0 , $a [ 1 ] ) OR !array_key_exists ( 1 , $a [ 1 ] ) )
                return false;
            
            $aCoords = $a;
        }

        
        /**
         * Anders zijn de coordinaten over meerdere argumenten "verspreid" en maken we
         * de array zelf
         */

        else
        {
            if ( !isset ( $a [ 0 ] ) OR !isset ( $a [ 1 ] ) OR !isset ( $a [ 2 ] ) OR !isset ( $a [ 3 ] ) )
                return false;
            
            $aCoords = array
            (
                array ( $a [ 0 ] , $a [ 1 ] ) ,
                array ( $a [ 2 ] , $a [ 3 ] )
            );
        }

        
        /**
         * De verschillen uitrekenen: delta x en delta y
         */

        $iDeltaX = $aCoords [ 1 ] [ 0 ] - $aCoords [ 0 ] [ 0 ];
        $iDeltaY = $aCoords [ 1 ] [ 1 ] - $aCoords [ 0 ] [ 1 ];
        
        /**
         * De afstand in het kwadraat, is $iDeltaX in het kwadraat plus $iDeltaY in
         * kwadraat.
         */

        $iAfstandKwadraat = pow ( $iDeltaX , 2 ) + pow ( $iDeltaY , 2 );
        
        /*
         * We returnen de wortel van het kwadraat
         */

        return sqrt ( $iAfstandKwadraat );
    }

?>
Arend a
Arend a
21 jaar geleden
 
0 +1 -0 -1
Deze is ietsje mooier vind ik. Is net wat korter, gebruikt niet van die rare onlogische array constructies, en is uitbreidbaar tot zoveel dimensies als de maximale lengte van een php array. (Da's best veel dimensies).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
    /**
     * float afstand ( array $aCoords, $bCoords )
     *
     * Example:
     * afstand(array(1,2), array(0,9)
     * maar ook: afstand(array(1,2,5), array(1,6,8))
     * of een afstand in een 5 dimensionale ruimte..
     * afstand(array(1,7,2,6,9), array(1,0,2,3,4),
     *
     * De afstand berekenen tussen 2 coordinaten ongeacht het aantal dimensies
     */

    function afstand ( )
    {

        /**
         * Argumenten
         *
         */

        list($a,$b) = func_get_args ( );

        if (!is_array($a) || !is_array($b) || count($a) != count($b)) {
          return false;
          // throw error
        }

        /**
         * De verschillen uitrekenen per dimensie: delta
         */

        $fDistance = (float)  0;
        for ($i = 0; $i < count($a); $i++) {
          $fDistance += pow($a[$i] - $b[$i], 2);
        }

        /*
         * We returnen de wortel van het kwadraat
         */

        return sqrt ( $fDistance);
    }

?>

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. afstand-tussen-2-punten-berekenen

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.