Avatar billede bas Forsker
12. juni 2001 - 17:05 Der er 3 kommentarer og
1 løsning

Parabel

Hej eksperter

Vi er en gruppe, som er ved at lave et projekt i Director / Lingo.

Vi vil gerne have en figur til at følge en buet linie/parabel.

Vi har fået at vide, at man kan kode sig frem til det i Lingo, men ved ikke helt hvordan.

Kan nogen hjælpe ?

På forhånd tak.

/Martin
Avatar billede lingoman Nybegynder
12. juni 2001 - 19:21 #1
Hej Martin!

Jeg har netop svaret på et tilsvarende spørgsmål \"Parabel i Lingo\". Er sorthvidkat i din gruppe?

I kan bruge det samme script behavior med en lille modifikation. Brug jeres figur som sprite member i stedet for de 1 x 1 pixel member som jeg brugte til at tegne parabelen.

Desuden skal trails altid være off hvis i ikke vil have en grim streg skal følge figuren.

Den bevæger sig nok for hurtigt til jeres behov men det er nemt at sætte farten ned.

Skal det efterligne tyngdekraften er det også en god ide at standse, gentage bevægelsen som en bold der hopper... Men i må uddybe jeres ide lidt mere hvis jeg skal kunne gøre den \"natur tro\"

her er scriptene:

--draw parabola behavior---------------

                            property mySprite, screenWidth, screenHeight,a

                            global figur, xOffset, yOffset

                            on beginSprite me
                              mySprite = me.spriteNum
                              figur = me
                              sprite(mySprite).trails = 0
                             
                              a = 0.01 -- adjust to your own preference
                             
                              --find screen limits

                              myMonitor = the DesktoprectList[1]
                              screenWidth = the right of myMonitor
                              screenHeight = the bottom of myMonitor
                            end

                            on moveParabola me
                              if voidP(xOffset) or voidP(yOffset) then exit
                              --get ready
                              set x = 0
                             
                             
                              repeat with x = 0 to screenWidth
                                y = a* power((x - xOffset),2) + yOffset
                                --limit check
                                if (y < 0) or (y > screenHeight) then next repeat
                               
                                sprite(mySprite).Loc = point(x,y)
                                updateStage
                              end repeat
                             
                             
                              --finished drawing reset for next drawing

                              xOffset = VOID
                              yOffset = VOID
                              sprite(mySprite).trails = 0

                            end


                            --end sprite behavior-----------

                            anvend jeres figur som sprite member fks 1x 1 pixels

                            Du skal også bruge det næste movieScript for at definere hvor parabelens spids skal være:

                            --movieScript-----------------

                            global xOffset, yOffset, figur

                            on mouseUp
                              --Der hvor du klikker bliver parabelens spids punkt
                              xOffset = the mouseH
                              yOffset = the mouseV
                              if objectP(figur) then
                                moveParabola figur
                              end if
                             
                            end

                            --end MovieScript

                            til sidst skal du have en FrameScript

                            on exitFrame
                              go to the frame
                            end

Håber det hjælper!

mvh Geo

Avatar billede bas Forsker
12. juni 2001 - 19:34 #2
Til Lingoman

Mange tak, vi prøver det her først.
Ja, sorthvidkat er i min gruppe.

Hvad slår man op under, når man skal finde
den kode du har givet os - trace, parable, path,
tween eller andet ?

/Martin
Avatar billede lingoman Nybegynder
12. juni 2001 - 21:15 #3
Du slår op under geo@lingoman.dk !

Spøg til side, Koden er opbygget omkring trails, loc, point, the MouseH, the mouseV. som man finder i Lingo Dictionary.

Min løsning er baseret på følgende tanker:

En parabel kan udtrykkes matematisk som

y = A * x^2

hvor A er en konstant du frit kan vælge og ændre på y aksens skalering.

Dette giver en parabel med \"spidsen\" ved (x,y) = (0,0).

Man kan flytte hele parabelen (eller enhver anden kurve) med (xOffset, yOffset) blot ved at erstatte

x -> x - xOffset
y -> y - yOffset

Derfor bestemmer point(xOffset, yOffset) hvor spidsen er i parabelens mere generalle formel

y - yOffset = A * (x - xOffset)^2

Men det er nok ikke hvad du ville høre.....
Hvis man slår op under trails i Lingo Dictionary står der blot et eller nogle få eksempler på dets anvendelses muligheder. Prøv at lege lidt med den og jeg er ganske sikker på at du vil hurtigt kunne komme i tanke om en snes vidt forskellelige nye muligheder. Ligeledes med de andre kommandoer.

Forestil dig så hvor mange forskellige muligheder der opstår når man begynder at kombinere flere lingo kommandoer! Jeg kan faktisk ikke komme i tanke om én eneste ting man ikke kan udføre i Lingo, kun nogle ting der er mere krævende end andre.

Når jeg har en konkret opgave som skal løses tænker jeg ikke i Lingo. Fks. med Jeres spørgsmål:

1. Hvad er en parabel?
2. Hvilke egenskaber har den?
3. Hvordan kan den representeres.

Når jeg så svarer på disse spørgsmål har jeg også fundet én måde at takle en større opgave i mindre dele. Jeg fortsætter blot den samme process indtil alle dele er i Lingo-kommando størrelse:

Svar 1. Kurve... en samling af punkter = en masse statiske sprites eller 1 sprite bevæger sig til flere punkter(animation)

Svar 2. Koordinat y = bla, bla,... apex = (xo,yo)...  matematiske Lingo operationer

Svar 3. Punkternes (x,y) kan representeres med point(locH, locV)

Så skal der blot sammensættes kommandoer!

mvh Geo

Avatar billede lingoman Nybegynder
12. juni 2001 - 21:44 #4
PS. du finder mange nyttige eksempler her
http://www.behaviors.com/

mvh Geo
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester