00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include "util.h"
00029
00030 double AutoSkl(double dl){
00031 double dp=floor(log10(dl));
00032 if(dp!=0.)
00033 dl/=pow(10.,dp);
00034 if(dl>4) dl=5;
00035 else if(dl>1) dl=2;
00036 else dl=1;
00037 if(dp!=0.)
00038 dl*=pow(10.,dp);
00039 return dl;
00040 }
00041
00042 double AutoNext(double x0, double dl){
00043 return(ceil(x0/dl)*dl);
00044 }
00045
00046 void hsv2rgb(SPACOLOR *c){
00047 double i,f,h,m,n,k,v;
00048 if(c->s == 0.)
00049 c->r = c->g = c->b = c->v;
00050 else{
00051 if(c->h >= 360.) h=0.;
00052 else h = c->h/60.;
00053 i = floor(h);
00054 v = c->v;
00055 f = h-i;
00056 m = v*(1.-c->s);
00057 n = v*(1.-c->s*f);
00058 k = v*(1.-c->s*(1.-f));
00059 switch((int)h){
00060 case 0: c->r = v; c->g = k; c->b = m; break;
00061 case 1: c->r = n; c->g = v; c->b = m; break;
00062 case 2: c->r = m; c->g = v; c->b = k; break;
00063 case 3: c->r = m; c->g = n; c->b = v; break;
00064 case 4: c->r = k; c->g = m; c->b = v; break;
00065 case 5: c->r = v; c->g = m; c->b = n; break;
00066 }
00067 }
00068 }