/ Forside / Karriere / Uddannelse / Højere uddannelser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Højere uddannelser
#NavnPoint
Nordsted1 1588
erling_l 1224
ans 1150
dova 895
gert_h 800
molokyle 661
berpox 610
creamygirl 610
3773 570
10  jomfruane 570
Forslag til løsning?
Fra : Klaus Petersen


Dato : 22-01-03 16:56

Hej NG.

Jeg skal bruge et sæt algoritmer til at bevæge et stykke grafik over skærmen
fra et sæt koordinater til et andet.

- Retningen på bevægelsen skal være liniær, og har et givent antal trin,
opløsning, "snapshots", frames, samples eller hvad i nu bruger til at
betegne det.

- Når bevægelsens distance mellem hvert trin er ens i alle trin, er det let
nok. Men det komplicerer sagen når bevægelsen skal indeholde en accelration,
en maks hastighed og en deaccelration.

Med andre ord, grafikken starter på koordinat x,y, accelrerer til en given
makshastighed, hvorefter den deaccelrerer igen og ender på koordinat _x, _y.

Hvordan kunne man løse dette?
Findes der f.eks. en matematisk kurve, som følger det mønster?

Og så håber jeg ellers at min forklaring er tilstrækkelig - ellers må i jo
lige spørge.

Klaus.



 
 
Jesper Sørensen (22-01-2003)
Kommentar
Fra : Jesper Sørensen


Dato : 22-01-03 17:16

En parabel har den ønskede egenskab.

mvh
JS
"Klaus Petersen" <ng@spectual.ra.bnaa.dk> wrote in message
news:b0metp$56h$1@sunsite.dk...
> Hej NG.
>
> Jeg skal bruge et sæt algoritmer til at bevæge et stykke grafik over
skærmen
> fra et sæt koordinater til et andet.
>
> - Retningen på bevægelsen skal være liniær, og har et givent antal trin,
> opløsning, "snapshots", frames, samples eller hvad i nu bruger til at
> betegne det.
>
> - Når bevægelsens distance mellem hvert trin er ens i alle trin, er det
let
> nok. Men det komplicerer sagen når bevægelsen skal indeholde en
accelration,
> en maks hastighed og en deaccelration.
>
> Med andre ord, grafikken starter på koordinat x,y, accelrerer til en given
> makshastighed, hvorefter den deaccelrerer igen og ender på koordinat _x,
_y.
>
> Hvordan kunne man løse dette?
> Findes der f.eks. en matematisk kurve, som følger det mønster?
>
> Og så håber jeg ellers at min forklaring er tilstrækkelig - ellers må i jo
> lige spørge.
>
> Klaus.
>
>



Lasse Reichstein Nie~ (22-01-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 22-01-03 18:22

"Klaus Petersen" <ng@spectual.ra.bnaa.dk> writes:

> Med andre ord, grafikken starter på koordinat x,y, accelrerer til en given
> makshastighed, hvorefter den deaccelrerer igen og ender på koordinat _x, _y.
>
> Hvordan kunne man løse dette?
> Findes der f.eks. en matematisk kurve, som følger det mønster?

Utvivlsomt. Du vil lade x og y koordinaterne have samme acceleration,
så det er nok med en funktion der giver et tal mellem 0 og 1, og som
skifter langsomst i enderne. Altså noget i stil med grafen:

punkt på kurve
^
1| xxx
| xxx
| xx
| xx
| x
| x
| x
| x
| x
| x
| x
| x
| x
| x
| xx
| xx
| xxx
|xxx
0+-----------------------------> t (tid)
0 1


Det ligner umiddelbart en 0.5-cos(t*PI)/2
(eller sin(t*PI/2)^2, det er det samme)

Hvis den funktion hedder f, så kan du finde koordinaterne som

var p = f(t)
var x = x_fra*(1-p) + x_til*p
var y = y_fra*(1-p) + y_til*p

hvor t går fra 0 til 1.

(eller, lige som den lineære, blot bruger man f(t) i stedet for t)

Hvis det ikke går accelererer hurtigt nok, så kan du bruge p=f(f(t)).

> Og så håber jeg ellers at min forklaring er tilstrækkelig - ellers må i jo
> lige spørge.

Det gav fint mening :)

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
'Faith without judgement merely degrades the spirit divine.'

Henning Makholm (22-01-2003)
Kommentar
Fra : Henning Makholm


Dato : 22-01-03 22:59

Scripsit Lasse Reichstein Nielsen <lrn@hotpop.com>

> så det er nok med en funktion der giver et tal mellem 0 og 1, og som
> skifter langsomst i enderne. Altså noget i stil med grafen:

[billede]

> Det ligner umiddelbart en 0.5-cos(t*PI)/2
> (eller sin(t*PI/2)^2, det er det samme)

Eller også kan man bruge 3t²-2t³ som også er pæn og symmetrisk, men nok
hurtigere at udregne.

> Hvis det ikke går accelererer hurtigt nok, så kan du bruge p=f(f(t)).

Det vil nok bare gøre bevægelsen mere ujævn. Jeg ville bare lade t
vokse hurtigere.

--
Henning Makholm "De kan rejse hid og did i verden nok så flot
Og er helt fortrolig med alverdens militær"

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste