Vykreslení grafu funkce, jak řešit přepočet hodnot? - programování
Ahoj,
dělám program, který vykreslí matematickou funkci (je jedno jakou), tuto funkci vykreslí.
Jde o to, že mě nenapadá algoritmus, který by přepočítal hodnoty, aby se vešli do okna velkého 1000x1000 px.
Rekneme, že zadám funkci cos(x), vypočítám y na itnervalu x = <-2000, 2000>, tyto hodnoty mám uložené v poli a nyní je chci vykreslit, vykreslím, avšak, pokud budu chtít vykreslit například x^3, hodnoty budou značně veliké - nevejdou se do vykreslovací oblasti (1000x1000px).
Nenapadá mě nic vhodného, jak hodnoty transformovat, aby se vešli, zakládám pro to diskuzi a prosím někoho o radu
Přepočítat ty hodnoty tak, aby se do toho rozsahu vešly.
O to jsem se pokoušel, ale nenašel jsem funkční řešení pro všechny funkce, jejich hodnoty se liší až o miliony.
A to vadí? Najdeš si maximum a minimum a jedeš.
Stále to nechápu,
Pokud mám papír 1000x1000px, souřadnice 0,0(x,y) jsou přesně ve středu a já chci kreslit x^2, max všech hodnot je 4000000 a min všech hodnot je 0. Měl bych tedy všechny hodnoty dělit 10000? Takhle to myslíš? - Abych se s maximem dostal na 400 - což se tam ještě vejde a 100 mi zbyde volného místa..
koeficient = (reálné_maximum - reálné_minimum) / (požadované_maximum - požadované_minimum)
požadovaná_hodnota = reálná_hodnota * koeficient + požadované_minimum
Ale veď to je jednoduché...
Vykreslovacia oblasť = 1000
1000 * aktualna_hodnota / max_hodnota
aktualna_hodnota = hodnota, ktorú chceš práve vykresliť
max_hodnota = najvyššia hodnota
Děkuji oboum za rady, ano je to jednoduché, z celým programem se dělám již 3 den(pouze spím a pak programuji) tak už jsem trochu unaven, určitě to znáte, no nic. Ještě jednou děkuji. Ráno se na to vrhnu.
Díky.