Mam se kawałek kodu do policzenia kroków wskazówek na tarczy zegara, o ile sekundy i minuty mają aż po 60 kroków i jakoś to wygląda, o tyle godzinowa ma zaledwie 12 kroków/miejsc. Czyli od razu przeskakuje całą godzinę zamiast robić to płynnie. Ale chciałbym żeby sie przesuwała płynnie po tarczy jak np minutowa. Nie wiem jak to policzyć.

Katsec = Rtc_cnt * 6

Katmin = _min * 6 (x60 =360)

Kathour = _hour * 30 (x 12 =360 stopni)

ma ktoś pomysł czy jestem upośledzony

#programowanie #matematyka

Komentarze (11)

976497

@Fox Jeśli ruch wskazówki uzależnisz od timestampa, to możesz mieć płynność o szybkości odświeżania animacji. Jeśli jednak zegar jest już uzależniony od sekund, to sobie dzielisz 360° przez 12*60*60 (czyli każdy stopień obrotu będzie podzielony jeszcze na 12 mniejszych jednostek ruchu), a to jeszcze prawdopodobnie powinieneś dodatkowo zamieniać ze stopni na radiany.
Trochę jeszcze za mało napisałeś o co konkretnie chodzi, a ja już słabo kontaktuję, bo czuję objęcia Morfeusza.

Fox

@976497 >360° przez 12*60*60

no właśnie tak jest, i jak widzisz mam tylko 12 ruchów dla wsk godzinowej, i to powoduje brak płynności.

Będę musiał liczyć jak przekładnię od wsk sekundowej.

976497

@Fox Każdy z tych ruchów to jest 1/12 stopnia, wobec tego jak wielka jest ta wskazówka, że to widać? Przecież 1° to już jest mało, a co dopiero jego 12 jeszcze mniejszych części. Coś dziwnie liczysz, jeśli przeszkadza ruch wskazówki godzinowej, a nie przeszkadza ruch wskazówki sekundowej lub minutowej.

Fox

@976497 tu chodzi o to że na analogowym zegarze wsk godzin idzie płynnie czyli ma pozycje pomiędzy pełnymi godzinami . A w cyfrowym mam 12h i już. Nie wiem jak policzyć pozycje pomiędzy płynnymi.

976497

@Fox Wskazówka godzinowa wykonuje dwa obroty w ciągu 24 godzin. Aby poznać aktualne położenie wskazówki godzinowej, to nie oblicza się pozycji dla każdej godziny, ale liczy się jaka część czasu z tych 24 godzin już minęła.
Jeśli upłynęło już na przykład 25% doby (czyli 6 godzin), to jest to 25% z 720° (czyli 180°, czyli wskazówka na 6). Chodzi tylko o to, aby % zamienić na °, a ° na radiany (bo w tym się zwykle podaje kąty w programach graficznych). Wtedy płynnie można animować położenie wskazówki, bo można ustawić wtedy wskazówkę na dowolny kąt (na przykład 21,379998%)

Fox

@976497 tarcza ma 12h nie 24

tak czy inaczej dodanie 2 linijek kodu ze zmienną pomocniczą zm4 doliczające obliczenie z minuty załatwiło sprawę


Katsec = _sec * 6

Katmin = _min * 6

Zm4 = _min / 5

Kathur = _hour * 30

Kathur = Kathur + Zm4


oczywiście dalej są obliczenia sinusów i cosinusów które liczą położenia końców wskazówek

b671abb5-443b-4e4e-8c27-e0ff9760570d
Eruanno

O te najprostsze rzeczy są najtrudniejsze xD uprosc problem do samych minut. Najpierw oblicz kąt dla godziny czyli od 0 do 11 co 30 stopni np. dla godziny 5 masz 5*30 stopni czy 150stopni. Następnie dodaj kąt dla minut. Od 0 do 59 co 0,5 stopnia czyli np. dla 25 minuty masz 12,5 stopni i jak połączymy dla dla godziny 5:25 to masz 150 + 12,5 = 165,5 stopnia. Analogicznie w ramach cwiczenia dodaj sekundy

Fox

@Eruanno podumam nad tym dzięki

Eruanno

@Fox a jak masz kod który faktycznie przyjmuje kroko a nie kąty to analogicznie. 12*60*60 to 43200 krokow i trzeba składać po kolei te przekształcenia. Jeden "krok" godzinowy to 3600 krokow czyli dla piatej masz pozycje 5*3600 = 18000

Fox

@Eruanno mam kod na sinusach i radianach

Zaloguj się aby komentować