public override double PhysicalToWorld( PointF p, PointF physicalMin, PointF physicalMax, bool clip )
{
// use the base method to do the projection on the axis.
double t = base.PhysicalToWorld( p, physicalMin, physicalMax, clip );
// now reconstruct phys dist prop along this assuming linear scale as base method did.
double v = (t - this.WorldMin) / (this.WorldMax - this.WorldMin);
double ret = WorldMin*Math.Pow( WorldMax / WorldMin, v );
// if want clipped value, return extrema if outside range.
if (clip)
{
ret = Math.Max( ret, WorldMin );
ret = Math.Min( ret, WorldMax );
}
return ret;
}