Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
sin cos etc [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
sin cos etc


 
exillin
05-07-2006, 12:09 
 
Hallo

ich bekomm gleich pickel nen baby und was weiß ich noch ich sitze jetzt 4 stunde an einer sache und komm einfach nicht weiter!!! es kommt nicht das raus, was rauskommen soll irgendwie liefert mir die sinus funktion einen anderen wert... keine ahnung was ich falsch mache:

<?php

define("RADIUS", 6378.137);
define("PI", 3.141592653);




$test = array(
array("grad" => 50, "minute" => 59, "sekunde" => 00,"name" => "Erfurt, Zentrum"),
array("grad" => 11, "minute" => 02, "sekunde" => 00),
array("grad" => 52, "minute" => 31, "sekunde" => 00,"name" => "Berlin, Zentrum"),
array("grad" => 12, "minute" => 24, "sekunde" => 00),
array("grad" => 51, "minute" => 00, "sekunde" => 58,"name" => "Erfurt, Roterbergsiedlung"),
array("grad" => 11, "minute" => 01, "sekunde" => 56),
array("grad" => 50, "minute" => 56, "sekunde" => 77,"name" => "Gotha, Zentrum"),
array("grad" => 10, "minute" => 42, "sekunde" => 20),
array("grad" => 40, "minute" => 42, "sekunde" => 51,"name" => "New York, Manhatten"),
array("grad" => 74, "minute" => 00, "sekunde" => 23),
);

for($i=2;$i < 9;$i += 2)
{

$breite_1 = ($test[0]["sekunde"]/60 + $test[0]["minute"])/60 + $test[0]["grad"];
$lange_1 = ($test[1]["seckunde"]/60 + $test[1]["minute"])/60 + $test[1]["grad"];

$breite_2 = ($test[$i]["seckunde"]/60 + $test[$i]["minute"])/60 + $test[$i]["grad"];
$lange_2 = ($test[$i+1]["seckunde"]/60 + $test[$i+1]["minute"])/60 + $test[$i+1]["grad"];

//$breite_1 /= 180 * PI;
//$lange_1 /= 180 * PI;

//$breite_2 /= 180 * PI;
//$lange_2 /= 180 * PI;

$e = acos((sin($breite_1) * sin($breite_2)) + (cos($breite_1) * cos($breite_2) * cos($lange_2-$lange_1)));

print (sin($breite_1);

$entfernung = $e * RADIUS;

if($i == 2){

print "Sie befinden sich in " .$test[0]["name"]. "<br />";
print "In Ihrem Umfeld befinden sich folgende Sehenswürdigkeiten: <br /><br />";
print "----------------------------------------------------------<br / >";
}
print $test[$i]["name"]. "<br />";
print "Die Entfernung zu " .$test[0]["name"]. " beträgt: $entfernung km<br />";
print "----------------------------------------------------------<br / >";


}


?>

http://www.karomue.privat.t-online.de/nav/Entfernung_2.xls
http://www.koordinaten.de/informationen/formel.shtml

so wie bei diesen beiden links soll es arbeiten aber das tut es irgendwie nicht ich habe schon alle getestet :-(

im exel doc sind in der "Q" spalte die sinus ergebnisse zu sehen, die ich aber nicht erhalte!!!!

was mache ich falsch?

mfg

 
Slava
05-07-2006, 13:41 
 
sinus kann kein falsche wert liefern.
es kann zwar ein Wert nicht genau genug liefern, aber in keinem fall ein falsche
kann sein, dass du ein Wert in grad (°) erwartest?
Dann ist das falsch, da die Winkelfunktionen fast in allen programmier -sprachen mit Radlianen( Bogenmaß ) arbeiten.

 
exillin
05-07-2006, 13:44 
 
hmm stellenweise stimmen die werte überien, mit dennen, die ich erwarte aber stellenweise auch nicht ich hab ja auch schon mit asin und acos gearbeitet aber brauchte auch keinen erfolg zumal es eigentlich im bogenmaß berechnet werden soll...

mfg

 
Slava
05-07-2006, 13:54 
 
die Functionen die du benutzt, sind leider bei kleineren Abständen zwischen 2 Punkten sehr fehlerhaft.
schau dir die Informationen zu OpenGeoDb
http://opengeodb.hoppe-media.com/index.php?LinksGeoDaten
auch in diesem Forum findest du Threads zu dieser Thema, die über 9 Seiten laufen.

 
tcpip
05-07-2006, 13:55 
 
Ohne die Formel nachzuprüfen -
die Umwandlung ins Bogenmass, welche auskommentiert ist, muss wieder rein.
Ich würde den Faktor in Klammern setzen bzw. überhaupt schreiben
$breite_1 *= (PI/180);
usw.

Dann hat es einen Syntaxfehler, es fehlt eine Klammer.
print (sin($breite_1);

Ich nehme den Code noch in die Sandbox und komme nochmals.

 
tcpip
05-07-2006, 14:06 
 
Die Sandbox hat es gefunden; hier der richtige Code:
<html>
<body>
<pre>
Sie befinden sich in Erfurt, Zentrum
In Ihrem Umfeld befinden sich folgende Sehenswürdigkeiten:

----------------------------------------------------------
Berlin, Zentrum
Die Entfernung zu Erfurt, Zentrum beträgt: 194.943220369 km
----------------------------------------------------------
Erfurt, Roterbergsiedlung
Die Entfernung zu Erfurt, Zentrum beträgt: 3.64963571859 km
----------------------------------------------------------
Gotha, Zentrum
Die Entfernung zu Erfurt, Zentrum beträgt: 23.1976664887 km
----------------------------------------------------------
New York, Manhattan
Die Entfernung zu Erfurt, Zentrum beträgt: 4858.47795628 km
----------------------------------------------------------

</pre>
</body>
</html>

Spass beiseite, es heisst
$breite_1 /= 180 / PI;
usw.

abgesehen von noch drei Parse Errors.

 
exillin
05-07-2006, 14:07 
 
hmm hab die umwandlung wieder drinne... aber immer noch keine besserung :-)

der syntaxfehler war mir hier beim posten passiert...
hmm wegen der genauigkeit ist diese für meine zwecke erstmal ausreichend...

mfg

 
exillin
05-07-2006, 14:11 
 
wow super mega fettes Danke für die Lösung!!! nun klappt es!!!
wie bieste auf die Lösung gekommen???

mfg

 
tcpip
05-07-2006, 14:13 
 
Original geschrieben von exillin
wie bieste auf die Lösung gekommen???

mfg Ganz einfach - ich versteh was von der Sache.

 
exillin
05-07-2006, 14:16 
 
hmm axo :-) naja ich hab den Fehler gar nicht da oben gesucht, weil ich diese Rechnung für richtig hielt und ich diese auch nachgelesen hatte....
naja nochmal viele dank!!
ich war schon fast am verzweifeln :-)

mfg


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:04 Uhr.