Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravím,
potřeboval bych poradit kde dělám chybu při výpočtu sinus a cosinus úhlu a výpočet souřadnic. Jedná se o násobky pěti až po 360, a dostávám záporné hodnoty.
http://forum.matweb.cz/viewtopic.php?pid=378392#p378392
Offline
↑ buff:
Ahoj.
Pokud vidíš problém pouze v tom, že funkce sinus a kosinus nabývají i záporných hodnot, tak v tom Tě mohu uklidnit:
tyto funkce skutečně nabývají i záporných hodnot.
Je-li problém v něčem jiném, pak uděláš dobře, když ho zde popíšeš podrobněji (a srozumitelně). Odhaduji, že vyhlídka
prolézat nějaké neznámé zdroje a případně spouštět neznámý software leckoho odradí. Máš-li zájem o nějakou pomoc,
počínej si tak, aby bylo snadné Ti ji poskytnout.
Offline
↑ Rumburak:
Ale přiložil jsem k vláknu obrázek s tím jaké hodnoty to ukazuje. některé hodnoty x a y vychází v záporu a to je divné.
Z obrázku jsou patrné úhly: 5°, 10°, 15°, 20°, 25° atd.
Dále tam je ten výpočet:
radian:=deg2rad(angle_deg)
// conversion deg*(M_PI/180);
cos := cos(radian) ; cosinus always for calculation of width
sin := sin(radian) ; sinus always for calculation of height
x := radius * cos
y := radius * sin
Radius jsem měl nastavený 250.
Střed byl umístěný na 0,0.
Ty x,y vychází v nechativních hodnotáchj i když střed posunu někde doprostřed obrazovky tedy 250,250
Z pouhého shlédnutí obrázku vidíte, že při 5° je x -207 a při 10° je 93 což je jasný nesmysl. Aspoň mi to tak připadá, protože při 15° dostanete zase 52° atd. Lítá to tam až moc zběsile
deg2rad() je funkce která převádí stupně na radiany
(x*180)/3.1415925635
Offline
Problém vyřešen, nebylo to výpočtem, ale tím programem, ještě to AHK neumím tak dobře takže tam vznikly chyby.
Offline
tak jsem se spletl. Problémy v AHK jsem sice vyřešil, ale jádro problému spočívá v nesprávném výpočtu, ale tady mi stejně nikdo nepomůže, že?
Střed: 150,150}
průměr := 200
radius := diameter/2
Počáteční stupeň: (0°)
deg += 5 navyšuje stupně po pěti
Toto mi to vykresluje:
Je to špatně! Mají tam být stupně 0° , 5° , 15° , 20° !
Převod na radiány mám
(x*180)/3.1415925635
To by mělo být dobře a co se se týče x a y počítám x z cosinu úhlu
x = radius * cos
a y ze sinu úhlu
y = radius * sin
Tak co je špatně?
Edit
Pozicí toho 0° si nejsem jistý, možná je to napravo otočeno o 90°, protože když vypíšu jen dvě rysky pro 0° a 5° tak nula je na třetí hodině.
Offline
↑ buff:
Takže nejprve shrńme fakta:
Tvým cílem je napsat programovou proceduru pro nakreslení kružnice. Vycházíš z parametrických rovnic
,
které jsou správné.
Je-li dán parametrisační úhel
ve stupních, je nutno převést ho dříve na radiány vzorcem
,
což je rovněž správně. EDIT: Ale když si to čtu znovu, vidím, že píšeš
Převod na radiány mám
(x*180)/3.1415925635
To by mělo být dobře a co
,
což dobře není. Těch 3.1415925635 má být v čitateli , 180 ve jmenovateli.
Tato chyba by ale teoreticky neměla ovlivnit tvar kružnice, leda snad vlivem případné klesající přesnosti těch gon. funkcí při velkých hodnotách proměnných.
Další chybu tedy nutno hledat ještě jinde.
Doporučoval bych kresbu toho obrázku z přísběvku 4 si odkrokovat , abys především zjistil, při kterém průchodu smyčkou
chyba vzniká (z obrázku se zdá, že většina průchodů dopadla dobře) .
V tom svém příspěvhu Také používáš proměnnou x ve dvou významech : jednou jako parametr úhlu, podruhé jako souřadnici bodu.
Pokud to tak máš i ve svém programu, je to chyba.
Offline