De digitale vraagbaak voor het wiskundeonderwijs

home |  vandaag |  gisteren |  bijzonder |  gastenboek |  wie is wie? |  verhalen |  contact

HOME

samengevat
vragen bekijken
een vraag stellen
hulpjes
zoeken
FAQ
links
twitter
boeken
help

inloggen

colofon

  \require{AMSmath} Printen

Functies draaien

Hoi WisFaq,

Voor school moeten we een javaprogrammatje schrijven, waarbij een object in een 'wereld' beweegt, en tegen de randen van die wereld onder dezelfde hoek afketst.
Het bewegend object kan verschillende banen hebben.
Een voorbeeld hiervan is de rechte baan: f(x) = a.x + b
Hierbij ben ik geslaagd om het object tegen de randen van de wereld fatsoenlijk kunnen af te ketsen.

Nu moeten we een baan maken waarbij het object een sinusvormige beweging maakt, maar ik geraak er maar niet aan uit hoe je juist een sinusfunctie schuin laat verlopen.

Mijn eigenlijke vraag is dus: hoe draai je een functie, en
hoe kan je op een universele wijze de nieuwe baan na afketsing tegen een rand van de wereld vinden?

Dank op voorbaat,
Vincent

Vincen
Student Hoger Onderwijs België - zondag 13 november 2005

Antwoord

Voor wat betreft je eerste vraag:
Een grafiek van een functie f kun je parametriseren op de volgende manier:
x=t
y=f(t)
De grafiek van deze parameterkromme kun je roteren om O over een hoek a op de volgende manier:
x=cos(a)*t-sin(a)*f(t)
y=sin(a)*t+cos(a)*f(t)

Voor wat betreft je tweede vraag:
Zodra de baan tegen een van de grenzen van je venster aan botst moet je de bewegingsrichting omdraaien.
Dus stel het je "wereld" wordt bepaald door de getallen xmin,xmax,ymin ymax.
Zodra x groter wordt dan xmax of kleiner wordt dan xmin moet de bewegingsrichting in de x-richting worden omgedraaid. En ook zo met y.
De bewgingsrichting wordt bepaald door de afgeleiden van
x=cos(a)*t-sin(a)*f(t)
y=sin(a)*t+cos(a)*f(t)
Deze zijn
x'=cos(a)-sin(a)*f'(t)
y'=sin(a)+cos(a)*f'(t)
Mijn idee zou zijn:Kies een geschikte startwaarde voor t, bijvoorbeeld t=0.
Bereken x en y bij deze startwaarde.
Kies nu een geschikte delta_t.
De nieuwe x en y worden nu berekend met x=x+delta_x en y=y+delta_y
Hoe bereken je nu delta_x en delta_y?
In principe delta_x=x'(t)*delta_t en delta_y=y'(t)*delta_t.
Om het afketsen erin te brengen zou je nu twee getallen factor_x en factor_y kunnen nemen. Start met factor_x=1 en factor_y=1.
Zodra x groter wordt dan xmax of kleiner wordt dan xmin maak je factor_x gelijk aan -factor_x.
Je nieuwe berekening van delta_x wordt dan delta_x=x'(t)*delta_t*factor_x en analoog voor delta_y.
Om de boel aan de rand helemaal netjes te laten verlopen moet je eigenlijk ook nog een correctie toepassen op de waarden van x en y op het moment dat de rand net wordt overschreden. Maar er moet nog wat te doen overblijven



Wie is wie?
Vragen naar aanleiding van dit antwoord? Klik rechts..!
maandag 14 november 2005



home |  vandaag |  bijzonder |  gastenboek |  statistieken |  wie is wie? |  verhalen |  colofon

©2001-2024 WisFaq - versie 3