Minor note that hide size needs to be based of skin surface area, and not skin tissue volume; you don't slice the skin in half depth-wise to get twice the leather. There's not really a notion of surface area in DF bodies, but in general any volume change of the factor x should indicate a surface area change of x2/3 .
So a fully grown dragon would give equal to (25000000/300)2/3 = 1908 gray squirrel skins, as opposed to 25000000/300 = 83333 if it was directly based off volume. A cat would give 6 squirrel skins, a dog 21, and a cow 158.
The problem is deeper than that, though. In real life, you get relatively less hide off larger animals for their body mass because their skin is thicker, and this results in thicker leather rather than more of it.
That's more or less what I tried to say, though I might have skipped a few steps of math. Basically, it is what happens to any 2-dimensional surface of a 3-dimensional object when you scale the 3-dimensional object directly. As the creature sizes are defined as measurements of volume (cm
3)(3D), comparing two of them gives you a factor that can be used in conjunction with one of them to scale it into the other. This is then exponentiated by 1/3 (cube root) to get how much the object is scaled in 1D, and then exponentiated by 2 (squaring) to get that factor for 2D. If we call the 3D scaling factor
x we get (
x1/3)
2 =
x1/3*2 =
x2/3. This holds for any 2D surface of a 3D object, be it a cube, sphere, or Dwarf Fortress creature.
Of course, there should also be some notion of leather thickness, either like SixOfSpades suggested (and a few mods have already implemented) with different "leather thickness/toughness levels" specified for each animal, or it could be pulled directly from the geometry of the creatures. A combination of the two could be possible as well of course, so giant rhinoceroses would have thicker leather than normal ones, despite the two of them both having "tough skin".