Witam ;] Chciałbym poruszyć wątek zamiany układu współrzędnych monitora na współrzędne kartezjańskie. Znalazłem opis do tego ale nie mogę tego zrozumieć :|
http://binboy.sphere.pl/index.php?show=207
Mam problem z zamianą współrzędnych :| Bardzo bym prosił o wyjaśnienie tego tematu bo nie mogę zaczaić jak to działa i dlaczego tak [???] Dziękuje za każde wyjaśnienie i podpowiedź.
P.S.
Piszę w bibliotece WinBGI
Wystarczy zmienić współrzędną "y" (pionową) na "getmaxy()-y". Współrzędna x zostaje takasama.
To wtedy otrzymuje tylko jedną z 4 części wykresu (układu współrzędnych) w takim wypadku nie mogę przedstawić np. sinusoidy która rozpoczyna sie od ujemnej połówki :| a już nawet nie wspomnę o bardziej złożonych rzeczy jak "fraktal". Problem dalej nie zostaje rozwiązany :|
kacper10714 napisał(a)
To wtedy otrzymuje tylko jedną z 4 części wykresu
Nic podobnego. Słyszałeś, że 2 minusy dają plus ? Jak nie to już wiesz :D
Jak JaskMar pisał, trzeba przy y postawić minus, bo na ekranie w pionie jest odwrotnie.
(x, y) - współrzędne kartezjańskie
(X, Y) - współrzędne ekranowe
(0X, 0Y) - współrzędne ekranowe początku układu współrzędnych
(X, Y) = (x, -y) + (0X, 0Y)
(x, y) = (X, -Y) + (-0X, 0Y)
Można dołożyć jeszcze skalę:
(SX, SY) - skala w pikselach/jednostkę kartezjańską
(X, Y) = (SXx, -SYy) + (0X, 0Y)
(x, y) = (X/SX, -Y/SY) + (-0X/SX, 0Y/SY)
Przepraszam za długotrwałe milczenie w odpowiedzi ale wciągnęło mnie tworzenie fraktala Mandelbrota :d
Okazało sie że to super sprawa :> Wielkie dzięki za pomoc :-) (jak bym mógł was spotkać to postawiłbym duże piwo ;-P ) Aż miło jak na zadane pytanie czy problem jest ktoś chętny pomóc :-)
P.S.
Znalazłem jeszcze jeden sposób skalowania:
a = (amax - amin) / getmaxx() * i + amin;
b = -(bmax - bmin) / getmaxy() * j + bmax;
gdzie:
a - szukana współrzędna "x" na płaszczyźnie kartezjańskiej
b - szukana współrzędna "y" na płaszczyźnie kartezjańskiej
amax - maksymalna 'obrana' współrzędna kartezjańska na osi "x"
bmax - maksymalna 'obrana' współrzędna kartezjańska na osi "y"
amin - minimalna 'obrana' współrzędna kartezjańska na osi "x"
bmin - minimalna 'obrana' współrzędna kartezjańska na osi "y"
i - współrzędna "x" ekranu obranego punktu
j - współrzędna "y" ekranu obranego punktu