summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/base/palette.asy
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/utils/asymptote/base/palette.asy')
-rw-r--r--Build/source/utils/asymptote/base/palette.asy22
1 files changed, 13 insertions, 9 deletions
diff --git a/Build/source/utils/asymptote/base/palette.asy b/Build/source/utils/asymptote/base/palette.asy
index e9d3fb921db..fabbdc2cd5b 100644
--- a/Build/source/utils/asymptote/base/palette.asy
+++ b/Build/source/utils/asymptote/base/palette.asy
@@ -45,15 +45,19 @@ pen[] adjust(picture pic, real min, real max, real rmin, real rmax,
{
real dmin=pic.scale.z.T(min);
real dmax=pic.scale.z.T(max);
- int minindex=floor((dmin-rmin)/(rmax-rmin)*palette.length);
- if(minindex < 0) minindex=0;
- int maxindex=floor((dmax-rmin)/(rmax-rmin)*palette.length);
- if(maxindex > palette.length) maxindex=palette.length;
- if(minindex > 0 || maxindex < palette.length) {
- pen[] newpalette;
- for(int i=minindex; i < maxindex; ++i)
- newpalette.push(palette[i]);
- return newpalette;
+ real delta=rmax-rmin;
+ if(delta > 0) {
+ real factor=palette.length/delta;
+ int minindex=floor(factor*(dmin-rmin));
+ if(minindex < 0) minindex=0;
+ int maxindex=floor(factor*(dmax-rmin));
+ if(maxindex > palette.length) maxindex=palette.length;
+ if(minindex > 0 || maxindex < palette.length) {
+ pen[] newpalette;
+ for(int i=minindex; i < maxindex; ++i)
+ newpalette.push(palette[i]);
+ return newpalette;
+ }
}
return palette;
}