Plaats een reactie

Je mail wordt niet openbaar getoond. Het wordt enkel gebruik voor contact of notificatie vanuit het beheer.

🗨️ Wat vind jij? Stel direct je vraag of geef je mening – zonder registratie. Je reactie zet het topic weer bovenaan bij 'Laatste posts' en trekt snel nieuwe reacties aan🔥. Mocht je als vaste bezoeker willen reageren, dan kun je je ook registreren.

Bevestig dat je geen robot bent door de volgende vragen te beantwoorden.

Noor heeft 10 knikkers. Ze verliest er 4 in het gras. Hoeveel heeft ze er nog?

Antwoord: (vul een getal in)

Er zitten 5 vogels op een hek. Twee vliegen weg. Hoeveel blijven er zitten?

Antwoord: (vul een getal in)

Weergave uitklappen Voorafgaande berichten: coördinaten spiraal berkekenen

Re: coördinaten spiraal berkekenen

door wnvl » do 29 mar 2012, 22:05

arie schreef:
@wnvl: volgens mij spiraliseer jij naar buiten ipv naar binnen
Klopt, ik zat in mijn hoofd met een naar buitendraaiende spiraal omdat we anders op het middelpunt botsen, maar het staat duidelijk in de opgave dat de spiraal naar binnen moet draaien. Mijn berekening was dus fout, maar de redenering blijft dezelfde.

Re: coördinaten spiraal berkekenen

door siep » do 29 mar 2012, 13:25

Laat je niet van de wijs brengen door alle wiskundige formules.
Je kan afgeleiden en integralen:
- ofwel zelf uitrekenen (zoals je hierboven met wnvl gedaan hebt)
- ofwel opzoeken (in boeken of in een rekenomgeving zoals WolframAlpha)
Wiskundigen verkiezen meestal de eerste optie, programmeurs de tweede.

De oplossingsstrategie voor jouw probleem loopt dan via de volgende stappen:
[1] bepaal een parametervoorstelling van de spiraal: x en y-waarde als functie van t
[2] bepaal een formule voor de lengte s van de spiraal: s als functie van t
[3] zoek de inverse functie hiervan: t als functie van s
[4] bepaal voor elke stap s via [3] de waarde van t en met t via [1] de waarden van x en y


[1] bepaal een parametervoorstelling van de spiraal: x en y-waarde als functie van t

De standaard parametervoorstelling van een cirkel met middelpunt de oorsprong en straal r is:
\(x(t) = r \cdot cos(\theta)\)

\(y(t) = r \cdot sin(\theta)\)

met hoek theta een reeel getal.
Als theta loopt van 0 tot 2pi loopt de cirkel tegen de wijzers van de klok in van
punt (r,0) via (0,r), (-r,0) en (0,-r) terug naar (r,0).
Theta mag elk reeel getal zijn: als theta = 4pi heb je de cirkel 2 keer doorlopen,
bij 6pi 3 keer etc.
Je kan theta ook vervangen door 2pi*t, met t een reeel getal.
\(x(t) = r \cdot cos(2\pi t)\)

\(y(t) = r \cdot sin(2\pi t)\)

Als t=0 is theta=0, als t=1 is theta=2pi etc
Hier geeft t dus het aantal keren aan dat de cirkel doorlopen is.

Nu wil jij niet beginnen in (r,0), maar in (-r,0).
De draairichting blijft tegen de klok in, dus de parametervoorstelling wordt:
\(x(t) = -r \cdot cos(2\pi t)\)

\(y(t) = -r \cdot sin(2\pi t)\)


Bovendien wil je geen cirkel, maar een spiraal, waarvan de straal begint met
150 eenheden en geleidelijk afneemt met 30 eenheden per volledige rotatie, ofwel,
ook uitgedrukt in t:
r = 150 - 30*t
Vul dit in in de formules voor x en y:
\(x(t) = -(150 - 30\cdot t) \cdot cos(2\pi t)\)

\(y(t) = -(150 - 30\cdot t) \cdot sin(2\pi t)\)


of iets algemener met:
b = beginwaarde van de straal = 150
a = afname van de straal per rotatie = 30
\(x(t) = -(b - a\cdot t) \cdot cos(2\pi t)\)

\(y(t) = -(b - a\cdot t) \cdot sin(2\pi t)\)

ofwel:

\(x(t) = (a\cdot t - b) \cdot cos(2\pi t)\)

\(y(t) = (a\cdot t - b) \cdot sin(2\pi t)\)


Dit is de parametervoorstelling van je spiraal.
Parameter t loopt in ons geval van 0 (r=150) t/m 5 (r=0).
Als je bijvoorbeeld in een programma
voor t = 0 tot 5 met stapgrootte 0.01
punt (x(t), y(t)) berekent en plot
zou je spiraal al zichtbaar moeten worden.

@wnvl: volgens mij spiraliseer jij naar buiten ipv naar binnen


[2] bepaal een formule voor de lengte s van de spiraal: s als functie van t

De booglengte van een kromme bij gegeven parametervoorstelling hebben jullie bepaald
via deze weg: http://nl.wikipedia.org/wiki/Booglengte
Zowel de twee afgeleiden (dx/dt en dy/dt) als de integraal kan je opzoeken
via bv WolframAlpha.

Je komt dan uit op:

\(s = \int_{t1}^{t2} \sqrt{\left(\frac{dx}{dt}\right)^2 + \left(\frac{dy}{dt}\right)^2}dt =\)


\(\left[\frac{at-b}{2a}\sqrt{(2\pi (at-b))^2 + a^2} + \frac{a}{4\pi}\ln \left( \sqrt{(2\pi (at-b))^2 + a^2}+2\pi (at-b)\right) \right]_{t1}^{t2}\)


Wij willen de booglengte s weten gemeten vanaf het beginpunt tot aan een bepaalde waarde t,
dus van t1=0 tot t2=t.
Dit levert met bovenstaande formule:

\(s = \frac{at-b}{2a}\sqrt{(2\pi (at-b))^2 + a^2} + \frac{a}{4\pi}\ln \left( \sqrt{(2\pi (at-b))^2 + a^2}+2\pi (at-b)\right) -\)


\(\left( \frac{a\cdot 0-b}{2a}\sqrt{(2\pi (a\cdot 0-b))^2 + a^2} + \frac{a}{4\pi}\ln \left( \sqrt{(2\pi (a\cdot 0-b))^2 + a^2}+2\pi (a\cdot 0-b)\right) \right)\)


Tot zover waren jullie gekomen.

Het is niet moeilijk dit om te zetten naar code, bv in C:

Code: Selecteer alles

//globale variabelen:
double spiral_a, spiral_b, spiral_t0;

//bereken booglengte:
double spirallength(double t)
{
double length,r,pr,w;

r  = spiral_a * t - spiral_b;
pr = 2*pi*r;
w  = sqrt(pr*pr+spiral_a*spiral_a);

length =  r*w/(2*spiral_a);
length += spiral_a*log(w+pr)/(4*pi);
length -= spiral_t0;

return(length);
}

//definieer b, a en t0:
void initspiral(double b, double a)
{
spiral_b=b;
spiral_a=a;
spiral_t0 = 0;
spiral_t0 = spirallength(0);
}

initspiral(b,a) roep je 1 keer aan om je spiraal te definieren, daarna kan je voor
elke waarde van t met spirallength(t) de lengte van het spiraaldeel berekenen.

We hadden al gezien dat t loopt van 0 t/m 5, wat vind je zo voor de waarden van
spirallength(0.0)
en
spirallength(5.0)
?


[3] zoek de inverse functie: t als functie van s

Zie je een mogelijkheid om met behulp van de functie spirallength(t) een functie
spiral_s2t(s) te bouwen, die voor gegeven s (met bv nauwkeurigheid delta=0.0001)
de bijbehorende waarde van t efficient kan zoeken?


[4] bepaal voor elke stap s via [3] de waarde van t en met t via [1] de waarden van x en y

Het zal nu niet moeilijk zijn voor elke s met stapgrootte 10 de waarde van t te bepalen
en daarmee de waarde van x(t) en y(t) om die vervolgens op te slaan in een bestand of
de punten (x(t), y(t)) te plotten op een bitmap.

Re: coördinaten spiraal berkekenen

door clankill3r » di 27 mar 2012, 23:02

bedankt voor de hulp, voorlopig geef ik het op.
Veels te moeilijke wiskunde :(

Re: coördinaten spiraal berkekenen

door wnvl » vr 16 mar 2012, 01:06

Om je een beetje verder te behelpen, kan je in

http://www.wolframalpha.com/input/?i=In ... C+99%7D%5D

99 door de waarde van t vervangen en je bekomt de lengte van de curve voor die waarde van t.

Re: coördinaten spiraal berkekenen

door wnvl » vr 16 mar 2012, 00:08

x=(-150-30t)\cos(2\pi t)
dx=60 \pi (t+5) sin(2 \pi t)-30 cos(2 \pi t)dt



y=(-150-30t)sin(2\pi t)
dy=-30 sin(2 \pi t)+60 \pi (t+5) cos(2 \pi t))dt



ds^2=dx^2+dy^2=(30^2+(60\pi(t+5))^2 -7200 \pi (t+5) )dt^2
ds=\sqrt{dx^2+dy^2}=\sqrt{(30^2+(60\pi(t+5))^2 -7200 \pi (t+5) )}dt

\int_0^sds=\int_0^t\sqrt{(30^2+(60\pi(t+5))^2 -7200 \pi (t+5) )}dt
s=\frac{15 \left(2 (\pi (t+5)-1) \sqrt{4 \pi ^2 (t+5)^2-8 \pi (t+5)+1}-3 \log \left(-2 \pi (t+5)-\sqrt{4 \pi ^2 (t+5)^2-8 \pi (t+5)+1}+2\right)\right)}{2 \pi } - \frac{15 \left(2 (5 \pi -1) \sqrt{1-40 \pi +100 \pi ^2}-3 \left(\log \left(\sqrt{1-40 \pi +100 \pi ^2}+10 \pi -2\right)+i \pi \right)\right)}{2 \pi }

Dit moeten we oplossen naar t en vervolgens deze functie van s substitueren in de vergelijking van de spiraal om de formule een formule te bekomen waar je voor een bepaalde lengte van de spiraal de overeenkomende coordinaat bekomt. Probleem is dat dit oplossen naar t numerieke methodes vereist. Niet eenvoudig dus.

Re: coördinaten spiraal berkekenen

door clankill3r » vr 16 mar 2012, 00:05

hoe word t dan bepaald?

Re: coördinaten spiraal berkekenen

door wnvl » vr 16 mar 2012, 00:00

clankill3r schreef:is t tijd?
Nee, t is een dimensieloze parameter.

clankill3r schreef: Verder heb ik geen wiskunde op school maar wel programmeren. Mijn wiskunde is voornamelijk optellen en aftrekken. Zodra sin en cos er bij komt kijken ga ik al zweten, al word dat steeds minder gelukkig :).
Dan wordt het moeilijk

Re: coördinaten spiraal berkekenen

door clankill3r » do 15 mar 2012, 23:39

is t tijd?

Zoja in seconden of millis?

Verder heb ik geen wiskunde op school maar wel programmeren. Mijn wiskunde is voornamelijk optellen en aftrekken. Zodra sin en cos er bij komt kijken ga ik al zweten, al word dat steeds minder gelukkig :).

x = (-150-30t)cos(2pi t)

ik neem even 3 sec.

1. (-150-30t)
vermenigvuldigen komt eerst dus (30*3)
-150-90 = -240

2. -240*cos(2pi t)
2pi t = 18.8
cos(18.8) = 0.9987723

-240 * 0.9987723 = -239.705

dus het antwoord op x = (-150-30t)cos(2pi t) is -239.705,
dit gaat al helemaal mis volgens mij...

Re: coördinaten spiraal berkekenen

door wnvl » do 15 mar 2012, 22:10

x=(-150-30t)\cos(2\pi t)
dx=???



y=(-150-30t)sin(2\pi t)
dy=???



ds^2=???

Re: coördinaten spiraal berkekenen

door wnvl » do 15 mar 2012, 22:07

Als we een infinitesimaal klein stukje van de curve nemen dan geldt voor de afstand ds

ds^2=dx^2+dy^2

Aangezien x en y gekend zijn in funktie van parameter t kan je dx en dy berekenen door af te leiden naar t.

Kan je dat?

Re: coördinaten spiraal berkekenen

door wnvl » do 15 mar 2012, 22:03

clankill3r schreef:
Heb je zelf enig idee hoe je de afstand van een stuk van deze spiraal kan berekenen?
nee.

Ik heb het bovenstaande geprobeerd met t voor de 10mm die ik wil.
Ik weet niks van dit soort wiskunde, ik ging er van uit dat het zo geïnterpreteerd moest worden:

x = (-150 - 30*10)*cos(PI*2*10);
y = (-150-30*10)*sin(PI*2*10);

maar dit geeft:
-450.0
-0.0012159585
Nee t correspondeert niet met de afstand.

Re: coördinaten spiraal berkekenen

door clankill3r » do 15 mar 2012, 21:56

Heb je zelf enig idee hoe je de afstand van een stuk van deze spiraal kan berekenen?
nee.

Ik heb het bovenstaande geprobeerd met t voor de 10mm die ik wil.
Ik weet niks van dit soort wiskunde, ik ging er van uit dat het zo geïnterpreteerd moest worden:

x = (-150 - 30*10)*cos(PI*2*10);
y = (-150-30*10)*sin(PI*2*10);

maar dit geeft:
-450.0
-0.0012159585

Re: coördinaten spiraal berkekenen

door wnvl » do 15 mar 2012, 21:47

Ik had je vraag niet goed gelezen.
Ik had over die
afstand tot volgend punt 10mm
gelezen


Om het goed te maken help ik je wat verder.

De (x,y) coordinaten van de spiraal kunnen worden voorgesteld door

\left((-150-30t)\cos(2\pi t) , (-150-30t)sin(2\pi t)\right)

met t een parameter.

Heb je zelf enig idee hoe je de afstand van een stuk van deze spiraal kan berekenen?

Re: coördinaten spiraal berkekenen

door clankill3r » do 15 mar 2012, 21:33

Stel een vergelijking op voor de x en de y coordinaten van de spiraal.
wat bedoel je?

is t de afstand to het volgend punt?

Re: coördinaten spiraal berkekenen

door wnvl » do 15 mar 2012, 21:15

Stel een vergelijking op voor de x en de y coordinaten van de spiraal.

Typ: Gebruik onderstaande elementen voor de vergelijking

150-30t
-\cos (2\pi t)
\sin (2\pi t)