sclass ScaledDiagram { settable int w = 600; settable int h = 400; int horizontalMargin = 10; int verticalMargin = 10; settable DoubleRange horizontalRange; settable DoubleRange verticalRange; DoubleRange xRange() { ret doubleRange(horizontalMargin, w-horizontalMargin); } DoubleRange yRange() { ret doubleRange(h-verticalMargin, verticalMargin); } double xToScreen(double x) { ret transformBetweenDoubleRanges(x, horizontalRange(), xRange()); } double yToScreen(double y) { ret transformBetweenDoubleRanges(y, verticalRange(), yRange()); } }