Stap 2: Een beetje theorie.
In plaats van een klok als een set van bewegende handen bekijken, moeten wij voorstellen als een verzameling van concentrische cirkels. Een hand is dan een lijn tussen het centrum en een punt op een van deze kringen.
Een hand zal altijd onder een bepaalde hoek naar het beginpunt (12 uur).
Als we een coördinatensysteem Cartegian toevoegen (je weet wel, de X-as en Y-as - thingy) en wij plaatsen het middelpunt van de cirkel op de oorsprong (0,0), dan kunnen we het creëren van een rechthoekige driehoek. De beroemde Griekse collega, mijnheer Pythagoras, vertelde ons dat we van de lengte van de schuine zijde van een rechthoekige driehoek met de volgende vergelijking bepalen kunnen:
a2 + b2 = c2
Zoals de schuine zijde gebeurt te zijn van onze straal en het midden van de cirkel ook de oorsprong van het coördinatenstelsel is, kunnen we het volgende stellen:
R2 = X2 + Y2
Wij weten R is de straal van onze kring. Dus moet er een manier om te berekenen van X en Y. Het enige ding dat we moeten daarvoor is sommige trigonometrie.
Sommigen van u kreunen bij het horen van het woord trigonometriefuncties kon ik hoor. Maar vertrouwen mij is het niet zo moeilijk als het klinkt.
Misschien heb herinneren je de mnemonic SOHCAHTOA van uw lessen wiskunde op school. Als u ook niet vergeten wat het betekent, dan je alles weet wat je moet weten voor dit. Als dat niet het geval is, dan zal ik het hier uitleggen.
SOHCAHTOA staat voor:
Sinus = tegenovergestelde / schuine zijde
Cosinus aangrenzende/schuine zijde =
Distributiekant = tegenovergestelde / aangrenzende
Voor nu kunnen we de distributiekant vergeten als we dat niet nodig.
We weten dat de schuine zijde hetzelfde als onze straal, is zodat we degenen kunnen ruilen. Het enige wat dat we nu nodig hebben is een hoek om mee te werken. Weten we een? Ja, in feite kunnen we berekenen alle drie van hen als wij zouden willen.
We weten dat zeker dat een van hen is 90degr. Want het is een rechthoekige driehoek maar we mogen dat niet gebruiken. Maar, zoals ik al zei in het begin, zal een hand altijd onder een bepaalde hoek t.o.v. het punt staren en kunnen we gemakkelijk berekenen die hoek.
hoek = stappen * 360 (volledige cirkel) / max bedrag van stappen
Dit dus in het geval van de seconden en minuten handen worden:
hoek = min (of sec) * 360 / 60 of hoek = min (of sec) * 6
In het geval van de uren zullen er dit:
hoek = uur * 360 / 12 of hoek = uur * 30
Deze hoek is het laatste wat we nodig hadden voor het berekenen van X en Y. (als u berekenen van de 3e hoek net weet 180 min de twee hoeken en heb je de 3e men wilt).
Laat alles bij elkaar brengen nu en vul in wat we reeds weten:
Sin hoek = tegenover / straal
cos hoek = aangrenzende/straal
Als het hoekpunt van de hoek is hetzelfde als de oorsprong van het coördinatenstelsel:
Sin hoek = y/straal
cos hoek = x / straal
of
x = straal * cos hoek
y = straal * sin hoek
Maar wat als het hoekpunt van de hoek ligt niet bij de oorsprong? Dan moeten we nemen de coördinaten van dat punt in de vergelijking.
x = een + RADIUS-* cos hoek
y = b + RADIUS-* sin hoek
Dus nu weten we dat de coördinaten van het eindpunt van onze hand!
Nou... Euhh... niet vrij maar... er is een klein probleem:
Als u een code met deze vergelijkingen zou schrijven zou je een klok die begint bij 3 o klok en loopt tegen de klok in. Dat komt omdat onze hoekige berekeningen zijn ten opzichte van de x-as en die we voor de klok moeten moeten ten opzichte van de y-as. Gelukkig met een beetje van wiskundige magie, dit probleem is zeer snel opgelost:
x = een + RADIUS-* sin hoek
y = b - straal * cos hoek
Wat is er gebeurd hier is dat we de relatie met de as door het omwisselen van sin en cos verwisseld en we de richting veranderd van tegen de klok in naar de klok mee door het veranderen van + naar-.
Dit was de theorie, in de volgende stappen zullen we dat in praktijk brengen.