you are talking about dividing the new weight depending on the difference between the original weights, so with 200 to 100, the difference would be 100 / 0. in this case, you state you want a division of 25 / 75 percent. for 0 / 0, it should be 50 / 50. that sounds like the unbiased percentage of 50 is halfed for every 100 weight-units an object weights more than its counterpart. i think that is an exponential function ...
[code:i1z7khp6]myWeight = 200;
otherWeight = 100;
newWeight = x;
myBias = abs( myWeight - otherWeight ); // the weight bias
myBias *=( Sign( myWeight - otherWeight )> 0 ); // if its negative, make it zero
if( myBias != 0 )
myPercent = .5 ^( myBias / 100 );
myPercent = 1 - otherPercent;
myWeight += newWeight * myPercent;[/code:i1z7khp6]
something like that, i guess; it could be merged into one line, but that would just be confusing. unless you really wanted the division to respect the relative weights of the objects, which would be simpler.