source: extensions/edit_gmaps/admin/include/fonctions.php @ 9377

Last change on this file since 9377 was 9377, checked in by cljosse, 13 years ago

[edit_gmaps] adding support to the altitude.

File size: 2.8 KB
Line 
1<?php 
2  //
3  // DECIMAL TO FRACTION
4  //
5  function dec2frac( $decimal ) {
6    $decimal = (string)$decimal;
7    $num = '';
8    $den = 1;
9    $dec = false;
10
11    // find least reduced fractional form of number
12    for( $i = 0, $ix = strlen( $decimal ); $i < $ix; $i++ )
13    {
14     // build the denominator as we 'shift' the decimal to the right
15     if( $dec ) $den *= 10;
16
17     // find the decimal place/ build the numberator
18     if( $decimal{$i} == '.' ) $dec = true;
19     else $num .= $decimal{$i};
20    }
21    $num = (int)$num;
22
23    // whole number, just return it
24    if( $den == 1 ) return $num;
25
26    $num2 = $num;
27    $den2 = $den;
28    $rem  = 1;
29    // Euclid's Algorithm (to find the gcd)
30    while( $num2 % $den2 ) {
31     $rem = $num2 % $den2;
32     $num2 = $den2;
33     $den2 = $rem;
34    }
35    if( $den2 != $den ) $rem = $den2;
36
37    $ret1->Numerator =($num / $rem ) ;
38        $ret1->Denominator=($den / $rem);
39
40    // now $rem holds the gcd of the numerator and denominator of our fraction
41    return $ret1;
42  }
43
44 
45function dec2dms($value) { 
46        $value= abs($value);
47        $degrees= floor($value);
48        $tmp=($value-$degrees)*60; 
49        $minutes= floor($tmp); 
50        $seconds= round(($tmp-$minutes)*6000)/100;
51       
52        $sec=  dec2frac($seconds);
53 
54        $ret[0]['Numerator'] =$degrees ;
55        $ret[0]['Denominator'] = 1 ;       
56        $ret[1]['Numerator']  =$minutes ;
57        $ret[1]['Denominator']=1; 
58        $ret[2]['Numerator']  =$sec->Numerator ;
59        $ret[2]['Denominator']=$sec->Denominator;
60  $ret[3]= " Deg: " . $degrees . " Min: " . $minutes . " Sec: " . $seconds."  " ;
61       
62return( $ret); 
63
64}
65
66
67/*
68//Array (
69[GPSLatitudeRef] => S
70[GPSLatitude] =>
71Array ( [0] => 41/1
72[1] => 54/1
73[2] => 26543/3238 )
74[GPSLongitudeRef] => E
75[GPSLongitude] => Array (
76[0] => 146/1
77[1] => 21/1
78[2] => 61393/1729 ) )
79*/
80
81function toFraction($number){
82
83echo  ($number)."<br />" ;
84$numerator = 1; 
85$denominator = 0; 
86$reste1->min =$number;
87
88
89for(  ; $numerator < 100; $numerator++){ 
90
91$temp =   ($numerator / $number);
92$reste=ceil($temp) - $temp;
93echo "<br />
94$reste --- $reste1->min " ; 
95if ($reste<$reste1->min) {
96        $reste1->numerator = $numerator;
97        $reste1->min =$reste ;
98        $reste1->denominator =$temp ;
99}
100
101    if(ceil($temp) - $temp == 0){ 
102                $denominator = $temp;
103                 break;
104        } 
105} 
106echo "<br />". $reste1->numerator . " /  " .$reste1->denominator ;
107
108return ($denominator > 0) ? $numerator . '/' . $denominator : false; 
109} 
110
111 function Parse_Fract( $f )
112{
113  $nd = explode( '/', $f );
114  return $nd[0]/$nd[1];
115}
116
117
118function Parse_Lat_Lon( $arr )
119{
120  $v=0;
121  $v += parse_fract( $arr[0] );
122  $v += parse_fract( $arr[1] )/60;
123  $v += parse_fract( $arr[2] )/3600;
124  return $v;
125}
126?>
Note: See TracBrowser for help on using the repository browser.