Prijavi problem


Obeleži sve katergorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

Programiranje grafike pomoću Pygame, priručnik za gimnaziju

Коришћење тригонометрије

Аналогни сат

Напиши програм који приказује аналогни сат.

Кључни део задатка је да се на основу сати, минута и секунди одреде координате крајева казаљки. Претпоставићемо да се положај минутне и сатне казаљке мења сваког минута, а секундне казаљке сваког секунда. Пошто се казаљке крећу равномерном брзином, зависност између угла и броја сати, минута и секунди је линеарна. Угао се, дакле, може израчунати пропорцијом. Броју од 0 секунди одговара угао 0, док броју од 60 секунди одговара угао од 360 секунди. Дакле, угао секундне казаљке може се одредити дељењем броја секунди са 60 и множењем са 360. Веома слично се одређује и угао минутне казаљке. Што се тиче сатне казаљке, потребно је и преподневне и поподневне сате свести на интервал од 0 до 12, што се може урадити једноставим проналажењем остатка при дељењу бројем 12. Пошто желимо да се угао сатне казаљке одређује сваког минута, положај сатне казаљке одређиваћемо претварањем времена протеклог од поднева односно поноћи у минутима. Тај број се може добити множењем тренутног броја сати са 60 и сабирањем са тренутним бројем минута. Времену од 0 сати и 0 минута, тј. вредности од 0 минута, одговара угао од 0 степени, док углу од 12 сати и 0 минута, тј. вредности од 12·60 минута, одговара угао од 360 степени.

Када је познат угао неке казаљке, могу се одредити координате њене завршне тачке коришћењем функције tacka_na_krugu, при чему се за центар круга узима центар сата, а полупречник круга се одређује на основу дужине казаљки (сатна казаљка је најкраћа и њена дужина износи око 70 процената полупречника сата, док су дужина секундне и минутне казаљке око 90 процената полупречника сата). Унутар те функције користимо тригонометријске формуле да бисмо одредили непознате координате.

../_images/sat_koordinate.png

Ако уочимо правоугли троугао \(A0A'\), позната нам је дужина његове хипотенузе \(R\), угао \(\alpha\), док нам непознате дужине катета представљају координате тачке \(A\) (односно помераје те тачке од центра круга у хоризонталном и вертикалном правцу). Пошто је синус угла однос наспрамне катете и хипотенузе, а косинус угла однос налегле катете и хипотенузе, и пошто у графици y координате расту наниже, добијамо формуле:

\[ \begin{align}\begin{aligned}x = c_x + r \sin{\alpha}\\y = c_y - r \cos{\alpha}\end{aligned}\end{align} \]

Наравно, угао \(\alpha\) мора бити изражен у радијанима (конверзију из степена лако можемо постићи коришћењем библиотечке функције math.radians).