Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] mapa - rysowanie ścieżek, mapa strony klanowej
darkpytong
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 7.01.2009

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


Chciałbym stworzyć w php mapkę z zaznaczonymi na niej lokacjami, które będą połączone ścieżkami. Zastanawiam się, czy może macie pomysł na wykonanie owych ścieżek. W sumie najbardziej zależy mi na wyglądzie samych połączeń- żeby to były jakieś ładne linie poprowadzone łukami; byle nie proste albo nienaturalnie powykrzywiane. 


Chcę, aby ścieżki były automatycznie nanoszone w ramach zmian w samej mapie. Tak, aby nawet w wypadku przemieszczania się punktów ścieżka obierała trasę uwzględniając to przesunięcie. Może coś w rodzaju dynamicznie generowanego pliku graficznego? 


Chciałbym, żeby efekt końcowy prezentował się podobnie jak na mapie świata z gry Final Fantasy Tactics: http://www.ffshrine.org/fft/world_map.jpg


Mam nadzieję, że dobrze nakreśliłem Wam moją ideę. Za ewentualną pomoc z góry dziękuję i na wszelki wypadek zaznaczam raz jeszcze, że oczekuję pomysłów a nie gotowych rozwiązań w postaci kodu, wolę się sam pomęczyć  (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował darkpytong 8.01.2009, 09:25:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
darkpytong
post
Post #2





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 7.01.2009

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


Wielkie dzięki za podpowiedzi  (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Trochę nad tym posiedziałem próbując zrobić coś z tym skryptem:

CODE
<?php

$segmentos =30;
$x=array(0,10,80,30);
$y=array(0,10,40,50);

function bezier($p,$steps){
  $t = 1 / $steps;
  $temp = $t * $t;
  $ret = array();
  $f = $p[0];
  $fd = 3 * ($p[1] - $p[0]) * $t;
  $fdd_per_2=3*($p[0]-2*$p[1]+$p[2])*$temp;
  $fddd_per_2=3*(3*($p[1]-$p[2])+$p[3]-$p[0])*$temp*$t;
  $fddd = $fddd_per_2 + $fddd_per_2;
  $fdd = $fdd_per_2 + $fdd_per_2;
  $fddd_per_6 = $fddd_per_2 * (1.0 / 3);
  for ($loop=0; $loop<$steps; $loop++) {
  array_push($ret,$f);
  $f = $f + $fd + $fdd_per_2 + $fddd_per_6;
  $fd = $fd + $fdd + $fddd_per_2;
  $fdd = $fdd + $fddd;
  $fdd_per_2 = $fdd_per_2 + $fddd_per_2;
  }
  return $ret;
}

$by = bezier($y,$segmentos);
$bx = bezier($x,$segmentos);
header ("Content-type: image/jpeg");
$tam = 200;
$im = imagecreate($tam,$tam);
$background_color = imagecolorallocate ($im, 200, 200, 200);
$tc = imagecolorallocate ($im, 233, 14, 91);
for($i=0;$i<$segmentos-1;$i++)
  imageline($im,$bx[$i],$tam-$by[$i],$bx[$i+1],$tam-$by[$i+1],$tc);
imagejpeg($im); 
imagedestroy($im);
?>


Niestety, skrypt niezbyt poprawnie działa, linie się zawijają i ogólnie dość wariacko zachowują.

Jednakże spróbuję tej klasy, mam nadzieję, że będzie to coś innego, działającego  (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

A na marginesie: przypominam przezornie, że linie mają być generowane dynamicznie, ew. losowo.
Go to the top of the page
+Quote Post

Posty w temacie


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: 4.10.2025 - 23:20