lære om lineær kinematik

, lære om lineær kinematik,,,,, andel,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, ser tegnefilm i form af vektorer, er logisk, men forståelse vektor matematik er en smerte.i denne forelæsning, håber jeg, at lette smerter og tilvejebringe en løsning på problemer ved hjælp af en sædvane skriftlige vector2d animation klasse.vi vil se på nogle grundlæggende principper for lineær kinematik i eulerian tilgang: fordrivelse, hastighed og acceleration.så vil vi bygge en enkelt ansøgning til det endelige resultat.,,, se, lad os se på det endelige resultat, vi arbejder hen imod.klik på flash - panel under og kontrollere arrowhead ved presning af de fire retningsbestemte nøgler.,, trin 1: vektorstørrelse, vektor mængder har to komponenter: størrelsesorden og retning.,,, trin 2: ændring i vektorstørrelse, en ændring i vektor mængder henviser til en af disse tilfælde:,, ændring i retning ændring i størrelsesorden, ændringer i både størrelsesorden og retning, trin 3: forskydning, som er en vektorstørrelse, fordrivelse, hastighed og acceleration er vektor mængder.disse definitioner er som følger:,, forskydning - vektor for den korteste vej peger mod oprindelse, bestemmelsessted.jeg definere oprindelse som litra 0, 0) og bestemmelsessted som partikel placering i forhold til dette punkt.det henviser til de kartesiansk koordinatsystem, som gennemføres af flash. hastigheden - hastigheden er ændringen af forskydning i tid., acceleration - acceleration er hastighedsændring over tid.,, animation nedenfor viser forskydning, som vi skal gennemføre i flash senere.,, trin 4: hastighed som en vektor mængde, hastighed er illustreret ved animation nedenfor.note hastighed er konstant, hvilket betyder acceleration er fraværende i dette scenario.hvis hastigheden er nul, forskydning vil forblive konstant.,, løntrin 5: acceleration som en vektorstørrelse, acceleration er illustreret ved animation nedenfor.note: kinematik indebærer konstant acceleration.hvis acceleration ændringer over tid, falder det ind under emnet, dynamik.dynamik er undersøgelsen af kræfter, der på grund af acceleration, varierer over tid.en sådan kraft er alvor, og jeg har skrevet en post på gennemførelse af informationstiltag.,, trin 6: begynde at bygge et projektil, nu hvor du har fået et kort forståelse af lineære kinematik mængder og i stand til at knyttet dem til vektorer, kan vi begynde at bygge vores projektil - klasse.vi vil gerne have et projektil kan fange alle disse mængder: fordrivelse, hastighed og acceleration, så den kan manipuleres på hvert billede. nedenfor er de data, der registreres i vores projektil klasse: private var fortrænge: vector2d; private var velo: vector2d; private var acc: vector2d;,, skridt 7: sæt projektil, ved indledningen af denne projektil klasse, vi skal anmodningen nævnte variabler og udarbejde sine grafisk repræsentation. offentlige funktion projectile() (//henlede grafik. draw(); //lokalitet alle vektor mængder fortrænge = nye vector2d (. x. y); velo = nye vector2d (0, 0); acc = nye vector2d (0, 0)} beskyttede funktion draw(): ugyldig (//ved arrowhead var højde:= 30 var bredde: antal = 60 og grafik. beginfill (0x0000ff); grafik. til (0, 0); grafik. og gratis linjetil (bredde /- 3, højde /- 2) og grafik. og gratis linjetil (bredde /2, 0); grafik. og gratis linjetil (bredde /højde /2 - 3); grafik. og gratis linjetil (0, 0); grafik. endfill();}, trin 8: accessors vector mængder, er følgende accessors af vores private variabler - fortrænger, velo, acc, - - i et projektil klasse. offentlige funktion setdisp (mag: nummer, - - nummer): ugyldig (fortrænger. omdefinere (mag, vinkel)} offentlig funktion getdisp(): vector2d {igen fortrænger;} offentlig funktion setvelo (mag: antal, vinkel: antal) ugyldig (velo. omdefinere (mag, vinkel)} offentlig funktion getvelo(): vector2d {tilbage velo;} offentlig funktion setacc (mag:.mber vinkel: antal) ugyldig (acc.redefine (mag, vinkel)} offentlig funktion getacc(): vector2d (acc) tilbage, trin 9: updaters vector mængder efter forfriskende hvert billede, har vi brug for at ajourføre hastighed (ved hjælp af acceleration) og ajourføre forskydning (ved hjælp af nævnte hastighed).dette kan opnås ved at anvende følgende funktioner.for en grundig forklaring på vector tilføjelse, kan besøge dette store post fra daniel sidhon. offentlige funktion applyvelo(): ugyldig (this.displace =. fortrænger. der tilsættes (velo)} offentlig funktion applyacc(): ugyldig (this.velo =. velo. der tilsættes (acc)} //ajourføring sprite holdning ved flytning.offentlig funktion animate(): ugyldig (. x =. fortrænger. x. y =. fortrænger. y.}, gå 10: updater for sprite er orientering, bliver vi også nødt til at ajourføre orientering af sprite.dette kan opnås gennem en rotationsordning, ejendom af sprite., offentlig funktion orient(): ugyldig (this.rotation = math2. 13 (velo. getangle())}, jeg har også gennemført, math2, statisk klasse, som jeg har skrevet en funktion til at omdanne sig frem og tilbage fra den vinkel er enheder af grader og radianer. offentlige statisk funktion radianof (deg: antal): antal (tilbagevenden grader /180 * math.pi;} offentlige statisk funktion markeder (rad: antal): antal (tilbagevenden rad /matematik. pi * 180), trin 11: de vigtigste klasse, nu hvor vi har fastlagt vores projektil - og math2 klasse, kan vi begynde at kode vores vigtigste klasse.vi har brug for en vector2d klasse som, selv om en grundig forklaring er ikke medtaget på grund af førnævnte artikel om vektorer af daniel sidhon.jeg går ud fra, der forstår vector2d klasse, efter at have læst den.men hvis der er behov for præciseringer, få mig med dine spørgsmål. for det første, vi har brug for at vide, private variabler i denne klasse, private var b1: projektil; //keypress flag private var: boolean = falske private var: boolean = falske private var tilbage: boolean = falske. private var ret: boolean = falske, trin 12: initialiserer vigtigste efter initialization af vigtigste funktion, lokalitet, som vil blive iværksat.denne funktion vil skabe en ny projektil og den oprindelige hastighed.så, lyttere til begivenheder vil blive tildelt, privat funktion lokalitet (e: begivenhed = null): ugyldig (removeeventlistener (event.added_to_stage, lokalitet); //indgangssted b1 = nye projectile(); stadie. addchild (b1); //om oprindelige hastighed b1. setvelo (5, math2. radianof (30); //om tilfælde lyttere b1. addeventlistener (event.enter_frame, proj_enterframe) fase. addeventlistener (keyboardevent.key_down, handle_keydown) fase. addeventlistener (keyboardevent.key_up, handle_keyup)}, trin 13: tastatur begivenhed lyttere, jeg har defineret brugerkontrol som keypresses op, gik ned og efterlod pil nøgler.ved presning og frigive de nøgler, flag variabler af vigtigste (punkt 11), vil blive gjort rigtigt og forkert.baseret på disse flag, vektor mængder vil blive manipuleret på hvert billede.note, som jeg har delt kontrol i vandrette og lodrette akse manipulatorer, privat funktion handle_keydown e: keyboardevent): ugyldig (hvis (e.keycode = = tastatur.) = sandt; andre, hvis (e.keycode = = tastatur.) = sandt. hvis (e.keycode = = tastatur. venstre) venstre = rigtigt, og andre, hvis (e.keycode = = tastatur.) = sandt.} privat funktion handle_keyup e: keyboardevent): ugyldig (hvis (e.keycode = = tastatur.) = falske; andre, hvis (e.keycode = = tastatur.) = falske; hvis (e.keycode = = tastatur. til venstre) venstre = falske; andre, hvis (e.keycode = = tastatur.) = falske), punkt 14: enterframe begivenhed lyttere, her på hvert billede af følgende kode vil blive henrettet.det er lang tid, men du skal ikke bekymre dig, bare læs den. privat funktion proj_enterframe e: begivenhed): ugyldig (//definere acceleration var accmag: antal = 0, 1; hvis (op) (b1. setacc (accmag, math2. radianof (90) b1. applyacc();} andre, hvis (ned) (b1. setacc (accmag, math2. radianof (90) b1. applyacc();} hvis (venstre) (b1. setacc (accmag, math2. radianof (180), b1. applyacc();} andre, hvis (til højre) (b1. setacc (accmag, math2. radianof (0)), b1. applyacc();} //falde som noget er presset til at simulere friktion.hvis (+ ned + venstre + ret = = 0) (var - currentvelomag: antal = b1. getvelo(). getmagnitude(), var currentveloang: antal = b1. getvelo(). getangle(); hvis (currentvelomag > 1) (b1. setacc (accmag * - 1, currentveloang), b1. applyacc();}} b1. applyvelo(); //begrænsning af sprite til grænser for stadium b1. getdisp(). x = math2. implementbound (0, stage.stagewidth, b1. getdisp(). x), b1. getdisp(). y = math2. implementbound (0, stage.stageheight, b1. getdisp(). y), b1. animate(); b1. orient();} trin 15: ajourføring af forslag, ajourføre forslaget bør ske i følgende rækkefølge:, fastlægge nye acceleration i henhold til bruger keypress. ved hjælp af acceleration, ajourføre strømhastighed. ved hjælp af strømhastighed, ajourføre de nuværende displacement, forbedre forskydning til at holde objekt i grænser.,, jeg har fremhævet de koder for nemt at identificere disse skridt, privat funktion proj_enterframe e: begivenhed): ugyldig (//definere acceleration var accmag: antal = 0, 1; hvis (op) (b1. setacc (accmag, math2. radianof (- 90) b1. applyacc();} andre, hvis (ned) (b1. setacc (accmag, math2. radianof (90) b1. applyacc();} hvis (venstre) (b1. setacc (accmag, math2. radianof (180), b1. applyacc();} andre, hvis (til højre) (b1. setacc (accmag, math2. radianof (0), b1. applyacc();} //falde som intet er presset til at simulere friktion.hvis (+ ned + venstre + ret = = 0) (var - currentvelomag: antal = b1. getvelo(). getmagnitude(), var currentveloang: antal = b1. getvelo(). getangle(); hvis (currentvelomag > 1) (b1. setacc (accmag * - 1, currentveloang), b1. applyacc();}} b1. applyvelo(); //begrænsning af sprite til grænser for stadium b1. getdisp(). x = math2. implementbound (0, stage.stagewidth, b1. getdisp(). x), b1. getdisp(). y = math2. implementbound (0, stage.stageheight, b1. getdisp(). y), b1. animate(); b1. orient();} trin 16: farten forslag, kan de se, at der er andre funktioner med mellem disse fremhævet koder.hvad er de?et er at anvende en anden vektor for at bremse vores projektil, som brugeren ikke presse på nogen nøgler.det er anvendt, inden vi tilføje, hastighed og vores bevægelse. //falde som noget er presset til at simulere friktion.hvis (+ ned + venstre + ret = = 0) (var - currentvelomag: antal = b1. getvelo(). getmagnitude(), var currentveloang: antal = b1. getvelo(). getangle(); hvis (currentvelomag > 1) (b1. setacc (accmag * - 1, currentveloang), b1. applyacc(),), gå 17: bliv indenfor den næste er at begrænse vores projektil, altid at holde sig på scenen, ellers vil flyve ud af skærmen.igen, implementbound, er en opgave, jeg har medtaget i math2 statisk klasse.i betragtning af en øvre grænse, nedre grænse og en vilkårlig værdi, implementbound, vil vende tilbage til en værdi, der ligger inden for grænserne. efter anvendelse af dette krav på vores forskydning, og kun efter at), vi ajourfører den sprite holdning med denne deplacement værdi. //begrænsning af sprite til grænser for stadium b1. getdisp(). x = math2. implementbound (0, stage.stagewidth, b1. getdisp(). x), b1. getdisp(). y = math2. implementbound (0, stage.stageheight, b1. getdisp(). y), gå 18: orient sprite, før vi forlader denne ånd, som det er, at vi skal gøre det, så det altid punkter i den holdning, der er på vej efter funktion, orient,.,, skridt 19: klar og gå!nu er alting klar.som du starter det her ved at trykke på ctrl + ind, vil du se en pil, der gradvist sænker farten, da den går diagonalt ned på skærmen.tryk på fire retningsbestemte nøgler for at flytte pilen.bekymre dig ikke om at miste din pil; det bliver i din udsigt.,, konkludere, at denne artikel burde få dig bekendt med ved hjælp af vektorer animere forslag.når du har forstået, kinematik, fortsætter at læse op på min post på dynamik.lad mig vide, hvordan det går.- tak.

Image of vector quantity.
Image of vector quantity.



Previous:
Next Page: