Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> trasa w ukł. współrzędnych, Jak przeliczyć którędy przechodzi pionek
nilfheim
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 5.04.2006

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


Mam układ współrzędnych powiedzmy 100x100

Chce aby pionek przeszedł z pola 1,1 na pole 11,15

Jak mogę obliczyć przez które pola przejdzie pionek(biorąc pod uwagę że idzie po przekątnej, a nie tak jak w tematach o znajdywaniu drogi, po kratkach)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


EDIT 3
Prosze tego posta nie brac pod uwage -- znow wszystko przemyslalem i zupelnie nie wiem jak rozwiazac ten problem i nie wiem czy te algorytmy sie do czegos przydadza...

: (
---------------------------------



EDIT:

To nie bedzie dobre rozwiazanie.


Troche linkow naprowadzajacych
http://en.wikipedia.org/wiki/Bresenham's_line_algorithm
http://www.gamedev.net/reference/articles/article767.asp

Ale nie jestem pewien czy dobrze rozwiaza ten problem.


EDIT 2: jak obrocisz uklad wspolrzednych to bedziesz mogl wyliczac dla linii polozonych pod katem (45, 90o), przy normalnym ukladzie (0,45)
Czyli po zastosowaniu tego alg. powinno sie udac.

Moge tylko zyczyc powodzenia (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

------------------------

Cala plansza to uklad wspolrzednych (X,Y).
Wyznacz roznienei prostej z tych dwoch punktow: Y(x) = Ax + B
(nie dziala dla prostej pionowej -- musisz obrocic uklad wspolrz)

pseudokod:
Kod
for ( $i = $start->x + 1; $i < $end->x; $i++ )
{
   $trasa_punkty[] = new Punkt( $i, (int)Y( $i ) );
}

foreach ( $trasa_punkty  as $punkt )
{
  print( $punkt-x . ", " . $punkt->y . "<br />" );
}
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: 12.10.2025 - 14:00