De digitale vraagbaak voor het wiskundeonderwijs

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

HOME

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

inloggen

colofon

  \require{AMSmath} Printen

Punt berekenen na een bepaalde afstand op een lijn

Ik heb een lijn AB, met bijvoorbeeld de coordinaten: A = (2, 2) en B = (10, 10). Nu wil ik die lijn eigenlijk aan beide kanten 'inkorten' met een waarde x (bijvoorbeeld 1.414). Nu zou in dit voorbeeld de nieuwe lijn lopen van (3,3) naar (9,9), maar hoe bereken je dat?

Bij voorkeur zo min mogelijk, of liever geen gebruik van sin, cos, tan , worteltrekken, machten etc omdat dit onderdeel is van een pathfinding systeem en deze berekening moet honderden keren per frame kunnen worden uitgevoerd.

Dennis
Student hbo - woensdag 17 juni 2009

Antwoord

Helemaal zonder worteltrekken zal het niet gaan.
Maar als de lijn dezelfde richting houdt in opeenvolgende frames hoef je dat worteltrekken maar ÚÚn keer te doen:
Noem A(a1,a2) en B(b1,b2)
Bereken nu de richtingsvector (rv1,rv2)=(b1-a1,b2-a2)
Bereken de lengte len van de richtingsvector: len=Í(rv1Ěrv1+rv2Ěrv2)
Bereken ook delta=x/len.

Als je nu aan beide zijden een stukje ter lengte x wilt aftrekken dan geldt:

a1nieuw=a1oud+deltaĚrv1
a2nieuw=a2oud+deltaĚrv2

b1nieuw=b1oud-deltaĚrv1
b2nieuw=b2oud-deltaĚrv2

Als nu in een volgend frame dezefde punten weer een stukje moeten worden veranderd hoef je alleen de berekening delta=x/len opnieuw uit te voeren en de nieuwe (a1,a2) en (b1,b2) uit te rekenen.
Dus moet je dan per puntenpaar wel ruimte reseveren voor rv1, rv2 en len.

Op zich kan dat weer een probleem geven voor wat betreft geheugenruimte.
Je kunt dan de volgende strategie volgen:
Bereken het midden (m1,m2) van AB: m1=(a1+b1)/2 en m2=(a2+b2)/2.
rv1 en rv2 zijn weer (b1-a1) resp (b2-a2).
dan
a1=m1-tĚrv1
a2=m2-tĚrv2
b1=m1+tĚrv1
b2=m2+tĚrv2
In de startsituatie geldt dan t=0.5
Met len=Í(rv1Ěrv1+rv2Ěrv2) geldt dan
tnieuw=toud-x/len.
Per lijnstukje levert dat dus op dat je moet opslaan: m1,m2,rv1,rv2, t en len. Je kunt dan de nieuwe t berekenen en (a1,a2) en (b1,b2) herberekenen.

Wie is wie?
Vragen naar aanleiding van dit antwoord? Klik rechts..!
woensdag 17 juni 2009
 Re: Punt berekenen na een bepaalde afstand op een lijn 



klein |  normaal |  groot

home |  vandaag |  bijzonder |  twitter |  gastenboek |  wie is wie? |  colofon

©2001-2020 WisFaq - versie IIb