Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]przelicznie odległości pomiędzy punktami, float w pętli
zoorg
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 18.03.2007

Ostrzeżenie: (0%)
-----


Witam moją ulubioną klase w szokle tańca ze zmiennymi

pomysł jest taki, gram sobie w jakąś gierkę i chciałbym zrobić sobie listę odległości pomiędzy bazą gdzie chcę wysłac defa, a całą resztą baz z których moge podesłac defa -) - pierdołki z iteracja, MySqlem tablicami i formularzami do wprowadzania danych, następnie ich wybieraniem sobie dam radę,


kwestia jest taka ze gra uzywa jakiegoś przelicznika odległości aby ustanowić czas niezbędny do pokonania tej odległości przez okreslony typ jednostki, chcę go znaleźć stosujac zmienną której szukam (czyli czas dotarcia do bazy okreslony przez serwer gry (wyświetlany), stąd zamiast wpisywac kolejne wartości, ułozyłem pętlę for, która ma mi przeryć zakres zmiennych, aż znajdzie poszukiwaną.

PHP nie trybi float w pętli for, jak to "obejść" ?

CODE
<?php
header('Content-Type: text/html; charset=utf-8');
?>


<?php

//kordy na mapie

//obirekt 1
$x1=726;
$y1=486;
//obiekt 2 (po przekątnej)
$x2=727;
$y2=482;

$kaw=8*60; //czas w sekundach dla typu jednostki 8 min leci na odl 1 pole w górę, dół lewo, prawo.

//przelicza odl pomiedzy obiektami
odleglosc($x1,$y1,$x2,$y2).'to bez sensu'; //nie mogę dokleić do funkcji tekstu ???.. bo łaj? - nie wyświetla (potrafię sobie odpow, że funkcja zwraca, ale dlaczego nie moge juz w tym mom sobie "dokleić" komenta

$mabyc=28.500000001; //28min 50 sek wskazuje w przeliczniku w grze
//echo odleglosc().'<br>';

$oblicz=odleglosc($x1,$y1,$x2,$y2); //odległosć ale w jakich jednostkach, metr, kilometr?? - pixele ;-)
echo 'wartosc $oblicz z funkcji odległosc '.$oblicz.'<br>';
$oblicz=($oblicz*$kaw)/69.44100111; //tu jakiś ich dziwny przelicznik odległości na czas, nie chce wklepywać az ustale poprawny stąd pętla kt ma mi znaleźć 'dokładny' przelicznik
//echo 'odl '.$oblicz/$kaw;
for ($dzielna=69;$dzielna>=71.00000000;$dzielna+0.000001){
if ($mabyc !== 28.500000001){
}else { echo 'poprawna wartośc dzielnika to '.$dzielna.'<br>'; }

}

echo round($oblicz,19).'<br>';

echo '<br>';
function odleglosc ($x1,$y1,$x2,$y2) {

$d=sqrt( (($x2-$x1)*($x2-$x1))+(($y2-$y1)*($y2-$y1)) );
return sqrt( (($x2-$x1)*($x2-$x1))+(($y2-$y1)*($y2-$y1)) );
echo 'to wygrawerowało wew funkcji'.$d.'<br>'.'lala'; //tez dla mnie ciekawostka ze po return nie działa "nietoperek" (echo)
//return $d;
}

?>


Ten post edytował zoorg 21.12.2014, 21:57:40
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
fastlone
post
Post #2





Grupa: Zarejestrowani
Postów: 95
Pomógł: 15
Dołączył: 3.06.2010

Ostrzeżenie: (0%)
-----


  1. odleglosc($x1,$y1,$x2,$y2).'to bez sensu'; //nie mogę dokleić do funkcji tekstu (IMG:style_emoticons/default/questionmark.gif) ?.. bo łaj? - nie wyświetla (potrafię sobie odpow, że funkcja zwraca, ale dlaczego nie moge juz w tym mom sobie "dokleić" komenta
  2.  
  3. $mabyc=28.500000001; //28min 50 sek wskazuje w przeliczniku w grze
  4. //echo odleglosc().'<br>';


Możesz do zrobić w taki sposób:
  1. $mabyc=28.500000001; //28min 50 sek wskazuje w przeliczniku w grze
  2. echo odleglosc($x1,$y1,$x2,$y2).'to bez sensu<br>';


Nie możesz doklejać tekstu tak o, do funkcji, jeśli dana funkcja nie będzie przypisana do zmiennej bądź nie zostanie wyświetlona (np. poleceniem echo)

A na samym końcu nie zadziała Ci echo po returnie, gdyż polecenie return nie patrzy na to, co jest za nim (IMG:style_emoticons/default/wink.gif)

Ten post edytował fastlone 21.12.2014, 21:35:02
Go to the top of the page
+Quote Post
zoorg
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 18.03.2007

Ostrzeżenie: (0%)
-----


to jest mniej istotne z tym doklejaniem tekstu, mimo to dzięuję za zwrócenie uwagi na semantykę języka

1 funkcja = 1 return. Oj niedobrze -)


jednak najbardziej mnie zastanawia ten float w pętli for ;/
Go to the top of the page
+Quote Post
fastlone
post
Post #4





Grupa: Zarejestrowani
Postów: 95
Pomógł: 15
Dołączył: 3.06.2010

Ostrzeżenie: (0%)
-----


Rozwiązaniem wydaje mi się pomnożenie wszystkich liczb o taką potęgę liczby 10, by zniknęły wszystkie przecinki.
Go to the top of the page
+Quote Post
zoorg
post
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 18.03.2007

Ostrzeżenie: (0%)
-----


dobra, wiem co zjeb%%, w pętli for, nie sprawdzam dzielnej ze zmienna -)

..jednak chyba Twój pomysł jest najlepszy, pomnozyć i potem przerobić na sek/min/godz..


jednak zeby w pętli ..

nie działało takie coś?

  1. $pom=0.000001;
  2.  
  3. for ($dzielna=69.00001;$dzielna>=71.00000001;$dzielna+$pom){
  4. $pom=$pom+0.00001;
  5. if ($dzielna !== 28.5001){
  6.  
  7. }else {
  8.  
  9. echo 'poprawna wartośc dzielnika to '.$dzielna.'<br>';
  10. }
  11.  
  12.  
  13.  
  14. }
  15.  


Ten post edytował zoorg 21.12.2014, 21:54:35
Go to the top of the page
+Quote Post
untorched
post
Post #6





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


A nie przypadkiem
  1. for ($dzielna = 69; $dzielna <= 71.00000000; $dzielna += 0.000001){
Go to the top of the page
+Quote Post
zoorg
post
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 18.03.2007

Ostrzeżenie: (0%)
-----


...i narodziła się misja aby w apache zmienić czas oczekiwania na wyswietlenie strony. -)
Fatal error: Maximum execution time of 30 seconds exceeded in AB_distance.php on line 43

zmiana z > na < na pewno pomogła...

aaa.. i kwestia jest inna - bo w pętli for szukam zakresu dla dzielnika, a dzielnik musi być sprawdzany z efektem funkcji odległośc do wzorca (czyli te oczekiwane 00:28:50) czyli IF ryje wynik z funkcji przez dzialnik do czasu az efekt bedzie taki jak ze wzorca -)


czyli opakujemy for dla dzielnik inną funkcję, podlożymy pod działanie i będziemy sprawdzać do czasu az bedzie zgodne ze wzorcem -)

..no sam sobie nie lajknę "pomógł" -)

albo prościej w IF-ie damy działanie z funkcji.. itd itp-)

Ale dziękuję Wam za zainteresowanie i przyklepałem "pomógł" tym co wnieśli spostrzegawczość w "temat"

Dziękuję -)

Ten post edytował zoorg 21.12.2014, 22:27:55
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 10:27