[Alg] Wiskundige berekening / veranderen van grootte*

Pagina: 1
Acties:

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Hoi,
Ik hoop dat dit mag hiero :)

Ik ben met een soort van spelletje bezig. Nu heb ik een object (een ventje dat je bestuurd met de muis) dat van grootte moet veranderen naarmate hij hoger in het scherm komt.
Maar ik heb geen idee hoe ik het op mijn manier moet berekenen.
Lineair lukt me natuurlijk wel, maar hij moet exponentieel groeien.

Op Ypositie 000 moet hij 050 pixels hoog zijn.
Op Ypositie 200 moet hij 225 pixels hoog zijn.
Op Ypositie 600 moet hij 350 pixels hoog zijn.

Ik heb geen idee hoe ik dat moet aanpakken.
Is hier een wiskundige die me kan helpen hiermee?
Alvast enorm bedankt.

edit.
Wow, de topic title is al na 10 seconden na plaatsing aangepast door een mod.
Klasse werk ;)

[ Voor 8% gewijzigd door Guillome op 15-01-2003 14:37 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Verwijderd

Er zal dus een functie moeten komen die bij die gegeven y-waarden de gegeven x-waarden produceert of andersom. En als ik het goed heb zijn de x-waarden negatief exponentioneel (toch?). Misschien kan iemand dit beamen?

Udate: heb even een grafiekje getekend en ik denk dus niet negatief exponentioneel :) Lijkt me een functie met een kwadraat erin :Y)

[ Voor 24% gewijzigd door Verwijderd op 15-01-2003 14:49 ]


  • Guillome
  • Registratie: Januari 2001
  • Niet online
Nee de X waarde wordt berekend a.d.h.v. de Y waarde.
Zo: obj.width = ob.height * verhouding.
Verhouding wordt 1 malig aangemaakt aan het begin op deze manier:
verhouding = obj.height / obj.width;

Er moet een functie (eigenlijk alleen een formule) komen waarbij je de top-positie (y) van het obj. aangeeft, en dat er dan de nieuwe hoogte terug gegeven wordt.
Bijv. als het obj. op Y = 0 staat, dus bovenaan, dan moet hij 50 terug geven (moet 50 pixels hoog worden).
En op 200 is dat 255 etc (Zie lijstje bovenaan)

[ Voor 7% gewijzigd door Guillome op 15-01-2003 14:49 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • bierdop
  • Registratie: Juli 2000
  • Laatst online: 10-08 18:13
Wat je kunt doen is deze waarden in excel invoeren en een trendline gebruiken. Van deze trendline kun je vervolgens de functie toevoegen. Als je gebruik wilt maken van een exponentiele funtie, dan mogen er echter geen 0 of negatieve waarden invoor komen!

Voorbeeldje: Als je de volgende waarden zou nemen
x y
50 25
225 200
350 600

Dan krijg je een trendline met de volgende formule:
y = 6,0094 e 1,589x

Ik weet alleen niet waarin je het precies wilt verwerken, maarreh, misschien heb je er wat aan!

Als je trouwens geen exponentiele functie zou gebruiken kun je wel de exacte waarden. De formule hiervan is:

y = -0,0009x2 + 1,0625x + 50 (zie .oisyn O-) )

[ Voor 19% gewijzigd door bierdop op 15-01-2003 15:17 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Hmmm je kunt hier natuurlijk een 2e graads functie uit halen, ogenblik :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Guillome
  • Registratie: Januari 2001
  • Niet online
`t Is geen X-Y jongens.
Het is alleen de top-positie (Y) die omgezet moet worden naar een hoogte (height).

edit.
Lol @ oisyn :)
Maar wat is een "trendline" dan?

[ Voor 28% gewijzigd door Guillome op 15-01-2003 14:51 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Verwijderd

XLerator schreef op 15 January 2003 @ 14:50:
`t Is geen X-Y jongens.
Het is alleen de top-positie (Y) die omgezet moet worden naar een hoogte (height).
Ja, in feite komt het wel neer op X-Y, een formule met 2 variabelen, toch?
Je wilt een formule die voor een bepaalde positie (Y) een hoogte (X) oplevert, toch?

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Ja ok dat is ook zo. Mijn fout :)

Maarre Beerdop, is dat dan:
y = (100 * x * 2) - (100 * x)?

Dus voor hoogte 600:

y = (100 * 600 * 2) - (100 * 600)?
Daar komt 60.000 uit.
Of doe ik dat gigantisch fout?

[ Voor 9% gewijzigd door Guillome op 15-01-2003 14:57 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • bierdop
  • Registratie: Juli 2000
  • Laatst online: 10-08 18:13
t Is geen X-Y jongens.
Het is alleen de top-positie (Y) die omgezet moet worden naar een hoogte (height).


Wat maakt toch inweze niet uit. Tis maar net welke naam je welke variabele geeft! M.b.v. een trendlijn kun je een gemiddelde richting aangeven.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

x is in dit geval gewoon een (onbekende) variabele, niet perse de 'x'-positie in het coordinaten-stelsel op je beeldscherm, maar in het "coordinaten-stelsel" van je functie. Je kan 'm net zo goed 'a' of 'b' noemen.

Normaal gesproken schrijf je een functie namelijk f(x) = formule met x. In dit geval betekent f(x) de hoogte van het unit, en x de y positie op je beeldscherm. Je zou 't dus voor 't gemak ook h(y) = formule met y kunnen noemen, waar h(y) de hoogte van het unit is, en y de y-positie op je beeldscherm. Is misschien wat beter leesbaar. :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Guillome
  • Registratie: Januari 2001
  • Niet online
Jaajaa ik snap het al ;) Sorry mijn fout :) Wiskunde is niet mijn sterkste kant ;)
Maar nu de formule nog, lukt het al wat .oisyn?

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • bierdop
  • Registratie: Juli 2000
  • Laatst online: 10-08 18:13
Mmmh, die formule klopt idd niet. Wel raar, da's wel hetgene wat excel aangeeft :(

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Hoe doe je dat dan in Excel? De help kan die trendline niet vinden

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

.oisyn schreef op 15 januari 2003 @ 14:49:
Hmmm je kunt hier natuurlijk een 2e graads functie uit halen, ogenblik :)


ik kom op -0.0009375*x2 + 1.0625*x + 50 :)

oh, x is hier natuurlijk de Y-waarde ;)

[ Voor 10% gewijzigd door .oisyn op 15-01-2003 15:33 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Misschien kan er even iemand op de thee gaan bij een wiskunde docent ofzo :+
"Bla bla bla, ow nu ik u toch spreek... :) "

[ Voor 6% gewijzigd door Verwijderd op 15-01-2003 15:06 ]


  • Guillome
  • Registratie: Januari 2001
  • Niet online
hahahaha LOL @ kikkei01 :D
Ik ga ff dat van .oisyn uitproberen :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • bierdop
  • Registratie: Juli 2000
  • Laatst online: 10-08 18:13
Dit klopt beter: y = 0,0069x2 - 0,7429x + 20 Echter, bij benadering. Als je namelijk voor x=350 invuld, komt er 605,iets uit!

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Oei Beerdop het moet andersom
Het rijtje van 0, 200 en 600 zijn bekende gegevens.
Die 50, 225 en 350 moeten berekend worden.

[ Voor 63% gewijzigd door Guillome op 15-01-2003 15:09 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Die van mij is correct

grafiekje erbij :)
Afbeeldingslocatie: http://www.xs4all.nl/~oisyn/fotos/grafiek.png

f(x) = -0.0009375*x2 + 1.0625*x + 50

[ Voor 23% gewijzigd door .oisyn op 15-01-2003 15:33 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Guillome
  • Registratie: Januari 2001
  • Niet online
Huh .oisyn. Cool 8-)
Ik ga ff testen.
Is dat die -0.009375*x2 + 1.0625*x + 50 ??
Is dat wel op deze manier:
"Het rijtje van 0, 200 en 600 zijn bekende gegevens.
Die 50, 225 en 350 moeten berekend worden." ???

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • bierdop
  • Registratie: Juli 2000
  • Laatst online: 10-08 18:13
Okay, ik snap!

Dan zou het dit moeten zijn (kun je het nog volgen??) y = -0,0009x2 + 1,0625x + 50 .oisyn heeft wat dat betrefd gelijk. Hij buigt echter bij 600 meer af dan zou moeten. Boven y=600 komen er denk ik wat andere waarden uit dan gewenst.

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Hmm naja het is toch voor 800 bij 600 maar das wel een raar verschijnsel niet?
Maar hoe moeten de haakjes staan? Want als ik dit doe komt 600 zowizo al niet uit:
(-0,009375 * 6002) + (1.0625*600+50)
Daar komt -2723,9375 uit.

[ Voor 3% gewijzigd door Guillome op 15-01-2003 15:18 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Verwijderd

XLerator schreef op 15 January 2003 @ 15:18:
Hmm naja het is toch voor 800 bij 600 maar das wel een raar verschijnsel niet?
Maar hoe moeten de haakjes staan? Want als ik dit doe komt 600 zowizo al niet uit:
(-0,009375 * 6002) + (1.0625*600+50)
Daar komt -2723,9375 uit.
Het is een logisch verschijnsel gezien het feit dat de groei van "x" afneemt terwijl de "y" groter wordt. Eerste stap is nl 175 vervolgens nog maar 125 en dat blijft afnemen en dus zal de "curve" een dalend verloop weergeven.

edit:
Er zal naar verloop van tijd/Y geen groei meer zijn van X.

[ Voor 9% gewijzigd door Verwijderd op 15-01-2003 15:22 ]


  • Guillome
  • Registratie: Januari 2001
  • Niet online
Oooh ja dat is ook zo.
Een parabool achtig iets? (heb toch iéts onthouden ;))

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Uitleg van de berekening dan ook maar gelijk even :)

Je wilt een 2e graads functie in de vorm van a*x2 + b*x + c
Voor deze x-waarden moeten de volgende y-waarden eruit komen:
0 -> 50
200 -> 225
600 -> 350


Dus:
a*02 + b*0 + c = 50
a*2002 + b*200 + c = 225
a*6002 + b*600 + c = 350


Dit is te schrijven als een matrix-vermenigvuldiging. Je hebt matrix A waarin de coefficienten a, b en c staan (die je wilt berekenen dus). In matrix B staan van de 3 x-waarden de 0-de macht, de 1ste macht en de 2de macht, en in matrix C staan de uitkomsten:

code:
1
2
3
4
5
6
7
A = ( c   b   a )

    (   1    1     1   )
B = (   0  200   600   )
    (   0  200^2 600^2 )

C = ( 50  225  350 )


je weet dat A * B = C
A is hier echter onbekend, dus die moet worden uitgerekend.
Als A * B = C, dan: A = C / B = C * (1 / B )
Je moet dus C vermenigvuldigen met de inverse van B

Dit geeft als resultaat: A = ( 50 1.0625 -0.0009375 )
En dat zijn de coefficienten van je 2e graads functie :)

.edit: kutsmilies

[ Voor 4% gewijzigd door .oisyn op 16-01-2003 03:28 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • bierdop
  • Registratie: Juli 2000
  • Laatst online: 10-08 18:13
Volgens mij moet het (-0,0009375 * 600^2) + (1.0625 * 600 + 50) i.p.v. (-0,009375 * 600^2) + (1.0625 * 600 + 50) !

  • AaroN
  • Registratie: Februari 2001
  • Laatst online: 16-08-2023

AaroN

JayGTeam (213177)

wellicht is het handig om eens te kijken naar logaritmische functies? Die zijn tenminste monotoon stijgend (toch?). Zoiets heb je nodig denk ik..

JayGTeam (213177)


  • Guillome
  • Registratie: Januari 2001
  • Niet online
Wow .oisyn. Cool man, jij weet er wel heel veel van :o

[ Voor 59% gewijzigd door Guillome op 15-01-2003 15:32 ]

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

beerdop schreef op 15 January 2003 @ 15:27:
Volgens mij moet het (-0,0009375 * 600^2) + (1.0625 * 600 + 50) i.p.v. (-0,009375 * 600^2) + (1.0625 * 600 + 50) !


klopt idd, ik heb de eerste keer een 0 te weinig getiept, en de 2e keer was een koppiepeest van de eerste :P
de 3e keer (bij de uitleg) deed ik het wel goed

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Guillome
  • Registratie: Januari 2001
  • Niet online
idd, dan klopt ie.
Jemig hoe kom je er op (jajaa ik weet dat je het uitgelegd hebt, maar het blijft knap)
Bedankt jongens, ik kom nu vast een stuk verder. Cool

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 19-08 23:13
Ik weet niet of het uitmaakt voor je specifieke situatie, maar hij zal op een gegeven moment wel kleiner worden (zo rond de 567 als ik het goed heb)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

XLerator:
idd, dan klopt ie.
Jemig hoe kom je er op (jajaa ik weet dat je het uitgelegd hebt, maar het blijft knap)
Bedankt jongens, ik kom nu vast een stuk verder. Cool

hehehe, opletten bij wiskunde en het onthouden ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

drm schreef op 15 januari 2003 @ 16:45:
hehehe, opletten bij wiskunde en het onthouden ;)


dat onthouden hoeft vaak niet eens, als je er een beetje goed in bent is het voldoende om te weten dat het kan en hoe het ongeveer kan... hoe het dan daadwerkelijk moet is ter plekke wel uit te vinden (heb ik net ook gedaan :Y))

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

te weten (..) hoe het ongeveer kan
idd, dat bedoel ik :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
.oisyn schreef op 15 January 2003 @ 15:25:
je weet dat A * B = C
A is hier echter onbekend, dus die moet worden uitgerekend.
Als A * B = C, dan: A = C / B = A * (1 / B )
Je moet dus A vermenigvuldigen met de inverse van B
moeten de vetgedrukte A's geen C's zijn?

Pas de replâtrage, la structure est pourrie.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Apollo_Futurae schreef op 16 januari 2003 @ 00:56:
[...]
moeten de vetgedrukte A's geen C's zijn?


idd :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
en als je, zoals je in de topic start zegt, een exponentiele functie wil hebben:

f(x) = b * eax + c
met
a ~= -.003649258
b ~= -337.8251244
c ~= 387.8251244

exacte waarden zijn op verzoek ook beschikbaar (als deze waarden niet precies genoeg zijn)

Pas de replâtrage, la structure est pourrie.

Pagina: 1