Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [?] Geometria, punkt na prostej
Forum PHP.pl > Forum > Przedszkole
Orkan
Myślałem że to będzię banalne, ale jednak nie daje rady...
Znam wzór na wyznaczenie punktu na prostej, tylko jak to przenieść do kodu bez tworzenia stu if/else?

Robie animację obrazka w oknie przeglądarki. Obrazek przechodzi od punktu A (gdzieś na krawędzi okna) przez punkt B (gdzieś wewnątrz okna) i "leci" dalej po tej samej prostej do punktu C (przeciwległa krawędź okna)

Pytanie, jak wyznaczyć współrzędne punktu C znając tylko A i B ? (no i rozmiar okna winksmiley.jpg )
sowiq
Czegoś tu nie rozumiem. Prosta ma równanie y = ax + b. Powiedzmy dla ułatwienia, że u Ciebie a = 2, b = 3. Więc na Twojej prostej będzie leżał każdy punkt o współrzędnych x, y takich, że y = 2x + 3. Czyli punktów C spełniających Twoje założenie będziesz miał nieskończenie wiele (biorąc poprawkę na rozdzielczość okna przeglądarki, bo chyba o to chodzi w tym przypadku, będzie ich skończona ilość).
kamil4u
Off Topic:
Cytat
Prosta ma równanie y = ax + b.

Nieprawda - zrób sobie prostą pionową smile.gif - a prawidłowy wzór to: Ax+By+C=0

Co do samego rozwiązanie to oczywiście rozumowanie prawidłowe smile.gif
sowiq
Cytat(kamil4u @ 27.02.2009, 16:39:55 ) *
a prawidłowy wzór to: Ax+By+C=0
Chylę czoła smile.gif I pomyśleć, że przez rok studiowałem matematykę wstydnis.gif
Orkan
Cytat(sowiq @ 27.02.2009, 17:55:59 ) *
... (biorąc poprawkę na rozdzielczość okna przeglądarki, bo chyba o to chodzi w tym przypadku, będzie ich skończona ilość).


dokladnie chodzi o ten jeden punkt na krawędzi okna przeglądarki
sowiq
Załóżmy, że nie chcesz prostej pionowej. Masz wzór y = ax + b. Skoro znasz współczynniki a i b (tak napisałeś wyżej), znasz x (szerokość viewport'u), to w czym problem?
Orkan
Cytat(sowiq @ 28.02.2009, 00:07:57 ) *
Załóżmy, że nie chcesz prostej pionowej. Masz wzór y = ax + b. Skoro znasz współczynniki a i b (tak napisałeś wyżej), znasz x (szerokość viewport'u), to w czym problem?


na wikipedii jakies dziwne wzory znalazlem i nie potrafilem ich podstawic, ale juz mam smile.gif
skorzystalem z tego materialu: http://2000clicks.com/MathHelp/GeometryPointsAndLines.htm

  1. <?php
  2. // A - punkt startowy, B - punkt przelotowy => zamieniony na koncowy
  3. // Nachylenie [m] i przeciecie-y [b] - porzebne do wzoru: y = mx + b
  4. var m = (B.y - A.y) / (B.x - A.x);
  5. var b = A.y - m * A.x;
  6.  
  7. // Oblicz punkty przecięcia z 4 krawędziami okna przeglądarki, odpowiednio dla: x0=Lewa, x1=Prawa, y0=Gorna, y1=Dolna
  8. var x0 = Math.floor(m * 0 + b);
  9. var x1 = Math.floor(m * window.width + b);
  10. var y0 = Math.floor((0 - b) / m);
  11. var y1 = Math.floor((window.height - b) / m);
  12.  
  13. // Punkt koncowy: Lewa krawedz?
  14. if(x0 >= 0 && x0 <= window.height && A.x >= B.x) {
  15.    B.x = 0;
  16.    B.y = x0;
  17. }
  18. // Punkt koncowy: Prawa krawedz?
  19. else if(x1 >= 0 && x1 <= window.height && A.x <= B.x) {
  20.    B.x = window.width;
  21.    B.y = x1;
  22. }
  23. // Punkt koncowy: Gorna krawedz?
  24. else if(y0 >= 0 && y0 <= window.width && A.y >= B.y) {
  25.    B.x = y0;
  26.    B.y = 0;
  27. }
  28. // Punkt koncowy: Dolna krawedz?
  29. else if(y1 >= 0 && y1 <= window.width && A.y <= B.y) {
  30.    B.x = y1;
  31.    B.y = window.height;
  32. }
  33. ?>
kamil4u
Gdzie Ty masz te dziwne wzory?
Podany prze za mnie: http://pl.wikipedia.org/wiki/Prosta#R.C3.B...nie_og.C3.B3lne
Podany przez sowiq: http://pl.wikipedia.org/wiki/Prosta#R.C3.B...aci_kierunkowej

Czyli już sobie poradziłeś, bo nie do końca zrozumiałem?
dr_bonzo
Moze to ci pomoze http://stackoverflow.com/questions/510055/...ross-the-screen ?
kamil4u
Mógłbyś mi wytłumaczyć po co dałeś ten link? Przecież nic nie wnosi do tematu(no chyba, że się mylę, ale w takim razie proszę o wyjaśnienie)?
dr_bonzo
Hmm, chodzilo ci o przesuniecie obrazka z puntu A do B.
Teraz dopiero zauwazylem ze koniecznie ma przejsc przez punkt C.
Sorki
Orkan
dziekuje, juz sobie poradzilem... kod ktory podalem jak narazie sie sprawdza smile.gif

temat do zamkniecia
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.