KLOK
Op kwartaal diskette 1999-4 vond ik het programma Clock2.BAS, dat me herinnerde
aan een programma van een klok dat ik in 1995 maakte.
Deze klok bestaat uit een gekleurde cirkel met schaalverdeling (60),
een grote en kleine wijzer in dezelfde kleur, plus een secondenwijzer in een
andere kleur. De klok is getekend in het midden van het scherm en boven de klok
wordt elke seconde de tijd weergegeven in de vorm uu:mm:ss en in kleur wit.
Voor het tekenen van de schaalverdeling en de wijzers wordt gebruik gemaakt van
de mogelijkheid van het CIRLE-statement om een deel van de cirkel te tekenen;
een zgn. taartpunt.
De begin- en eindwaarde van dit cirkeldeel moet dan negatief worden opgegeven.
Door voor begin en eind dezelfde waarde te nemen, heeft dit deel een dikte van
een enkele lijn.
De schaalverdeling van 60 stappen op de cirkel is n graden groot (n=360\60).
Omdat het CIRCLE-statement werkt met radialen moet de n graden-stap
omgerekend worden naar een radialen-stap (re#=n*Pi#/180).
De schaalverdeling wordt getekend met lijnen uit het midden naar de cirkelrand.
Ook voor de wijzers wordt het CIRCLE-statement in deze vorm gebruikt.
Voor de rechtsom beweging van de wijzers met stapjes van n graden,
zijn kleiner wordende waarden nodig.
De laatste lijn, 12 uur dwz 90 graden, is berekend met de kleinste waarde.
De grootste en beginwaarde is dan te berekenen (beginw=60+90/n).
Het tekenen van de wijzers en de tijdaanduiding wordt gedaan door de routine
SecWyzer. Deze routine wordt elke seconde aangeroepen door het samenspel van de
statements SLEEP en ON TIMER(1) GOSUB.
Het programma kan worden gestopt door het indrukken van de ESC-toets.
Als je daarvoor genoeg geduld zou hebben, is te zien dat na elke 87 seconden
de secondenwijzer hapert. Dit is verklaarbaar doordat de computer-klok ca. 18,2
keer per seconde tikt (zie SOUND-statement) i.p.v. een geheel aantal keren.
Toch kan ik de waarde 87 niet cijfermatig verklaren. Graag zou ik zien dat
iemand mij dit voorrekende.
En nog belangrijker, is hiervoor een werkende oplossing?


