PDA

Click to See Complete Forum and Search --> : [RESOLVED] convert pixels² to cm²


.paul.
Oct 1st, 2009, 10:53 AM
i've got a formula for calculating the area of a triangle:

x1 = points(1).X
y1 = points(1).Y
x2 = points(2).X
y2 = points(2).Y
x3 = points(0).X
y3 = points(0).Y
Dim area As Decimal = (0.5 * ((x1 * (y2 - y3)) + (x2 * (y3 - y1)) + (x3 * (y1 - y2))))
Debug.Print(unitConverter.pixelsSquaredToCMSquared(gr, area))

it works well but it calculates the output in pixels² + i need it to be cm²

heres my converter function that works well converting a pixel length to a cm length, but doesn't work with pixels²:

Public Shared Function pixelsSquaredToCMSquared(ByVal gr As Graphics, ByVal pixels As Decimal) As Decimal
Return (pixels / gr.DpiX) * 2.54
End Function

what am i doing wrong?

jemidiah
Oct 1st, 2009, 09:44 PM
If 100 pixels are 5 cm's [for instance], then 100*100 pixels^2 are 5*5 cm^2. That is, the conversion factor needs to get squared too.

Example:
Say there's 20 pixels to a cm. Convert 800 pixels^2 to some number of cm^2. Ok... since 800 = 20*40, we see

800 pixels^2 = 20 pixels * 40 pixels = 1 cm * 2 cm = 2 cm^2.

In general, if we have X pixels to 1 cm, and we want to convert A pixels^2 to cm^2, we use...

A pixels^2 = (A / (X^2)) cm^2

The formula you seem to be using is A pixels^2 = (A / X) cm^2, which will give you confusingly wrong results.

jemidiah
Oct 2nd, 2009, 06:03 AM
To be more explicit, the following should do what you want:

Public Shared Function pixelsSquaredToCMSquared(ByVal gr As Graphics, ByVal pixels As Decimal) As Decimal
Return pixels * (2.54 / gr.DpiX) ^ 2
End Function

.paul.
Oct 2nd, 2009, 10:34 AM
thanks jemediah, that worked.
saved a lot of head scratching:thumb: rated+