Hallo,

ik geraak niet uit volgende probleem uit, steeds kloppen de uitkomsten niet. Ik heb al een heel blad volgeschreven maar het heeft niet gewerkt.

ik heb in mijn databank volgende gegevens staan
- img height (800)
- img width (1000)
- div top (300)
- div left (400)
- div height (200)
- div width (200)

Dan krijg je een vierkant in het midden (die div). Nu wil ik de div variabels herberekenen maar dat de positie dezelfde blijft (er wordt rekening gehouden met de aspect ration van de img)
dan heb ik (voor de gemakkelijkheid is het nu X 2 maar dat is niet altijd )
- img height (1600)
- img width (2000)
- div top (A=?)
- div left (B=?)
- div height (C=?)
- div width (D=?)

Hoe kan ik deze vraagtekens wiskundig oplossen?

Als het gemakkelijk is, sorry ik ben geen rekenwonder. Ik krijg het al 2 jaar niet meer op school en dan vergeet je al snel wat je niet vaak nodig hebt.
Alvast bedankt
Gewoon alles met dezelfde factor vermenigvuldigen:

factor = imgHeight[sub]1[/sub]/imgHeight[sub].0[/sub] = 1600 / 800 = 2

divTop[sub]1[/sub] = divTop[sub].0[/sub] * factor = 300 * 2 = 600
divLeft[sub]1[/sub] = divLeft[sub].0[/sub] * factor = 400 * 2 = 800
divHeight[sub]1[/sub] = divHeight[sub].0[/sub] * factor = 200 * 2 = 400
divWidth[sub]1[/sub] = divHeight = 400

Om hier een beetje mee te spelen en te bewijzen heb ik een Geogebra aangemaakt voor dit probleem: http://ggbtu.be/mt93JBrPV
Je zult sowieso één variabele moeten bepalen die je gaat vaststellen. Als je geen van de 4 weet kun je nooit aan de andere 3 komen. Toch in ieder geval niet met een wisselende factor.

Indien de factor inderdaad altijd bekend is dan kan het op de manier die Wouter hierboven omschrijft.
Om het op een andere manier in te steken:

divTop = (imgHeight - divHeight) / 2;
divLeft = (imgWidth - divWidth) / 2;

In de oorspronkelijke post staat overigens niet wat er met de hoogte en breedte van de div moet gebeuren als de img andere afmetingen krijgt: moet de div even groot blijven, of moet hij meeschalen? Dat maakt dat het niet mogelijk is om iets zinnigs te zeggen over divHeight en divWidth.
@Wouter, @peter & @willem

Heel erg bedankt maar ik vrees dat het niet gaat werken vanwege de "divWidth1 = divHeight = 400".
de div is niet perse een vierkant. Deze kan ook rechthoekig van vorom zijn. De bedoeling is dat hij meeschaalt.

Als de div over een bloempot zit en de foto zijn afmetingen veranderen (grote of kleiner) dan moet de div nog steeds op dezelfde plaats over de bloempot zitten.
> Heel erg bedankt maar ik vrees dat het niet gaat werken vanwege de "divWidth1 = divHeight = 400".

Als je de berekeningen gebruikt die ik noemde, zou het in principe altijd goed moeten gaan. Als imgHeight 1.5x zo groot wordt, moet je divHeight ook 1.5x zo groot maken en uit de berekening rolt dan de juiste divTop.
ik bedoel dat als de width en de height niet altijd dezelfde zijn, hierdoor kan ik dit stuk dus niet gebruiken wat altijd een vierkant zal geven ookal is de bron een driehoek vierkant ;)
Huh? Waar komt die driehoek nou ineens vandaan?
Maar zelfs dan moet het nog werken.
sorry was verstrooit
<?php
$fW = $imageWidthA / $imageWidthB; // factor voor de breedte
$fH = $imageHeightA / $imageHeightB; // factor voor de hoogte


$divTopB = $divTopA / $fH;
$divLeftB = $divLeftA / $fW;
$divHeightB = $divHeightA / $fH;
$divWidthB = $divWidthA / $fW;
?>

Reageren