login  Naam:   Wachtwoord: 
Registreer je!
 Forum

wiskundig probleem omtrent scalen (Opgelost)

Offline vinTage - 25/01/2012 00:20 (laatste wijziging 25/01/2012 10:37)
Avatar van vinTageNieuw lid Dikke edit, ik heb een (mss duidelijker) voorbeeld gemaakt voor javascript hieronder.
[/edit]


Hoewel mijn probleem in flash afspeelt, heeft dit niets te maken met mn eigenlijk probleem.

Ik heb een code-snippit gemaakt (flash) om een en ander te verduidelijken, maar een oplettende lezer zal het probleem (zonder code) wel snappen en misschien de oplossing geven 

  1. [SWF(width = "500", height = "250")] //afmetingen van de swf
  2.  
  3. //onderstaande regel is voor jullie onbelangrijk
  4. stage.align = StageAlign.TOP_LEFT;
  5.  
  6.  
  7. //Wel belangrijk...
  8.  
  9.  
  10. //rechthoek van 600 * 300, in de linkerbovenhoek uitgelijnt (te groot volgens de afmetingen van de swf)
  11. var rect:MovieClip = new MovieClip(); //onze rechthoek
  12.  
  13. rect.graphics.beginFill (0x000000); //de kleur van het rechthoekje (zwart)
  14. rect.graphics.drawRect (0, 0, 600, 300); // x: 0, y:0, en 600 * 300 px breed/lang
  15. addChild(rect)
  16.  
  17.  
  18. //een factor..
  19. var teGroot:Number = 1.25;
  20. //BELANGRIJK om te weten:
  21. //1 = orginele afmeting....1.25 is dus 25% groter en .75 is 25% kleiner
  22.  
  23.  
  24. //SCALE de rechthoek adhv de breedte van 'het scherm' PLUS factor teGroot (wordt dus full width + nog iets meer..)
  25. rect.width = (stage.stageWidth * teGroot); //rechthoek 'factor' groter maken als 'het scherm'
  26. rect.scaleY = rect.scaleX; //hoogte van rechthoek EVENREDIG schalen aan de geschaalde breete
  27.  
  28.  
  29.  
  30. /****************************PROBLEEM****************************
  31. Nu is de rechthoek dus 'factor' te groot..
  32. Hoe kom ik nu een nieuwe 'factor' te weten om het geheel TERUG te schalen naar de breedte van 'het scherm' ?
  33. */
  34.  
  35. trace(rect.width) //625
  36. trace(rect.height) //312.5
  37. trace(rect.scaleX) //1.0416666666666667
  38. trace(rect.scaleY) //logisch...zelfde als scaleX
  39.  
  40. //maar ik wil dus weten welke 'scaleX' ik nu nodig heb om het (adhv de breedte) nodig heb om het naar 100% width te scalen
  41.  
  42. /*
  43. rect.huidigeBreedte naar huidigeSchremBreedte
  44. */


Wat er dus eigenlijk moet gebeuren...:

ik laad een foto in (rect in het script)
de foto is te groot voor het scherm, dus scale ik hem naar de afmeting van het scherm, maar 'factor' groter, omdat ik de foto later wil animeren naar de breedte van het scherm.

Dus foto is bv 1500 px
Scale foto naar (schermWidth * factor)
en daarna scale foto naar schermwidth => wat is de factor/berekening om van 1.25 naar 1(*regel 21*) te gaan..?

lastige vraag 

8 antwoorden

Gesponsorde links
Offline UpLink - 25/01/2012 00:31 (laatste wijziging 25/01/2012 00:32)
Avatar van UpLink ... 1.25 : 5 x 4 = 1

of zoekt ge da ni? 

//EDIT:

(1.25 * 0.80) = 1
Offline vinTage - 25/01/2012 00:33 (laatste wijziging 25/01/2012 01:02)
Avatar van vinTage Nieuw lid nuja, als je die '5*4' dynamisch kan maken adhv een random grote (van scherm en/of image) wel 

Ik zoek dat dus niet echt 

kijk, ik laad een foto in.
Mijn scherm is bv 1000*500
De in te laden foto is 1650 * 800

ik wil de foto groter of kleiner scalen om hem volledig (PLUS factor) te tonen.
nadat de volledige foto een tijdje in beeld was, wil ik hem uitZoomen naar 100% beeldBreedte.

De foto scalen naar schermbreedte * factor is geen probleem, maar welke factor heb ik nodig NADAT ik de foto schaalde naar 1.25 om hem 'schermbreedte' te maken.

Maar ik weet de berekening niet voor (schermBreed * factor) => schermBreedte
Offline UpLink - 25/01/2012 01:30
Avatar van UpLink ... is het niet handiger om de dimensies van de foto in een variabele vast te houden, de foto te scalen naar gewenste grootte en dan die variabele terug op te roepen om te foto terug te scalen naar originele grootte ?

een foto die iemand upload heeft nooit dezelfde dimensies dan de foto waarmee jij het gaat testen. Is dus moeilijk om met telkens dezelfde factor te gaan werken. Schermbreedtes zijn ook nooit dezelfde. als jij een 21" hebt en ik een 19" dan kloppen die waardes ook niet meer...


Of denk ik al volledig verkeerd ?
Offline vinTage - 25/01/2012 02:09 (laatste wijziging 25/01/2012 02:22)
Avatar van vinTage Nieuw lid Nou kijk, ten eerste

ik upload een zooi foto's (maakt niet uit welke size, maar ze zijn altijd LOEI GROOT)

de foto's worden in flash ingeladen en geschaald naar schermbreedte * factor, zo maakt de shermreso niets uit, ze zijn -minimaal- fullWidth, ook al zou de foto 5*5 px zijn..

nadat de foto een tijdje in beeld was, moet deze 'krimpen' tot schermBreedte (en hier loop ik vast)


ter info, ik kan achter de afmetingen komen van schermSize en originele fotoSize (sterker, ik weet ze al ).

mss is mn vraagstelling nogal moeilijk, maar ism voorgaande posts is het volgende mss duidelijker:

1.25 [berekening] = schermWidth

schermWidth is bekend, maar wat is de factor van 1.25 naar schermWidth

de uitkomst moet iets zijn van 0.iets
bv .765



Dit komt in mijn probeersels het meest in de richting (maar is niet juist)
  1. var eindBreedte:Number = (huidigScale.scaleX * tegenOverGesteldeFactor);
  2. //waarbij tegenOverGesteldeFactor dus niet 1.25 is, maar .75

Offline UpLink - 25/01/2012 05:14
Avatar van UpLink ... Hoe langer ik erover nadenk, hoe minder ik het begrijp.

Wat ik uit alles dus begrijp zijn 2 dingen:

Ge wilt u ingeladen afbeelding eerst met 1.25 vergroten en dan naar de afmetingen van het scherm schalen.

zo ja, dan het volgende:

Mijn Hoofd schreef:
SWF:

w = 500
h = 250

Afbeelding inladen:

w = 600
h = 300

Afbeelding groter schalen:

w = 625
h = 312.5

Praktische berekening:

500 x 1.25 = 625
250 x 1.25 = 312.5

nu wilt ge die afbeelding naar de groote van het scherm (SWF)?

625 x 0.8 = 500
312.5 x 0.8 = 250

Uw factor in deze berekening is dan 0.8

MAAR...

dan klopt die berekening van 1.0416666666666667 niet meer...


Zo neen, het volgende:

Ge wilt u ingeladen afbeelding eerst met 1.25 vergroten en dan terug naar de afmetingen van de originele groote schalen.

Mijn Hoofd schreef:
SWF:

w = 500
h = 250

Afbeelding inladen:

w = 600
h = 300

Afbeelding groter schalen:

w = 625
h = 312.5

Praktische berekening:

600 : 0.96 = 625
300 : 0.96 = 312.5

nu wilt ge die afbeelding naar de groote van het scherm (SWF)?

625 x 0.96 = 600
312.5 x 0.96 = 300

Uw factor in deze berekening is dan 0.96

EN...

dan klopt die berekening van 1.0416666666666667 weer wel...

MAAR...

Dan is deze nog altijd te groot voor het scherm (SWF)


Ik weet dat het al laat is (5 uur gepasseerd) en het kan daar aan liggen dat ik dingen door elkaar gooi, maar ik begin er hoe langer hoe minder van te snappen...
Offline UpLink - 25/01/2012 05:14
Avatar van UpLink ... Hoe langer ik erover nadenk, hoe minder ik het begrijp.

Wat ik uit alles dus begrijp zijn 2 dingen:

Ge wilt u ingeladen afbeelding eerst met 1.25 vergroten en dan naar de afmetingen van het scherm schalen.

zo ja, dan het volgende:

Mijn Hoofd schreef:
SWF:

w = 500
h = 250

Afbeelding inladen:

w = 600
h = 300

Afbeelding groter schalen:

w = 625
h = 312.5

Praktische berekening:

500 x 1.25 = 625
250 x 1.25 = 312.5

nu wilt ge die afbeelding naar de groote van het scherm (SWF)?

625 x 0.8 = 500
312.5 x 0.8 = 250

Uw factor in deze berekening is dan 0.8

MAAR...

dan klopt die berekening van 1.0416666666666667 niet meer...


Zo neen, het volgende:

Ge wilt u ingeladen afbeelding eerst met 1.25 vergroten en dan terug naar de afmetingen van de originele groote schalen.

Mijn Hoofd schreef:
SWF:

w = 500
h = 250

Afbeelding inladen:

w = 600
h = 300

Afbeelding groter schalen:

w = 625
h = 312.5

Praktische berekening:

600 : 0.96 = 625
300 : 0.96 = 312.5

nu wilt ge die afbeelding naar de groote van het scherm (SWF)?

625 x 0.96 = 600
312.5 x 0.96 = 300

Uw factor in deze berekening is dan 0.96

EN...

dan klopt die berekening van 1.0416666666666667 weer wel...

MAAR...

Dan is deze nog altijd te groot voor het scherm (SWF)


Ik weet dat het al laat is (5 uur gepasseerd) en het kan daar aan liggen dat ik dingen door elkaar gooi, maar ik begin er hoe langer hoe minder van te snappen...
Offline vinTage - 25/01/2012 10:36 (laatste wijziging 25/01/2012 12:39)
Avatar van vinTage Nieuw lid Misschien wordt het zo allemaal wat duidelijker en makkelijker om zelf te testen, het probleem bevind zich op regel 29

  1. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
  2. <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
  3.  
  4.  
  5. <style>
  6. *{margin: 0; padding:0;}
  7.  
  8. #foto{
  9. width: 125%; /*zie deze!!*/
  10. height:100px;
  11. background-color:#000;
  12. color:#fff;
  13. margin-top:15px;
  14. }
  15. </style>
  16.  
  17.  
  18.  
  19. <div id="foto">klik me, ik ben 125% breed van de schermbreedte</div>
  20.  
  21. <script>
  22. var screenSize;
  23.  
  24. $("#foto").click(function () {
  25. screenSize= $(window).width(); //moet je weten
  26. var fotoWidth = $("#foto").width(); //moet je imo ook weten
  27.  
  28. //foute berekening, pls help me met deze!!
  29. var procent = (fotoWidth - screenSize) * .75;
  30.  
  31.  
  32. //uitvoeren met procent
  33. $("#foto").effect("scale", {
  34. percent: procent, //met deze var
  35. direction: 'horizontal'
  36. },
  37. 500,
  38. onComplete = finale
  39. );
  40. });
  41.  
  42.  
  43. function finale()
  44. {
  45. if($("#foto").width != screenSize){
  46. var msg = "Helaas, je berekening is fout, de nieuwe width moet "+screenSize+" zijn, maar is nu "+$("#foto").width()
  47. $("#foto").html(msg);
  48. }
  49. else
  50. {
  51. alert("woohoo...het is je blijkbaar gelukt!/nGimme the code pls!")
  52. }
  53. }
  54. </script>



edit:
De oplossing:

beeldBreedte = x
fotoBreedte = y
schaalfactor = x/y
Offline UpLink - 25/01/2012 12:43 (laatste wijziging 25/01/2012 12:45)
Avatar van UpLink ... Met wat proberen kom ik op het volgende uit:

Script schreef:
Helaas, je berekening is fout, de nieuwe width moet 1366 zijn, maar is nu 1365


In u berekening heb ik het volgende staan voor mijn scherm:

  1. //foute berekening, pls help me met deze!!
  2. var procent = (fotoWidth - screenSize) * .2375;


is moeilijk ze :-p
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.289s