According to the message [ #224318 ] Zero value in auto-range the 2000-12-03 23:11, I propose this modification in the metod autoAdjustRange() of the class HorizontalNumberAxis and VerticalNumberAxis:
Replace:
if (this.autoRangeIncludesZero()) {
if (upper!=0.0) upper = Math.max(0.0, upper+upperMargin*range);
if (lower!=0.0) lower = Math.min(0.0, lower-lowerMargin*range);
}
else {
if (upper!=0.0) upper = upper+upperMargin*range;
if (lower!=0.0) lower = lower-lowerMargin*range;
}
by:
if (this.autoRangeIncludesZero()) {
if (upper!=0.0) upper = Math.max(0.0, upper+upperMargin*range);
if (lower!=0.0) lower = Math.min(0.0, lower-lowerMargin*range);
}
else {
upper = upper+upperMargin*range;
lower = lower-lowerMargin*range;
}
Ref: [ #224318 ] Zero value in auto-range
Re: Ref: [ #224318 ] Zero value in auto-range
Hi Anthony,
Thanks for your post. I took another look at this and decided to create a new flag autoRangeStickyZero so that you can have it either way. Here's the code I have at the moment (not tested, so it could be wrong):
if (this.autoRangeIncludesZero) {
if (this.autoRangeStickyZero) {
if (upper<=0.0) {
upper = Math.max(0.0, Math.min(0.0, upper+upperMargin*range));
}
else {
upper = upper+upperMargin*range;
}
if (lower>=0.0) {
lower = Math.min(0.0, Math.max(0.0, lower-lowerMargin*range));
}
else {
lower = lower-lowerMargin*range;
}
}
else {
upper = Math.max(0.0, upper+upperMargin*range);
lower = Math.min(0.0, lower-lowerMargin*range);
}
}
else {
if (this.autoRangeStickyZero) {
if (upper<=0.0) {
upper = Math.min(0.0, upper+upperMargin*range);
}
else {
upper = upper+upperMargin*range;
}
if (lower>=0.0) {
lower = Math.max(0.0, lower-lowerMargin*range);
}
else {
lower = lower-lowerMargin*range;
}
}
else {
upper = upper+upperMargin*range;
lower = lower-lowerMargin*range;
}
}
Regards,
Dave Gilbert.
Thanks for your post. I took another look at this and decided to create a new flag autoRangeStickyZero so that you can have it either way. Here's the code I have at the moment (not tested, so it could be wrong):
if (this.autoRangeIncludesZero) {
if (this.autoRangeStickyZero) {
if (upper<=0.0) {
upper = Math.max(0.0, Math.min(0.0, upper+upperMargin*range));
}
else {
upper = upper+upperMargin*range;
}
if (lower>=0.0) {
lower = Math.min(0.0, Math.max(0.0, lower-lowerMargin*range));
}
else {
lower = lower-lowerMargin*range;
}
}
else {
upper = Math.max(0.0, upper+upperMargin*range);
lower = Math.min(0.0, lower-lowerMargin*range);
}
}
else {
if (this.autoRangeStickyZero) {
if (upper<=0.0) {
upper = Math.min(0.0, upper+upperMargin*range);
}
else {
upper = upper+upperMargin*range;
}
if (lower>=0.0) {
lower = Math.max(0.0, lower-lowerMargin*range);
}
else {
lower = lower-lowerMargin*range;
}
}
else {
upper = upper+upperMargin*range;
lower = lower-lowerMargin*range;
}
}
Regards,
Dave Gilbert.
Re: Ref: [ #224318 ] Zero value in auto-range
Hi David,
Your solution seem to be the good one.
Only one one thing:
Math.max(0.0, Math.min(0.0, upper+upperMargin*range)) and Math.min(0.0, Math.max(0.0, lower-lowerMargin*range)) is egal to zero independently to the value of upper+upperMargin*range and lower-lowerMargin*range.
Regards,
Anthony Boulestreau.
Your solution seem to be the good one.
Only one one thing:
Math.max(0.0, Math.min(0.0, upper+upperMargin*range)) and Math.min(0.0, Math.max(0.0, lower-lowerMargin*range)) is egal to zero independently to the value of upper+upperMargin*range and lower-lowerMargin*range.
Regards,
Anthony Boulestreau.
Re: Ref: [ #224318 ] Zero value in auto-range
Hi Anthony,
Thanks for pointing that out. One of the good things about open source is that silly coding errors get spotted quite quickly!
I think zero is the correct answer in both those cases, so I'll just put "0.0" in there.
Regards,
Dave Gilbert
Thanks for pointing that out. One of the good things about open source is that silly coding errors get spotted quite quickly!
I think zero is the correct answer in both those cases, so I'll just put "0.0" in there.
Regards,
Dave Gilbert