Color Co-ordinate System プログラム


/* Color Co-ordinate System         */
/* 埼玉大学 工学部   	      */
/* 情報システム工学科4年   */
/* 近藤研究室                   */
/* 松永 政尚                   */
/* 1999.2.1                        */


import java.applet.Applet;
import java.awt.*;

class KV{ //各クラスで扱う変数のクラス

	static int pr,pg,pb; //選択色相のRGB値
	static int px,py; //彩度、明度フィールド上の選択ポイント位置
	static int px2 = 80,py2 = 115;
	static int update; //0=24色相環上、1=彩度、明度フィールド上
	static int vals[] = new int[10]; //RGB、HLSの各値を格納
	static int base; //24色相環上の位置
	static int vh[] = new int[24]; //24色相環のH値
	static int vl[] = new int[24]; //          L
	static int vs[] = new int[24]; //          S
	static int henka1 = 45,henka2 = 105;	 //類似、対照の変化量
	static int choice; //チョイスメニューの位置
	static int bg_r = 200,bg_g = 200,bg_b = 200; //背景色のRGB値
	static int meido_d = 41; //明度差の閾値
}

class RGB{ //RGBとHLSの相互変換を行なうクラス

// from RGB & to RGB	

	public static double value(double n1,double n2,double hue){
		if(hue<0){
			hue += 360;
		}
		if(hue>360){
			hue -= 360;
		}
		if(hue<60){
			return n1+(n2-n1)*hue/60.;
		}else if (hue<180) {
			return n2;
		}else if (hue<240){
			return n1+(n2-n1)*(240-hue)/60.;
		}else{
			return n1;
		}
	}	

// max & min ( double ) 

	public static double max(double a, double b) {
		if (a > b) {
			return a;
		} else {
			return b;
		}
	}
	public static double min(double a, double b) {
		if (a < b) {
			return a;
		} else {
			return b;
		}
	}

// max & min ( int )

	public static int max2(int a, int b) {
		if (a > b) {
			return a;
		} else {
			return b;
		}
	}
	public static int min2(int a, int b) {
		if (a < b) {
			return a;
		} else {
			return b;
		}
	}

	public static void toRGB(int x,int y,int z){ //HLSからRGBへ
		final int RED = 0;
		final int GRN = 1;	
		final int BLU = 2;		

		double h,l,s;
		double r,g,b;
		h = x/255.*360;
		l = y/255.;
		s = z/255.;
		double m1,m2;
		if(l<.5){
			m2 = l*(1+s);
		}else{
			m2 = l+s-l*s;
		}
		m1 = 2*l - m2;
		if(s==0){
			r=l;
			g=l;
			b=l;
		}else{
			r=value(m1,m2,h+120);
			g=value(m1,m2,h);
			b=value(m1,m2,h-120);	
		}
		KV.vals[RED] = (int)(r*255);
		KV.vals[GRN] = (int)(g*255);
		KV.vals[BLU] = (int)(b*255);
	}	

	public static void fromRGB(int x, int y, int z) { //RGBからHLSへ
		final int H = 3;
		final int L = 4;
		final int S = 5;

		double r,g,b;
		double h,l,s;
		r = x/255.;
		g = y/255.;
		b = z/255.;
		double min = min(min(r,g),b);
		double max = max(max(r,g),b);
		l = (max+min)/2;
		if (max==min) {
			s = 0;
			h = 0;
		} else {
			if (l<=0.5) {
				s = (max-min)/(max+min);
			} else {
				s = (max-min)/(2-max-min);
			}
			double delta = max-min;
			if (r==max) {
				h=(g-b)/delta;
			} else if (g==max) {
				h=2+(b-r)/delta;
			} else {
				h=4+(r-g)/delta;
			}
			h /= 6.;
			if (h<0) {
				h += 1;
			}
		}
		KV.vals[H] = (int)(h*255);
		KV.vals[L] = (int)(l*255);
		KV.vals[S] = (int)(s*255);
	}

}
class meido{ //明度差を求めるクラス

	static int l_max; //最大明度値
	static int l_min; //最小明度値
	static int l_d; //明度差	

	public static void meido_3(int x,int y,int z){ //3配色
		if(x > y){
			l_max = Math.max(x,z);
			l_min = Math.min(y,z);
		}
		else{
			l_max = Math.max(y,z);
			l_min = Math.min(x,z);
		}
		l_d = l_max - l_min;
	}
	
	public static void meido_4(int x,int y,int z,int w){ //4配色
		if(x > y && z > w){
			l_max = Math.max(x,z);
			l_min = Math.min(y,w);
		}
		else if(x > y && w > z){
			l_max = Math.max(x,w);
			l_min = Math.min(y,z);
		}
		else if(y > x && z > w){
			l_max = Math.max(y,z);
			l_min = Math.min(x,w);
		}
		else if(y > x && w > z){
			l_max = Math.max(y,w);
			l_min = Math.min(x,z);
		}
		l_d = l_max - l_min;
	}
	
	public static void meido_5(int x,int y,int z,int w,int v){ //5配色
		if(x > y && z > w){
			l_max = Math.max(x,z);
			l_max = Math.max(l_max,v);
			l_min = Math.min(y,w);
			l_min = Math.min(l_min,v);
		}
		else if(x > y && w > z){
			l_max = Math.max(x,w);
			l_max = Math.max(l_max,v);
			l_min = Math.min(y,z);
			l_min = Math.min(l_min,v);
		}
		else if(y > x && z > w){
			l_max = Math.max(y,z);
			l_max = Math.max(l_max,v);
			l_min = Math.min(x,w);
			l_min = Math.min(l_min,v);
		}
		else if(y > x && w > z){
			l_max = Math.max(y,w);
			l_max = Math.max(l_max,v);
			l_min = Math.min(x,z);
			l_min = Math.min(l_min,v);
		}
		l_d = l_max - l_min;
	}
	
	public static void meido_6(int x,int y,int z,int w,int v,int u){ //6配色
		if(x > y && z > w){
			l_max = Math.max(x,z);
			l_max = Math.max(l_max,v);
			l_max = Math.max(l_max,u);
			l_min = Math.min(y,w);
			l_min = Math.min(l_min,v);
			l_min = Math.min(l_min,u);
		}
		else if(x > y && w > z){
			l_max = Math.max(x,w);
			l_max = Math.max(l_max,v);
			l_max = Math.max(l_max,u);
			l_min = Math.min(y,z);
			l_min = Math.min(l_min,v);
			l_min = Math.min(l_min,u);
		}
		else if(y > x && z > w){
			l_max = Math.max(y,z);
			l_max = Math.max(l_max,v);
			l_max = Math.max(l_max,u);
			l_min = Math.min(x,w);
			l_min = Math.min(l_min,v);
			l_min = Math.min(l_min,u);
		}
		else if(y > x && w > z){
			l_max = Math.max(y,w);
			l_max = Math.max(l_max,v);
			l_max = Math.max(l_max,u);
			l_min = Math.min(x,z);
			l_min = Math.min(l_min,v);
			l_min = Math.min(l_min,u);
		}
		l_d = l_max - l_min;
	}
}

class buttonPanel extends Panel{ //各ボタンの説明を表示

	public void paint(Graphics g){
			g.drawString("明度の閾値を設定(10段階)",5,15);
			g.drawString("小",0,35);
			g.drawString("大",175,35);
	}
}

public class ColorTest extends Applet{ //配色支援システムの元締めクラス

	SelectedColor sc; //カラー選択
	Datehyouji dh; //データ表示

	Three Three; //3配色 
	Four Four; //4配色
	Five Five; //5配色
	Six Six; //6配色

	int ph = 10; //選択色相マークの開始位置
	int Mvalue; //スクロールバーの明度閾値	

        //vr[],vg[],vb[] 24色相環のRGB値	
	int [] vr = {160,176,192,208,207,223,223,224,192,160,95,32,0,0,0,0,0,0,63,79,111,112,128,160,160,176,192};
	int [] vg = {0,31,48,80,111,144,175,192,191,176,175,160,144,144,128,128,111,96,80,64,64,47,16,16};
	int [] vb = {80,64,63,47,15,15,0,0,0,0,47,95,96,127,128,144,143,144,144,144,143,127,127,96};	

	final int RED = 0;
	final int GRN = 1;	
	final int BLU = 2;		
	final int H = 3;
	final int L = 4;
	final int S = 5;
	
	//Choiceメニュー
	String items[] = {"《3配色》",
			"ポルタメント(3):滑らかな効果","セクスタード(3):魅力的効果",
			"オブリガード:デリケートな効果","トリオ:円満の快さ",
			"近似補色配色:鮮やかな効果","《4配色》",
			"ポルタメント(4):滑らかな効果","セクスタード(4):均衡的の主調効果",
			"クワドラド:この上ない派手","魅力的補色対:清純な魅力",
			"刺激補色対:刺激的効果","鮮やかな補色配色:鮮やかな調和感",
			"完全4色調和:バランス魅力効果","《5配色》",
			"ポルタメント(5):滑らかな効果","セクスタード(5):均衡的の主調効果",
			"《6配色》","セクスタード(6):円満の魅力"};

	Choice itemChoice = new Choice();
	Scrollbar sbM = new Scrollbar(Scrollbar.HORIZONTAL,5,0,0,10);
	TextField textM = new TextField("5",2);
	
	public void init(){

		//24色相環のRGB値を格納
		for(int i=0; i<24 ; i=i+1){
			RGB.fromRGB(vr[i],vg[i],vb[i]); 
			KV.vh[i] = KV.vals[H];KV.vl[i] = KV.vals[L];KV.vs[i] = KV.vals[S];
		}
	
		setLayout(null); //全体のレイアウト
		
		resize(750,700);

		//Choiceメニューのセット
		for(int i = 0;i < items.length;i = i + 1){
			itemChoice.addItem(items[i]);
		}
		buttonPanel bP = new buttonPanel();
		add(bP);
		bP.reshape(0,320,215,610);
	
		bP.setLayout(null);

		bP.add(sbM);
		sbM.reshape(15,20,160,30);

		bP.add(textM);
		textM.reshape(190,20,25,30);

		bP.add(itemChoice);
		itemChoice.reshape(0,60,215,20);	
					
		sc = new SelectedColor();
		add(sc);
		sc.init();
		
		dh = new Datehyouji();
		add(dh);
		dh.init();
	
		Three = new Three();
		Three.init();	

		Four = new Four();
		Four.init();
		
		Five = new Five();
		Five.init();
		
		Six = new Six();
		Six.init();

	}

	public boolean handleEvent(Event evt){

		//スクロールバーのイベント処理
		if(evt.target instanceof Scrollbar){
			if((evt.id == Event.SCROLL_ABSOLUTE)||
				(evt.id == Event.SCROLL_LINE_DOWN)||
				(evt.id == Event.SCROLL_LINE_UP)||
				(evt.id == Event.SCROLL_PAGE_DOWN)||
				(evt.id == Event.SCROLL_PAGE_UP)){
				textM.setText(String.valueOf(sbM.getValue()));
				Mvalue = sbM.getValue();
				KV.meido_d = Mvalue + 36;
			}
			return true;
		}
		
		return super.handleEvent(evt);
	}

	public boolean action(Event evt,Object o){

		//チョイスメニューのイベント処理
		if(evt.target instanceof Choice){

			String item = itemChoice.getSelectedItem();
			
			if(item.equals("ポルタメント(3):滑らかな効果"))
				KV.choice = 1;
			else if(item.equals("セクスタード(3):魅力的効果"))
				KV.choice = 2;
			else if(item.equals("オブリガード:デリケートな効果"))
				KV.choice = 3;
			else if(item.equals("トリオ:円満の快さ"))
				KV.choice = 4;	
			else if(item.equals("近似補色配色:鮮やかな効果"))
				KV.choice = 5;	
			else if(item.equals("ポルタメント(4):滑らかな効果"))
				KV.choice = 6;	
			else if(item.equals("セクスタード(4):均衡的の主調効果"))
				KV.choice = 7;	
			else if(item.equals("クワドラド:この上ない派手"))
				KV.choice = 8;	
			else if(item.equals("魅力的補色対:清純な魅力"))
				KV.choice = 9;	
			else if(item.equals("刺激補色対:刺激的効果"))
				KV.choice = 10;	
			else if(item.equals("鮮やかな補色配色:鮮やかな調和感"))
				KV.choice = 11;	
			else if(item.equals("完全4色調和:バランス魅力効果"))
				KV.choice = 12;	
			else if(item.equals("ポルタメント(5):滑らかな効果"))
				KV.choice = 13;	
			else if(item.equals("セクスタード(5):均衡的の主調効果"))
				KV.choice = 14;	
			else if(item.equals("セクスタード(6):円満の魅力"))
				KV.choice = 15;	
				
			if(KV.choice == 1 || KV.choice == 2 || KV.choice == 3 || KV.choice == 4 || KV.choice == 5)
			{add(Three,0);Three.repaint();}
			if(KV.choice == 6 || KV.choice == 7 || KV.choice == 8 || KV.choice == 9 || KV.choice == 10 || KV.choice == 11 || KV.choice == 12 )
			{add(Four,0);Four.repaint();}
			if(KV.choice == 13 || KV.choice == 14)
			{add(Five,0);Five.repaint();}
			if(KV.choice == 15)
			{add(Six,0);Six.repaint();}

			return true;	
		}

		//テキストフィールドのイベント処理
		if(evt.target instanceof TextField){
			int m = Integer.valueOf(textM.getText()).intValue();
			m = Math.max(0,Math.min(10,m));
			sbM.setValue(m);	
			Mvalue = m;
			return true;
		}
		return false;
	}			
	public void paint(Graphics g){
	
		getAppletContext().showStatus("Color co-ordinate System");
		
// 背景色
	
		g.setColor(new Color(KV.bg_r,KV.bg_g,KV.bg_b));
		g.fillRect(0,0,1100,700);

		g.setColor(Color.black);
		g.drawString("背景色",10,295);
		for(int i = 0;i < 256;i = i + 32){
			g.setColor(new Color(i,i,i));
			g.fillRect(10 + 5 * (i / 32),300,5,15);
		}

// 24色相環

		for(int i=0; i<24 ; i=i+1){
			RGB.fromRGB(vr[i],vg[i],vb[i]); 
			RGB.toRGB(KV.vals[H],KV.vals[L],KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(10,10+i*10,25,10);			          	
		}

// 選択色相マーク

		g.setColor(Color.black);
		g.drawRect(5,ph,35,9);
		g.setColor(Color.black);
		g.drawString("色相",10,10);
		
// 彩度、明度フィールド

		g.drawString("彩度",155,135);
		g.drawString("明度",70,25);
		RGB.fromRGB(KV.pr,KV.pg,KV.pb);
		for(int i=0; i<255; i=i+15){
			for(int j=0; j<255; j=j+15){				
				RGB.toRGB(KV.vals[H],j,i);
				int x = KV.vals[RED];
				int y = KV.vals[GRN];
				int z = KV.vals[BLU];	
				g.setColor(new Color(x,y,z));
				g.fillRect(80+(i/3),25+((255-j)/3),5,5);
			}
		}
		
// 彩度、明度フィールドにおける選択ポイント

		g.setColor(Color.black);
		int x1[] = {KV.px2+3,KV.px2-3,KV.px2};
		int y1[] = {123,123,117};
		g.fillPolygon(x1,y1,3);
		
		int x2[] = {72,72,78};
		int y2[] = {KV.py2+3,KV.py2-3,KV.py2};
		g.fillPolygon(x2,y2,3);

		g.setColor(Color.lightGray);
		g.drawLine(KV.px2,30,KV.px2,115);
		g.drawLine(80,KV.py2,165,KV.py2);		
	
	}
	
	public void update(Graphics g){
		paint(g);
	}

//マウスイベントの処理
	public boolean mouseDown(Event e,int x,int y){

//背景色選択区域上
		if(x >= 10 && x <= 50 && y >= 300 && y <= 315){
			KV.bg_r = (x - 10) * (256 / 40);
			KV.bg_g = (x - 10) * (256 / 40);
			KV.bg_b = (x - 10) * (256 / 40);
			repaint();sc.repaint();dh.repaint();
			Three.repaint();;Four.repaint();
			Five.repaint();Six.repaint();
		}

//24色相環上

		else if(x >= 10 && x <= 35){
			KV.update = 0;
			if( y >= 10 && y < 20 ){
				KV.pr = vr[0]; KV.pg = vg[0]; KV.pb = vb[0];
				ph = 10; KV.base = 0;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 20 && y < 30 ){
				KV.pr = vr[1]; KV.pg = vg[1]; KV.pb = vb[1];
				ph = 20;KV.base = 1;
				repaint();sc.repaint();dh.repaint();	
			}
			if( y >= 30 && y < 40 ){
				KV.pr = vr[2]; KV.pg = vg[2]; KV.pb = vb[2];
				ph = 30; KV.base = 2;
				repaint();sc.repaint();dh.repaint();		
			}
			if( y >= 40 && y < 50 ){
				KV.pr = vr[3]; KV.pg = vg[3]; KV.pb = vb[3];
				ph = 40; KV.base = 3;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 50 && y < 60 ){
				KV.pr = vr[4]; KV.pg = vg[4]; KV.pb = vb[4];
				ph = 50; KV.base = 4;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 60 && y < 70 ){
				KV.pr = vr[5]; KV.pg = vg[5]; KV.pb = vb[5];
				ph = 60; KV.base = 5;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 70 && y < 80 ){
				KV.pr = vr[6]; KV.pg = vg[6]; KV.pb = vb[6];
				ph = 70; KV.base = 6;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 80 && y < 90 ){
				KV.pr = vr[7]; KV.pg = vg[7]; KV.pb = vb[7];
				ph = 80; KV.base =7;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 90 && y < 100 ){
				KV.pr = vr[8]; KV.pg = vg[8]; KV.pb = vb[8];
				ph = 90; KV.base =8;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 100 && y < 110 ){
				KV.pr = vr[9]; KV.pg = vg[9]; KV.pb = vb[9];
				ph = 100; KV.base =9;
				repaint();sc.repaint();dh.repaint();
			}	
			if( y >= 110 && y < 120 ){
				KV.pr = vr[10]; KV.pg = vg[10]; KV.pb = vb[10];
				ph = 110; KV.base =10;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 120 && y < 130 ){
				KV.pr = vr[11]; KV.pg = vg[11]; KV.pb = vb[11];
				ph = 120; KV.base =11;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 130 && y < 140 ){
				KV.pr = vr[12]; KV.pg = vg[12]; KV.pb = vb[12];
				ph = 130; KV.base =12;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 140 && y < 150 ){
				KV.pr = vr[13]; KV.pg = vg[13]; KV.pb = vb[13];
				ph = 140; KV.base =13;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 150 && y < 160 ){
				KV.pr = vr[14]; KV.pg = vg[14]; KV.pb = vb[14];
				ph = 150; KV.base =14;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 160 && y < 170 ){
				KV.pr = vr[15]; KV.pg = vg[15]; KV.pb = vb[15];
				ph = 160; KV.base =15;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 170 && y < 180 ){
				KV.pr = vr[16]; KV.pg = vg[16]; KV.pb = vb[16];
				ph = 170; KV.base =16;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 180 && y < 190 ){
				KV.pr = vr[17]; KV.pg = vg[17]; KV.pb = vb[17];
				ph = 180; KV.base =17;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 190 && y < 200 ){
				KV.pr = vr[18]; KV.pg = vg[18]; KV.pb = vb[18];
				ph = 190; KV.base =18;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 200 && y < 210 ){
				KV.pr = vr[19]; KV.pg = vg[19]; KV.pb = vb[19];
				ph = 200; KV.base =19;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 210 && y < 220 ){
				KV.pr = vr[20]; KV.pg = vg[20]; KV.pb = vb[20];
				ph = 210; KV.base =20;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 220 && y < 230 ){
				KV.pr = vr[21]; KV.pg = vg[21]; KV.pb = vb[21];
				ph = 220; KV.base =21;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 230 && y < 240 ){
				KV.pr = vr[22]; KV.pg = vg[22]; KV.pb = vb[22];
				ph = 230; KV.base =22;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 240 && y < 250 ){
				KV.pr = vr[23]; KV.pg = vg[23]; KV.pb = vb[23];
				ph = 240; KV.base =23;
				repaint();sc.repaint();dh.repaint();
			}

//チョイスメニュー上
			if(KV.choice == 1 || KV.choice == 2 || KV.choice == 3 || KV.choice == 4 || KV.choice == 5)
			{add(Three,0);Three.repaint();}
			if(KV.choice == 6 || KV.choice == 7 || KV.choice == 8 || KV.choice == 9 || KV.choice == 10 || KV.choice == 11 || KV.choice == 12 )
			{add(Four,0);Four.repaint();}
			if(KV.choice == 13 || KV.choice == 14)
			{add(Five,0);Five.repaint();}
			if(KV.choice == 15)
			{add(Six,0);Six.repaint();}
		}
	
//彩度、明度フィールド上
		else if( x >= 80 && x <= 80+85 && y >= 30 && y <= 115){
			KV.px = (x - 80) * 3;
			KV.py = 255 - (y - 30) * 3;
			KV.px2 = x;
			KV.py2 = y;
			KV.update = 1;		
			repaint();dh.repaint();sc.repaint();
			Three.repaint();Four.repaint();Five.repaint();Six.repaint();
		}
		return true;
	}
	
	public boolean mouseDrag(Event e,int x,int y){
	
//背景色選択区域上
		if(x >= 10 && x <= 50 && y >= 300 && y <= 315){
			KV.bg_r = (x - 10) * (256 / 40);
			KV.bg_g = (x - 10) * (256 / 40);
			KV.bg_b = (x - 10) * (256 / 40);
			repaint();sc.repaint();dh.repaint();
			Three.repaint();;Four.repaint();
			Five.repaint();Six.repaint();
		}

//24色相環上
		else if(x >= 10 && x <= 35){
			KV.update = 0;
			if( y >= 10 && y < 20 ){
				KV.pr = vr[0]; KV.pg = vg[0]; KV.pb = vb[0];
				ph = 10; KV.base = 0;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 20 && y < 30 ){
				KV.pr = vr[1]; KV.pg = vg[1]; KV.pb = vb[1];
				ph = 20; KV.base = 1;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 30 && y < 40 ){
				KV.pr = vr[2]; KV.pg = vg[2]; KV.pb = vb[2];
				ph = 30; KV.base = 2;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 40 && y < 50 ){
				KV.pr = vr[3]; KV.pg = vg[3]; KV.pb = vb[3];
				ph = 40; KV.base = 3;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 50 && y < 60 ){
				KV.pr = vr[4]; KV.pg = vg[4]; KV.pb = vb[4];
				ph = 50; KV.base = 4;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 60 && y < 70 ){
				KV.pr = vr[5]; KV.pg = vg[5]; KV.pb = vb[5];
				ph = 60; KV.base = 5;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 70 && y < 80 ){
				KV.pr = vr[6]; KV.pg = vg[6]; KV.pb = vb[6];
				ph = 70; KV.base = 6;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 80 && y < 90 ){
				KV.pr = vr[7]; KV.pg = vg[7]; KV.pb = vb[7];
				ph = 80; KV.base =7;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 90 && y < 100 ){
				KV.pr = vr[8]; KV.pg = vg[8]; KV.pb = vb[8];
				ph = 90; KV.base =8;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 100 && y < 110 ){
				KV.pr = vr[9]; KV.pg = vg[9]; KV.pb = vb[9];
				ph = 100; KV.base =9;
				repaint();sc.repaint();dh.repaint();
			}	
			if( y >= 110 && y < 120 ){
				KV.pr = vr[10]; KV.pg = vg[10]; KV.pb = vb[10];
				ph = 110; KV.base =10;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 120 && y < 130 ){
				KV.pr = vr[11]; KV.pg = vg[11]; KV.pb = vb[11];
				ph = 120; KV.base =11;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 130 && y < 140 ){
				KV.pr = vr[12]; KV.pg = vg[12]; KV.pb = vb[12];
				ph = 130; KV.base =12;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 140 && y < 150 ){
				KV.pr = vr[13]; KV.pg = vg[13]; KV.pb = vb[13];
				ph = 140; KV.base =13;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 150 && y < 160 ){
				KV.pr = vr[14]; KV.pg = vg[14]; KV.pb = vb[14];
				ph = 150; KV.base =14;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 160 && y < 170 ){
				KV.pr = vr[15]; KV.pg = vg[15]; KV.pb = vb[15];
				ph = 160; KV.base =15;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 170 && y < 180 ){
				KV.pr = vr[16]; KV.pg = vg[16]; KV.pb = vb[16];
				ph = 170; KV.base =16;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 180 && y < 190 ){
				KV.pr = vr[17]; KV.pg = vg[17]; KV.pb = vb[17];
				ph = 180; KV.base =17;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 190 && y < 200 ){
				KV.pr = vr[18]; KV.pg = vg[18]; KV.pb = vb[18];
				ph = 190; KV.base =18;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 200 && y < 210 ){
				KV.pr = vr[19]; KV.pg = vg[19]; KV.pb = vb[19];
				ph = 200; KV.base =19;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 210 && y < 220 ){
				KV.pr = vr[20]; KV.pg = vg[20]; KV.pb = vb[20];
				ph = 210; KV.base =20;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 220 && y < 230 ){
				KV.pr = vr[21]; KV.pg = vg[21]; KV.pb = vb[21];
				ph = 220; KV.base =21;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 230 && y < 240 ){
				KV.pr = vr[22]; KV.pg = vg[22]; KV.pb = vb[22];
				ph = 230; KV.base =22;
				repaint();sc.repaint();dh.repaint();
			}
			if( y >= 240 && y < 250 ){
				KV.pr = vr[23]; KV.pg = vg[23]; KV.pb = vb[23];
				ph = 240; KV.base =23;
				repaint();sc.repaint();dh.repaint();
			}

//チョイスメニュー上
			if(KV.choice == 1 || KV.choice == 2 || KV.choice == 3 || KV.choice == 4 || KV.choice == 5)
			{add(Three,0);Three.repaint();}
			if(KV.choice == 6 || KV.choice == 7 || KV.choice == 8 || KV.choice == 9 || KV.choice == 10 || KV.choice == 11 || KV.choice == 12 )
			{add(Four,0);Four.repaint();}
			if(KV.choice == 13 || KV.choice == 14)
			{add(Five,0);Five.repaint();}
			if(KV.choice == 15)
			{add(Six,0);Six.repaint();}
		}
	
//彩度、明度フィールド上
		else if( x >= 80 && x <= 80+85 && y >= 30 && y <= 115){
			KV.px = (x - 80) * 3;
			KV.py = 255 - (y - 30) * 3;
			KV.px2 = x;
			KV.py2 = y;
			KV.update = 1;		
			repaint();dh.repaint();sc.repaint();
			Three.repaint();Four.repaint();Five.repaint();Six.repaint();
		}
		return true;
	}
}

class SelectedColor extends Panel{ //選択色に関するクラス

	final int RED = 0;
	final int GRN = 1;	
	final int BLU = 2;		
	final int H = 3;
	final int L = 4;
	final int S = 5;
	
	public void init(){
		reshape(105,145,40,55);

	}

	public void paint(Graphics g){
	
// selected color (vivid)

		setBackground(new Color(KV.bg_r,KV.bg_g,KV.bg_b));
		g.setColor(Color.black);
		g.drawString("選択色",0,12); 

//24色相環上

		if(KV.update == 0){
			RGB.fromRGB(KV.pr,KV.pg,KV.pb);
			RGB.toRGB(KV.vals[H],KV.vals[L],KV.vals[S]);
			int x = KV.vals[RED];
			int y = KV.vals[GRN];
        	        int z = KV.vals[BLU];		
			g.setColor(new Color(x,y,z));
			g.fillRect(0,15,40,40);

			KV.px2 = (KV.vals[S]/3) + 80;
			KV.py2 = 30 - ((KV.vals[L]-255)/3);

		}

//彩度、明度フィールド上
				
		else if(KV.update == 1){
			KV.vals[L] = KV.py; KV.vals[S] = KV.px;
			RGB.toRGB(KV.vals[H],KV.vals[L],KV.vals[S]);
			int x = KV.vals[RED];
			int y = KV.vals[GRN];
                	int z = KV.vals[BLU];		
			g.setColor(new Color(x,y,z));
			g.fillRect(0,15,40,40);
		}
	}
	
	public void update(Graphics g){
		paint(g);
	}	
						
}
		
class Datehyouji extends Panel{ //データ表示パネルクラス

    	String sH;
    	String sL;
    	String sS;
    	String sR;
   	String sG;
   	String sB;
    	final int RED = 0;
    	final int GRN = 1;
   	final int BLU = 2;
   	final int H = 3;
   	final int L = 4;
   	final int S = 5;
	int DHvals[] = new int[10];
	   
    	public void init(){
    
       	 reshape(75, 205, 107, 90);

    	}

    	public void paint(Graphics g)
    	{
		setBackground(new Color(KV.bg_r,KV.bg_g,KV.bg_b));
        	g.setColor(Color.white);
        	g.fillRect(0, 10, 50, 80);
        	g.setColor(Color.black);
        	if (KV.update == 1)
        	{
            		fromRGB(KV.pr, KV.pg, KV.pb);
            		toRGB(DHvals[3], KV.py, KV.px);
            		sH = Integer.toString(DHvals[3]);
            		sL = Integer.toString(KV.py);
            		sS = Integer.toString(KV.px);
       	 	}
        	if (KV.update == 0)
        	{
            		fromRGB(KV.pr, KV.pg, KV.pb);
            		toRGB(DHvals[3], DHvals[4], DHvals[5]);
            		sH = Integer.toString(DHvals[3]);
            		sL = Integer.toString(DHvals[4]);
           		sS = Integer.toString(DHvals[5]);
        	}
       	 	g.drawString("h :", 5, 50);
        	g.drawString("l :", 5, 65);
        	g.drawString("s :", 5, 80);
       	 	g.drawString("HLS", 5, 25);
        	g.drawString(sH, 25, 50);
        	g.drawString(sL, 25, 65);
       	 	g.drawString(sS, 25, 80);
        	g.setColor(Color.white);
        	g.fillRect(55, 10, 50, 80);
        	g.setColor(Color.black);
        	sR = Integer.toString(DHvals[0]);
        	sG = Integer.toString(DHvals[1]);
        	sB = Integer.toString(DHvals[2]);
        	g.drawString("r :", 60, 50);
        	g.drawString("g :", 60, 65);
        	g.drawString("b :", 60, 80);
        	g.drawString("RGB", 60, 25);
        	g.drawString(sR, 80, 50);
        	g.drawString(sG, 80, 65);
        	g.drawString(sB, 80, 80);
        	g.drawString("選択色カラーデータ", 0, 11);
    	}

    	public void update(Graphics g){
        	paint(g);
    	}
 
// from RGB & to RGB	

	public double value(double n1,double n2,double hue){
		if(hue<0){
			hue += 360;
		}
		if(hue>360){
			hue -= 360;
		}
		if(hue<60){
			return n1+(n2-n1)*hue/60.;
		}else if (hue<180) {
			return n2;
		}else if (hue<240){
			return n1+(n2-n1)*(240-hue)/60.;
		}else{
			return n1;
		}
	}	

// max & min ( double ) 

	public double max(double a, double b) {
		if (a > b) {
			return a;
		} else {
			return b;
		}
	}
	public double min(double a, double b) {
		if (a < b) {
			return a;
		} else {
			return b;
		}
	}

// max & min ( int )

	public int max2(int a, int b) {
		if (a > b) {
			return a;
		} else {
			return b;
		}
	}
	public int min2(int a, int b) {
		if (a < b) {
			return a;
		} else {
			return b;
		}
	}

	public void toRGB(int x,int y,int z){
		double h,l,s;
		double r,g,b;
		h = x/255.*360;
		l = y/255.;
		s = z/255.;
		double m1,m2;
		if(l<.5){
			m2 = l*(1+s);
		}else{
			m2 = l+s-l*s;
		}
		m1 = 2*l - m2;
		if(s==0){
			r=l;
			g=l;
			b=l;
		}else{
			r=value(m1,m2,h+120);
			g=value(m1,m2,h);
			b=value(m1,m2,h-120);	
		}
		DHvals[RED] = (int)(r*255);
		DHvals[GRN] = (int)(g*255);
		DHvals[BLU] = (int)(b*255);
	}	

	public void fromRGB(int x, int y, int z) {
		double r,g,b;
		double h,l,s;
		r = x/255.;
		g = y/255.;
		b = z/255.;
		double min = min(min(r,g),b);
		double max = max(max(r,g),b);
		l = (max+min)/2;
		if (max==min) {
			s = 0;
			h = 0;
		} else {
			if (l<=0.5) {
				s = (max-min)/(max+min);
			} else {
				s = (max-min)/(2-max-min);
			}
			double delta = max-min;
			if (r==max) {
				h=(g-b)/delta;
			} else if (g==max) {
				h=2+(b-r)/delta;
			} else {
				h=4+(r-g)/delta;
			}
			h /= 6.;
			if (h<0) {
				h += 1;
			}
		}
		DHvals[H] = (int)(h*255);
		DHvals[L] = (int)(l*255);
		DHvals[S] = (int)(s*255);
	}						
}

class Three extends Panel{

	int r1,r2,r3,r4,a1,b1,S1,L1;
	int l[] = new int[6];
    	final int RED = 0;
    	final int GRN = 1;
    	final int BLU = 2;
    	final int H = 3;
    	final int L = 4;
    	final int S = 5;

	int kakudo1,kakudo2,kakudo3,kakudo4;

	public void init(){

		reshape(220,0,450,700);
	}

	public void paint(Graphics g){		

		if(KV.choice ==1 ||KV.choice == 2 ||KV.choice == 4 ||KV.choice == 5){

		if(KV.choice == 1){
			r1 = KV.base + 2;
			r2 = KV.base + 22;
			kakudo1 = 30;
			kakudo2 = 30;			
		}
		else if(KV.choice == 2){
			r1 = KV.base + 4;
			r2 = KV.base + 20;
			kakudo1 = 60;
			kakudo2 = 60;			
		}						
		else if(KV.choice == 4){
			r1 = KV.base + 8;
			r2 = KV.base + 16;
			kakudo1 = 120;
			kakudo2 = 120;			
		}			
		else if(KV.choice == 5){
			r1 = KV.base + 10;
			r2 = KV.base + 14;
			kakudo1 = 150;
			kakudo2 = 150;			
		}			

// Result1(vivid)

		setBackground(new Color(KV.bg_r,KV.bg_g,KV.bg_b));
		g.setColor(Color.black);
		g.drawString("色相",0,20);
		
		g.drawString("base",115,15);
		String angle3 = Integer.toString(kakudo1);
		g.drawString(angle3,80,15);
		String angle4 = Integer.toString(kakudo2);		
		g.drawString(angle4,160,15);
		
		RGB.toRGB(KV.vh[KV.base],KV.vl[KV.base],KV.vs[KV.base]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,20,40,40);
		l[0] = KV.vl[KV.base];
 
		if(r1 >= 24){
			r1 = r1 - 24;
		}
		RGB.toRGB(KV.vh[r1],KV.vl[r1],KV.vs[r1]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,20,40,40);
		l[1] = KV.vl[r1];
		
		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],KV.vl[r2],KV.vs[r2]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,20,40,40);
		l[2] = KV.vl[r2];
		
		meido.meido_3(l[0],l[1],l[2]);

// Result2(saturation & lightness : identical)

		g.setColor(Color.black);
		g.drawString("彩度 & 明度",0,80);
		g.drawString(": 同一",0,95);

		RGB.toRGB(KV.vals[H],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,75,40,40);
 
		if(r1 >= 24){
			r1 = r1 - 24;
		}
		RGB.toRGB(KV.vh[r1],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,75,40,40);
		
		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,75,40,40);
		
// Result3(saturation : similar)

		g.setColor(Color.black);
		g.drawString("彩度 : 類似",0,135);	
				
		a1 = KV.vals[S] + KV.henka1;
		b1 = KV.vals[S] - KV.henka1;

		if(a1 >= 256){
			S1 = KV.vals[S] - (a1- 255);
		}else if(b1 < 0 ){
			S1 = KV.vals[S] + (KV.henka1 - KV.vals[S]);
		}else{
			S1 = KV.vals[S];
		}

// part1

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,130,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],KV.vals[L],S1+KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,130,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],KV.vals[L],S1-KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,130,40,40);		

// part2

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,175,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],KV.vals[L],S1-KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,175,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],KV.vals[L],S1+KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,175,40,40);		
		
// Result3(lightness : similar)

		g.setColor(Color.black);
		g.drawString("明度 : 類似",0,335);	
		
		a1 = KV.vals[L] + KV.henka1;
		b1 = KV.vals[L] - KV.henka1;

		if(a1 >= 256){
			L1 = KV.vals[L] - (a1- 255);
		}else if(b1 < 0 ){
			L1 = KV.vals[L] + (KV.henka1 - KV.vals[L]);
		}else{
			L1 = KV.vals[L];
		}

// part1

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,330,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],L1+KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,330,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],L1-KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,330,40,40);		

// part2

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,375,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],L1-KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,375,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],L1+KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,375,40,40);		

// Result4(saturation ; contrast)

		g.setColor(Color.black);
		g.drawString("彩度 : 対照",0,235);	
		
		a1 = KV.vals[S] + KV.henka2;
		b1 = KV.vals[S] - KV.henka2;
		if(a1 >= 256){
			S1 = KV.vals[S] - (a1- 255);
		}else if(b1 < 0 ){
			S1 = KV.vals[S] + (KV.henka2 - KV.vals[S]);
		}else{
			S1 = KV.vals[S];
		}
		
// part1

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,230,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],KV.vals[L],S1+KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,230,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],KV.vals[L],S1-KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,230,40,40);		

// part2

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,275,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],KV.vals[L],S1-KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,275,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],KV.vals[L],S1+KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,275,40,40);		

// Result4(lightness ; contrast)

		g.setColor(Color.black);
		g.drawString("明度 : 対照",0,435);	
		
		a1 = KV.vals[L] + KV.henka2;
		b1 = KV.vals[L] - KV.henka2;
		if(a1 >= 256){
			L1 = KV.vals[L] - (a1- 255);
		}else if(b1 < 0 ){
			L1 = KV.vals[L] + (KV.henka2 - KV.vals[L]);
		}else{
			L1 = KV.vals[L];
		}
		
// part1

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,430,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],L1+KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,430,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],L1-KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,430,40,40);		

// part2

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,475,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],L1-KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,475,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],L1+KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,475,40,40);

/***** 類似&対照を考慮 *****/

		int aL,bL,aS,bS,hhL=0,hhS=0;

		if(KV.choice == 1||KV.choice == 2){
			if(meido.l_d > KV.meido_d){
				hhL = KV.henka2;hhS = KV.henka1;
			}
			else{
				hhL = KV.henka1;hhS = KV.henka2;
			}
		}
		if(KV.choice == 4||KV.choice == 5){
			if(meido.l_d > KV.meido_d){
				hhL = KV.henka2;hhS = KV.henka1;
			}
			else{
				hhL = KV.henka1;hhS = KV.henka1;
			}
		}

		g.setColor(Color.black);
		g.drawString("調和",0,535);

		aL = KV.vals[L] + hhL;
		bL = KV.vals[L] - hhL;
		aS = KV.vals[S] + hhS;
		bS = KV.vals[S] - hhS;
		if(aL >= 256){
			L1 = KV.vals[L] - (aL - 255);
		}else if(bL < 0 ){
			L1 = KV.vals[L] + (hhL - KV.vals[L]);
		}else{
			L1 = KV.vals[L];
		}
		if(aS >= 256){
			S1 = KV.vals[S] - (aS - 255);
		}else if(bS < 0 ){
			S1 = KV.vals[S] + (hhS - KV.vals[S]);
		}else{
			S1 = KV.vals[S];
		}
		
// part1		

		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,530,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],L1+hhL,S1+hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,530,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],L1-hhL,S1-hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,530,40,40);		

// part2

		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,575,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],L1-hhL,S1-hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,575,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],L1+hhL,S1+hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,575,40,40);
		
/***************************************/
		}

		else if(KV.choice == 3){

			r1 = KV.base + 4;
			r2 = KV.base + 12;
			r3 = KV.base + 12;
			r4 = KV.base + 20;
			kakudo1 = 180;
			kakudo2 = 60;			
			kakudo3 = 60;
			kakudo4 = 180;			
		
// Result1-1(vivid)

		setBackground(new Color(KV.bg_r,KV.bg_g,KV.bg_b));
		g.setColor(Color.black);
		g.drawString("色相",0,20);
		
		g.drawString("base",115,15);		
		String angle1 = Integer.toString(kakudo1);
		g.drawString(angle1,80,15);		
		String angle2 = Integer.toString(kakudo2);
		g.drawString(angle2,160,15);
		
		RGB.toRGB(KV.vh[KV.base],KV.vl[KV.base],KV.vs[KV.base]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,20,40,40);
		l[0] = KV.vl[KV.base];
 
		if(r1 >= 24){
			r1 = r1 - 24;
		}
		RGB.toRGB(KV.vh[r1],KV.vl[r1],KV.vs[r1]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,20,40,40);
		l[1] = KV.vl[r1];
		
		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],KV.vl[r2],KV.vs[r2]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,20,40,40);
		l[2] = KV.vl[r2];
		meido.meido_3(l[0],l[1],l[2]);

// Result1-2(saturation & lightness : identical)

		g.setColor(Color.black);
		g.drawString("彩度 & 明度 ",0,80);
		g.drawString(":同一",0,95);

		RGB.toRGB(KV.vals[H],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,75,40,40);
 
		if(r1 >= 24){
			r1 = r1 - 24;
		}
		RGB.toRGB(KV.vh[r1],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,75,40,40);	
		
		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,75,40,40);	
	
// Result1-3(saturation : similar)

		g.setColor(Color.black);
		g.drawString("彩度 : 類似",0,135);	
		
		a1 = KV.vals[S] + KV.henka1;
	       	b1 = KV.vals[S] - KV.henka1;
		if(a1 >= 256){
			S1 = KV.vals[S] - (a1- 255);
		}else if(b1 < 0 ){
			S1 = KV.vals[S] + (KV.henka1 - KV.vals[S]);
		}else{
			S1 = KV.vals[S];
		}
	
// part1

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,130,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],KV.vals[L],S1+KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,130,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],KV.vals[L],S1-KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,130,40,40);		

// part2

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,175,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],KV.vals[L],S1-KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,175,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],KV.vals[L],S1+KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,175,40,40);		
	
// Result1-3(lightness : similar)

		g.setColor(Color.black);
		g.drawString("明度 : 類似",0,335);	
		
		a1 = KV.vals[L] + KV.henka1;
	       	b1 = KV.vals[L] - KV.henka1;
		if(a1 >= 256){
			L1 = KV.vals[L] - (a1- 255);
		}else if(b1 < 0 ){
			L1 = KV.vals[L] + (KV.henka1 - KV.vals[L]);
		}else{
			L1 = KV.vals[L];
		}
	
// part1

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,330,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}	
		RGB.toRGB(KV.vh[r1],L1+KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,330,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],L1-KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,330,40,40);		

// part2

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,375,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],L1-KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,375,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],L1+KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,375,40,40);		

// Result1-4(saturation ; contrast)

		g.setColor(Color.black);
		g.drawString("彩度 : 対照",0,235);	
		
		a1 = KV.vals[S] + KV.henka2;
		b1 = KV.vals[S] - KV.henka2;
		if(a1 >= 256){
			S1 = KV.vals[S] - (a1- 255);
		}else if(b1 < 0 ){
			S1 = KV.vals[S] + (KV.henka2 - KV.vals[S]);
		}else{
			S1 = KV.vals[S];
		}

// part1

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,230,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],KV.vals[L],S1+KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,230,40,40);	

		if(r2 >= 24){
				r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],KV.vals[L],S1-KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,230,40,40);		

// part2

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,275,40,40);
 
		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],KV.vals[L],S1-KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,275,40,40);	
		
		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],KV.vals[L],S1+KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,275,40,40);		

// Result1-4(lightness ; contrast)

		g.setColor(Color.black);
		g.drawString("明度 : 対照",0,435);	
		
		a1 = KV.vals[L] + KV.henka2;
		b1 = KV.vals[L] - KV.henka2;
		if(a1 >= 256){
			L1 = KV.vals[L] - (a1- 255);
		}else if(b1 < 0 ){
			L1 = KV.vals[L] + (KV.henka2 - KV.vals[L]);
		}else{
			L1 = KV.vals[L];
		}

// part1

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,430,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],L1+KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,430,40,40);	
		
		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],L1-KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,430,40,40);		

// part2

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,475,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],L1-KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,475,40,40);	
		
		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],L1+KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,475,40,40);		

/***** 類似&対照を考慮 *****/

		int aL,bL,aS,bS,hhL=0,hhS=0;

		if(meido.l_d > KV.meido_d){
			hhL = KV.henka2;hhS = KV.henka1;
		}
		else{
			hhL = KV.henka1;hhS = KV.henka1;
		}

		g.setColor(Color.black);
		g.drawString("調和",0,535);	

		aL = KV.vals[L] + hhL;
		bL = KV.vals[L] - hhL;
		aS = KV.vals[S] + hhS;
		bS = KV.vals[S] - hhS;
		if(aL >= 256){
			L1 = KV.vals[L] - (aL - 255);
		}else if(bL < 0 ){
			L1 = KV.vals[L] + (hhL - KV.vals[L]);
		}else{
			L1 = KV.vals[L];
		}
		if(aS >= 256){
			S1 = KV.vals[S] - (aS - 255);
		}else if(bS < 0 ){
			S1 = KV.vals[S] + (hhS - KV.vals[S]);
		}else{
			S1 = KV.vals[S];
		}
		
// part1		

		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,530,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],L1+hhL,S1+hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,530,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],L1-hhL,S1-hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,530,40,40);		

// part2

		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110,575,40,40);

		if(r1 >= 24){
			r1 = r1 - 24;
		}		
		RGB.toRGB(KV.vh[r1],L1-hhL,S1-hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110+40,575,40,40);	

		if(r2 >= 24){
			r2 = r2 - 24;
		}
		RGB.toRGB(KV.vh[r2],L1+hhL,S1+hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(110-40,575,40,40);
		
/***************************************/


// Result( 60 - 0 - 180 )
			
// Result2-1(vivid)
	
		g.setColor(Color.black);
		g.drawString("base",295,15);		
		String angle3 = Integer.toString(kakudo3);
		g.drawString(angle3,260,15);		
		String angle4 = Integer.toString(kakudo4);
		g.drawString(angle4,340,15);

		RGB.toRGB(KV.vh[KV.base],KV.vl[KV.base],KV.vs[KV.base]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290,20,40,40);
		l[0] = KV.vl[KV.base];

		if(r3 >= 24){
			r3 = r3 - 24;
		}
		RGB.toRGB(KV.vh[r3],KV.vl[r3],KV.vs[r3]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290+40,20,40,40);
		l[1] = KV.vl[r3];		
	
		if(r4 >= 24){
			r4 = r4 - 24;
		}
		RGB.toRGB(KV.vh[r4],KV.vl[r4],KV.vs[r4]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290-40,20,40,40);
		l[2] = KV.vl[r4];

		meido.meido_3(l[0],l[1],l[2]);
		
// Result2-2(saturation & lightness : identical)
		
		RGB.toRGB(KV.vals[H],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290,75,40,40);
 
		if(r3 >= 24){
			r3 = r3 - 24;
		}
		RGB.toRGB(KV.vh[r3],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290+40,75,40,40);		
		
		if(r4 >= 24){
			r4 = r4 - 24;
		}
		RGB.toRGB(KV.vh[r4],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290-40,75,40,40);		
	
// Result2-3(saturation : similar)

		a1 = KV.vals[S] + KV.henka1;
		b1 = KV.vals[S] - KV.henka1;
		if(a1 >= 256){
			S1 = KV.vals[S] - (a1- 255);
		}else if(b1 < 0 ){
			S1 = KV.vals[S] + (KV.henka1 - KV.vals[S]);
		}else{
			S1 = KV.vals[S];
		}

// part1
		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290,130,40,40);

		if(r3 >= 24){
			r3 = r3 - 24;
		}		
		RGB.toRGB(KV.vh[r3],KV.vals[L],S1+KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290+40,130,40,40);	
		
		if(r4 >= 24){
			r4 = r4 - 24;
		}
		RGB.toRGB(KV.vh[r4],KV.vals[L],S1-KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290-40,130,40,40);		

// part2

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290,175,40,40);

		if(r3 >= 24){
			r3 = r3 - 24;
		}		
		RGB.toRGB(KV.vh[r3],KV.vals[L],S1-KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290+40,175,40,40);	
		
		if(r4 >= 24){
			r4 = r4 - 24;
		}
		RGB.toRGB(KV.vh[r4],KV.vals[L],S1+KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290-40,175,40,40);		
	
// Result2-3(lightness : similar)

		a1 = KV.vals[L] + KV.henka1;
		b1 = KV.vals[L] - KV.henka1;
		if(a1 >= 256){
			L1 = KV.vals[L] - (a1- 255);
		}else if(b1 < 0 ){
			L1 = KV.vals[L] + (KV.henka1 - KV.vals[L]);
		}else{
			L1 = KV.vals[L];
		}

// part1
		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290,330,40,40);

		if(r3 >= 24){
			r3 = r3 - 24;
		}		
		RGB.toRGB(KV.vh[r3],L1+KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290+40,330,40,40);	
		
		if(r4 >= 24){
			r4 = r4 - 24;
		}
		RGB.toRGB(KV.vh[r4],L1-KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290-40,330,40,40);		

// part2

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290,375,40,40);

		if(r3 >= 24){
			r3 = r3 - 24;
		}		
		RGB.toRGB(KV.vh[r3],L1-KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290+40,375,40,40);	
		
		if(r4 >= 24){
			r4 = r4 - 24;
		}
		RGB.toRGB(KV.vh[r4],L1+KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290-40,375,40,40);		

// Result2-4(saturation ; contrast)	
	
		a1 = KV.vals[S] + KV.henka2;
		b1 = KV.vals[S] - KV.henka2;
		if(a1 >= 256){
			S1 = KV.vals[S] - (a1- 255);
		}else if(b1 < 0 ){
			S1 = KV.vals[S] + (KV.henka2 - KV. vals[S]);
		}else{
			S1 = KV.vals[S];
		}
		
// part1

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290,230,40,40);

		if(r3 >= 24){
			r3 = r3 - 24;
		}		
		RGB.toRGB(KV.vh[r3],KV.vals[L],S1+KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290+40,230,40,40);	
		
		if(r4 >= 24){
			r4 = r4 - 24;
		}
		RGB.toRGB(KV.vh[r4],KV.vals[L],S1-KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290-40,230,40,40);		

// part2

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290,275,40,40);

		if(r3 >= 24){
			r3 = r3 - 24;
		}		
		RGB.toRGB(KV.vh[r3],KV.vals[L],S1-KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290+40,275,40,40);	
		
		if(r4 >= 24){
			r4 = r4 - 24;
		}
		RGB.toRGB(KV.vh[r4],KV.vals[L],S1+KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290-40,275,40,40);		

// Result2-4(lightness ; contrast)	
	
		a1 = KV.vals[L] + KV.henka2;
		b1 = KV.vals[L] - KV.henka2;
		if(a1 >= 256){
			L1 = KV.vals[L] - (a1- 255);
		}else if(b1 < 0 ){
			L1 = KV.vals[L] + (KV.henka2 - KV.vals[L]);
		}else{
			L1 = KV.vals[L];
		}
		
// part1

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290,430,40,40);

		if(r3 >= 24){
			r3 = r3 - 24;
		}		
		RGB.toRGB(KV.vh[r3],L1+KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290+40,430,40,40);	
		
		if(r4 >= 24){
			r4 = r4 - 24;
		}
		RGB.toRGB(KV.vh[r4],L1-KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290-40,430,40,40);		

// part2

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290,475,40,40);

		if(r3 >= 24){
			r3 = r3 - 24;
		}		
		RGB.toRGB(KV.vh[r3],L1-KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290+40,475,40,40);	
		
		if(r4 >= 24){
			r4 = r4 - 24;
		}
		RGB.toRGB(KV.vh[r4],L1+KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290-40,475,40,40);

/***** 類似&対照を考慮 *****/

		if(meido.l_d > KV.meido_d){
			hhL = KV.henka2;hhS = KV.henka1;
		}
		else{
			hhL = KV.henka1;hhS = KV.henka1;
		}

		aL = KV.vals[L] + hhL;
		bL = KV.vals[L] - hhL;
		aS = KV.vals[S] + hhS;
		bS = KV.vals[S] - hhS;
		if(aL >= 256){
			L1 = KV.vals[L] - (aL - 255);
		}else if(bL < 0 ){
			L1 = KV.vals[L] + (hhL - KV.vals[L]);
		}else{
			L1 = KV.vals[L];
		}
		if(aS >= 256){
			S1 = KV.vals[S] - (aS - 255);
		}else if(bS < 0 ){
			S1 = KV.vals[S] + (hhS - KV.vals[S]);
		}else{
			S1 = KV.vals[S];
		}
		
// part1		

		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290,530,40,40);

		if(r3 >= 24){
			r3 = r3 - 24;
		}		
		RGB.toRGB(KV.vh[r3],L1+hhL,S1+hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290+40,530,40,40);	

		if(r4 >= 24){
			r4 = r4 - 24;
		}
		RGB.toRGB(KV.vh[r4],L1-hhL,S1-hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290-40,530,40,40);		

// part2

		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290,575,40,40);

		if(r3 >= 24){
			r3 = r3 - 24;
		}		
		RGB.toRGB(KV.vh[r3],L1-hhL,S1-hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290+40,575,40,40);	

		if(r4 >= 24){
			r4 = r4 - 24;
		}
		RGB.toRGB(KV.vh[r4],L1+hhL,S1+hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(290-40,575,40,40);
		
/***************************************/
		}			
	}

	public void update(Graphics g){
		paint(g);
	}
}

class Four extends Panel{

	int r,a1,b1,S1,L1;
	int l[] = new int[6];
    	final int RED = 0;
    	final int GRN = 1;
    	final int BLU = 2;
    	final int H = 3;
    	final int L = 4;
    	final int S = 5;

	int kakudo1,kakudo2,kakudo3;
	int X1 = 110; int X2 = 370;
	int Ang1,Ang2,Ang3,Ang4,Ang5,Ang6;
	
	public void init(){

		reshape(220,0,450,700);
	}

	public void paint(Graphics g){	
	
	int S1 = KV.vals[S]; int L1 = KV.vals[L];
		if(KV.choice == 6){
			Ang1 = 2; Ang2 = 4; Ang3 = 22;
			Ang4 = 2; Ang5 = 20; Ang6 = 22;
			kakudo1 = 30;kakudo2 = 30;kakudo3 = 60;
		}
		else if(KV.choice == 7){
			Ang1 = 4; Ang2 = 8; Ang3 = 20;
			Ang4 = 2; Ang5 = 16; Ang6 = 20;
			kakudo1 = 60;kakudo2 = 60;kakudo3 = 120;
		}						
		else if(KV.choice == 8){
			Ang1 = 6; Ang2 = 12; Ang3 = 18;
			Ang4 = 6; Ang5 = 12; Ang6 = 18;
			kakudo1 = 90;kakudo2 = 90;kakudo3 = 180;
		}			
		else if(KV.choice == 9){
			Ang1 = 8; Ang2 = 12; Ang3 = 20;
			Ang4 = 4; Ang5 = 12; Ang6 = 16;
			kakudo1 = 60;kakudo2 = 120;kakudo3 = 180;
		}
		else if(KV.choice == 10){
			Ang1 = 10; Ang2 = 12; Ang3 = 22;
			Ang4 = 2; Ang5 = 12; Ang6 = 14;
			kakudo1 = 30;kakudo2 = 150;kakudo3 = 180;
		}
		else if(KV.choice == 11){
			Ang1 = 2; Ang2 = 12; Ang3 = 22;
			Ang4 = 2; Ang5 = 12; Ang6 = 22;
			kakudo1 = 30;kakudo2 = 30;kakudo3 = 180;
		}
		else if(KV.choice == 12){
			Ang1 = 4; Ang2 = 12; Ang3 = 20;
			Ang4 = 4; Ang5 = 12; Ang6 = 20;
			kakudo1 = 60;kakudo2 = 60;kakudo3 = 180;
		}

// Result1(vivid)

		setBackground(new Color(KV.bg_r,KV.bg_g,KV.bg_b));
		g.setColor(Color.black);
		g.drawString("色相",X1 - 110,20);
		
		g.drawString("base",X1+5,15);		
		String angle1 = Integer.toString(kakudo1);
		g.drawString(angle1,X1-35,15);		
		String angle2 = Integer.toString(kakudo2);
		g.drawString(angle2,X1+45,15);	
		String angle3 = Integer.toString(kakudo3);
		g.drawString(angle3,X1+85,15);	

		RGB.toRGB(KV.vh[KV.base],KV.vl[KV.base],KV.vs[KV.base]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,20,40,40);
		l[0] = KV.vl[KV.base];
 
		r = KV.base + Ang1;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vl[r],KV.vs[r]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40,20,40,40);
		l[1] = KV.vl[r];		
	
		r = KV.base + Ang2;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vl[r],KV.vs[r]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40*2,20,40,40);	
		l[2] = KV.vl[r];	
	
		r = KV.base + Ang3;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vl[r],KV.vs[r]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1-40,20,40,40);	
		l[3] = KV.vl[r];
		meido.meido_4(l[0],l[1],l[2],l[3]);

// Result2(saturation & lightness : identical)

		g.setColor(Color.black);
		g.drawString("彩度 & 明度",X1 - 110,80);
		g.drawString(": 同一",X1 - 110,95);

		RGB.toRGB(KV.vals[H],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,75,40,40);
 
		r = KV.base + Ang1;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40,75,40,40);		
		
		r = KV.base + Ang2;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40*2,75,40,40);		
	
 		r = KV.base + Ang3;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1-40,75,40,40);		
	
// Result3(saturation : similar)

		g.setColor(Color.black);
		g.drawString("彩度 : 類似",X1-110,135);	
		
		a1 = KV.vals[S] + KV.henka1;
		b1 = KV.vals[S] - KV.henka1;

		if(a1 >= 256){
			S1 = KV.vals[S] - (a1- 255);
		}
		if(b1 < 0 ){
			S1 = KV.vals[S] + (KV.henka1 - KV.vals[S]);
		}

// part1

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,130,40,40);

 		r = KV.base + Ang1;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],KV.vals[L],S1+KV.henka1/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40,130,40,40);	

		r = KV.base + Ang2;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1+KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40*2,130,40,40);		

		r = KV.base + Ang3;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1-KV.henka1/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1-40,130,40,40);		

// part2

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,175,40,40);

 		r = KV.base + Ang1;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],KV.vals[L],S1-KV.henka1/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40,175,40,40);	

		r = KV.base + Ang2;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1-KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40*2,175,40,40);	

		r = KV.base + Ang3;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1+KV.henka1/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1-40,175,40,40);	

// Result3(lightness : similar)

		g.setColor(Color.black);
		g.drawString("明度 : 類似",X1-110,335);	
		
		a1 = KV.vals[L] + KV.henka1;
		b1 = KV.vals[L] - KV.henka1;

		if(a1 >= 256){
			L1 = KV.vals[L] - (a1- 255);
		}
		if(b1 < 0 ){
			L1 = KV.vals[L] + (KV.henka1 - KV.vals[L]);
		}

// part1

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,330,40,40);

 		r = KV.base + Ang1;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],L1+KV.henka1/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40,330,40,40);	

		r = KV.base + Ang2;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1+KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40*2,330,40,40);

		r = KV.base + Ang3;
		if(r >= 24){
			r = r - 24;
		 }                          
		RGB.toRGB(KV.vh[r],L1-KV.henka1/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1-40,330,40,40);		

// part2

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,375,40,40);

 		r = KV.base + Ang1;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],L1-KV.henka1/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40,375,40,40);	

		r = KV.base + Ang2;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1-KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40*2,375,40,40);	
			
		r = KV.base + Ang3;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1+KV.henka1/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1-40,375,40,40);	

// Result4(saturation ; contrast)

		g.setColor(Color.black);
		g.drawString("彩度 : 対照",X1 - 110,235);	
		
		a1 = KV.vals[S] + KV.henka2;
		b1 = KV.vals[S] - KV.henka2;

		if(a1 >= 256){
			S1 = KV.vals[S] - (a1- 255);
		}
		if(b1 < 0 ){
			S1 = KV.vals[S] + (KV.henka2 - KV.vals[S]);
		}

// part1

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,230,40,40);

 		r = KV.base + Ang1;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],KV.vals[L],S1+KV.henka2/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40,230,40,40);	

		r = KV.base + Ang2;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1+KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40*2,230,40,40);		

		r = KV.base + Ang3;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1-KV.henka2/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1-40,230,40,40);	

// part2

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,275,40,40);

 		r = KV.base + Ang1;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],KV.vals[L],S1-KV.henka2/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40,275,40,40);	

		r = KV.base + Ang2;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1-KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40*2,275,40,40);		

		r = KV.base + Ang3;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1+KV.henka2/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1-40,275,40,40);			

// Result4(lightness ; contrast)

		g.setColor(Color.black);
		g.drawString("明度 : 対照",X1-110,435);	
		
		a1 = KV.vals[L] + KV.henka2;
		b1 = KV.vals[L] - KV.henka2;

		if(a1 >= 256){
			L1 = KV.vals[L] - (a1- 255);
		}
		if(b1 < 0 ){
			L1 = KV.vals[L] + (KV.henka2 - KV.vals[L]);
		}

// part1

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,430,40,40);

 		r = KV.base + Ang1;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],L1+KV.henka2/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40,430,40,40);	

		r = KV.base + Ang2;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1+KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40*2,430,40,40);		

		r = KV.base + Ang3;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1-KV.henka2/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1-40,430,40,40);	

// part2

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,475,40,40);

 		r = KV.base + Ang1;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],L1-KV.henka2/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40,475,40,40);	

		r = KV.base + Ang2;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1-KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40*2,475,40,40);		

		r = KV.base + Ang3;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1+KV.henka2/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1-40,475,40,40);			

/***** 類似&対照を考慮 *****/

		int aL,bL,aS,bS,hhL=0,hhS=0;

		if(KV.choice == 8||KV.choice == 9||KV.choice == 10||KV.choice == 11){
			if(meido.l_d > KV.meido_d){
				hhL = KV.henka2;hhS = KV.henka1;
			}
			else{
				hhL = KV.henka1;hhS = KV.henka2;
			}
		}
		if(KV.choice == 6||KV.choice == 7||KV.choice == 12){
			if(meido.l_d > KV.meido_d){
				hhL = KV.henka2;hhS = KV.henka1;
			}
			else{
				hhL = KV.henka1;hhS = KV.henka1;
			}
		}

		g.setColor(Color.black);
		g.drawString("調和",X1-110,535);	

		aL = KV.vals[L] + hhL;
		bL = KV.vals[L] - hhL;
		aS = KV.vals[S] + hhS;
		bS = KV.vals[S] - hhS;
		if(aL >= 256){
			L1 = KV.vals[L] - (aL - 255);
		}else if(bL < 0 ){
			L1 = KV.vals[L] + (hhL - KV.vals[L]);
		}else{
			L1 = KV.vals[L];
		}
		if(aS >= 256){
			S1 = KV.vals[S] - (aS - 255);
		}else if(bS < 0 ){
			S1 = KV.vals[S] + (hhS - KV.vals[S]);
		}else{
			S1 = KV.vals[S];
		}

// part1

		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,530,40,40);

 		r = KV.base + Ang1;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],L1+hhL/2,S1+hhS/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40,530,40,40);	

		r = KV.base + Ang2;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1+hhL,S1+hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40*2,530,40,40);		

		r = KV.base + Ang3;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1-hhL/2,S1-hhS/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1-40,530,40,40);	

// part2

		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,575,40,40);

 		r = KV.base + Ang1;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],L1-hhL/2,S1-hhS/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40,575,40,40);	

		r = KV.base + Ang2;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1-hhL,S1-hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1+40*2,575,40,40);		

		r = KV.base + Ang3;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1+hhL/2,S1+hhS/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1-40,575,40,40);			
		
/***************************************/

// Result2-1(vivid)

		g.setColor(Color.black);
		g.drawString("base",X2+5,15);		
		angle1 = Integer.toString(kakudo1);
		g.drawString(angle1,X2+45,15);		
		angle2 = Integer.toString(kakudo2);
		g.drawString(angle2,X2-35,15);	
		angle3 = Integer.toString(kakudo3);
		g.drawString(angle3,X2-75,15);	

		RGB.toRGB(KV.vh[KV.base],KV.vl[KV.base],KV.vs[KV.base]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2,20,40,40);
		l[0] = KV.vl[KV.base];
 
		r = KV.base + Ang4;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vl[r],KV.vs[r]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2+40,20,40,40);
		l[1] = KV.vl[r];		
	
		r = KV.base + Ang6;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vl[r],KV.vs[r]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40,20,40,40);
		l[2] = KV.vl[r];		
	
		r = KV.base + Ang5;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vl[r],KV.vs[r]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40*2,20,40,40);
		l[3] = KV.vl[r];

		meido.meido_4(l[0],l[1],l[2],l[3]);

// Result2-2(saturation & lightness : identical)

		RGB.toRGB(KV.vals[H],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2,75,40,40);
 
		r = KV.base + Ang4;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2+40,75,40,40);		
		
		r = KV.base + Ang6;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40,75,40,40);		
	
 		r = KV.base + Ang5;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40*2,75,40,40);	

// Result3(saturation : similar)

		a1 = KV.vals[S] + KV.henka1;
		b1 = KV.vals[S] - KV.henka1;

		if(a1 >= 256){
			S1 = KV.vals[S] - (a1- 255);
		}
		if(b1 < 0 ){
		S1 = KV.vals[S] + (KV.henka1 - KV.vals[S]);
		}

// part1

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2,130,40,40);

 		r = KV.base + Ang4;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],KV.vals[L],S1+KV.henka1/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2+40,130,40,40);	

		r = KV.base + Ang6;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1-KV.henka1/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40,130,40,40);		

		r = KV.base + Ang5;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1-KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40*2,130,40,40);		

// part2

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2,175,40,40);

 		r = KV.base + Ang4;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],KV.vals[L],S1-KV.henka1/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2+40,175,40,40);	

		r = KV.base + Ang6;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1+KV.henka1/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40,175,40,40);	
			
		r = KV.base + Ang5;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1+KV.henka1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40*2,175,40,40);	

// Result3(lightness : similar)

		a1 = KV.vals[L] + KV.henka1;
		b1 = KV.vals[L] - KV.henka1;

		if(a1 >= 256){
			L1 = KV.vals[L] - (a1- 255);
		}
		if(b1 < 0 ){
			L1 = KV.vals[L] + (KV.henka1 - KV.vals[L]);
		}

// part1

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2,330,40,40);

 		r = KV.base + Ang4;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],L1+KV.henka1/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2+40,330,40,40);	

		r =KV. base + Ang6;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1-KV.henka1/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40,330,40,40);		

		r = KV.base + Ang5;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1-KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40*2,330,40,40);		

// part2

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2,375,40,40);

 		r = KV.base + Ang4;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],L1-KV.henka1/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2+40,375,40,40);	

		r = KV.base + Ang6;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1+KV.henka1/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40,375,40,40);	
			
		r = KV.base + Ang5;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1+KV.henka1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40*2,375,40,40);	

// Result4(saturation ; contrast)
		
		a1 = KV.vals[S] + KV.henka2;
		b1 = KV.vals[S] - KV.henka2;

		if(a1 >= 256){
			S1 = KV.vals[S] - (a1- 255);
		}
		if(b1 < 0 ){
			S1 = KV.vals[S] + (KV.henka2 - KV.vals[S]);
		}

// part1

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2,230,40,40);

 		r = KV.base + Ang4;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],KV.vals[L],S1+KV.henka2/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2+40,230,40,40);	

		r = KV.base + Ang6;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1-KV.henka2/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40,230,40,40);		

		r = KV.base + Ang5;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1-KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40*2,230,40,40);	

// part2

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2,275,40,40);

 		r = KV.base + Ang4;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],KV.vals[L],S1-KV.henka2/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2+40,275,40,40);	

		r = KV.base + Ang6;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1+KV.henka2/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40,275,40,40);		

		r = KV.base + Ang5;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],KV.vals[L],S1+KV.henka2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40*2,275,40,40);	

// Result4(lightness ; contrast)
		
		a1 = KV.vals[L] + KV.henka2;
		b1 = KV.vals[L] - KV.henka2;

		if(a1 >= 256){
			L1 = KV.vals[L] - (a1- 255);
		}
		if(b1 < 0 ){
			L1 = KV.vals[L] + (KV.henka2 - KV.vals[L]);
		}

// part1

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2,430,40,40);

 		r = KV.base + Ang4;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],L1+KV.henka2/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2+40,430,40,40);	

		r = KV.base + Ang6;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1-KV.henka2/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40,430,40,40);		

		r = KV.base + Ang5;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1-KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40*2,430,40,40);	

// part2

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2,475,40,40);

 		r = KV.base + Ang4;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],L1-KV.henka2/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2+40,475,40,40);	

		r = KV.base + Ang6;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1+KV.henka2/2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40,475,40,40);		

		r = KV.base + Ang5;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1+KV.henka2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40*2,475,40,40);	

/***** 類似&対照を考慮 *****/

		if(KV.choice == 8||KV.choice == 9||KV.choice == 10||KV.choice == 11){
			if(meido.l_d > KV.meido_d){
				hhL = KV.henka2;hhS = KV.henka1;
			}
			else{
				hhL = KV.henka1;hhS = KV.henka2;
			}
		}
		if(KV.choice == 6||KV.choice == 7||KV.choice == 12){
			if(meido.l_d > KV.meido_d){
				hhL = KV.henka2;hhS = KV.henka1;
			}
			else{
				hhL = KV.henka1;hhS = KV.henka1;
			}
		}

		aL = KV.vals[L] + hhL;
		bL = KV.vals[L] - hhL;
		aS = KV.vals[S] + hhS;
		bS = KV.vals[S] - hhS;
		if(aL >= 256){
			L1 = KV.vals[L] - (aL - 255);
		}else if(bL < 0 ){
			L1 = KV.vals[L] + (hhL - KV.vals[L]);
		}else{
			L1 = KV.vals[L];
		}
		if(aS >= 256){
			S1 = KV.vals[S] - (aS - 255);
		}else if(bS < 0 ){
			S1 = KV.vals[S] + (hhS - KV.vals[S]);
		}else{
			S1 = KV.vals[S];
		}

// part1

		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2,530,40,40);

 		r = KV.base + Ang4;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],L1+hhL/2,S1+hhS/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2+40,530,40,40);	

		r = KV.base + Ang6;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1-hhL/2,S1-hhS/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40,530,40,40);		

		r = KV.base + Ang5;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1-hhL,S1-hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40*2,530,40,40);	

// part2

		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2,575,40,40);

 		r = KV.base + Ang4;
		if(r >= 24){
			r = r - 24;
		}		
		RGB.toRGB(KV.vh[r],L1-hhL/2,S1-hhS/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2+40,575,40,40);	

		r = KV.base + Ang6;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1+hhL/2,S1+hhS/2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40,575,40,40);		

		r = KV.base + Ang5;
		if(r >= 24){
			r = r - 24;
		}
		RGB.toRGB(KV.vh[r],L1+hhL,S1+hhS);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X2-40*2,575,40,40);			
		
/***************************************/			
	}

	public void update(Graphics g){
		paint(g);
	}
}

class Five extends Panel{

	int r,a1,a2,b1,b2,S1,S2,L1,L2;
	int l[] = new int[6];
    	final int RED = 0;
    	final int GRN = 1;
    	final int BLU = 2;
    	final int H = 3;
    	final int L = 4;
    	final int S = 5;

	int kakudo1,kakudo2,kakudo3,kakudo4;
	
	public void init(){

		reshape(220,0,450,700);
	}

	public void paint(Graphics g){	
	
		if(KV.choice == 13){
			kakudo1 = 60;kakudo2 = 30;kakudo3 = 30;kakudo4 = 60;
		}
		else if(KV.choice == 14){
			kakudo1 = 120;kakudo2 = 60;kakudo3 = 60;kakudo4 = 120;
		}						

// Result1(vivid)

		setBackground(new Color(KV.bg_r,KV.bg_g,KV.bg_b));
		g.setColor(Color.black);
		g.drawString("色相",0,20);
			
		g.drawString("base",155,15);
		
		String angle2 = Integer.toString(kakudo1);
		g.drawString(angle2,80,15);
		String angle3 = Integer.toString(kakudo2);
		g.drawString(angle3,120,15);		
		String angle4 = Integer.toString(kakudo3);
		g.drawString(angle4,200,15);
		String angle5 = Integer.toString(kakudo4);
		g.drawString(angle5,240,15);
		
		RGB.toRGB(KV.vh[KV.base],KV.vl[KV.base],KV.vs[KV.base]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(150,20,40,40);
		l[0] = KV.vl[KV.base];
 
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*(i+1);}
			else if(KV.choice == 14)
			{r = KV.base + 4*(i+1);}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vl[r],KV.vs[r]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(150+40*(i+1),20,40,40);
			l[i+1] = KV.vl[r];
		}
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*i + 20;}
			else if(KV.choice == 14)
			{r = KV.base + 4*i + 16;}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vl[r],KV.vs[r]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(70+40*i,20,40,40);	
			l[i+3] = KV.vl[r];	
		}
		meido.meido_5(l[0],l[1],l[2],l[3],l[4]);

// Result2(saturation & lightness : identical)

		g.setColor(Color.black);
		g.drawString("彩度 & 明度",0,80);
		g.drawString(": 同一",0,95);

		RGB.toRGB(KV.vals[H],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(150,75,40,40);
 
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*(i+1);}
			else if(KV.choice == 14)
			{r = KV.base + 4*(i+1);}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(150+40*(i+1),75,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*i + 20;}
			else if(KV.choice == 14)
			{r = KV.base + 4*i + 16;}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(70+40*i,75,40,40);		
		}

//  Result1(ruiji)
	
// saturation : ruiji

		g.setColor(Color.black);
		g.drawString("彩度 : 類似",0,135);	
		
		a1 = KV.vals[S] + KV.henka1;
		b1 = KV.vals[S] - KV.henka1;
		if(a1 >= 256){
			S1 = KV.vals[S] - (a1- 255);
		}
		if(b1 < 0 ){
			S1 = KV.vals[S] + (KV.henka1 - KV.vals[S]);
		}
		if(a1 <= 255 && b1 >= 0){
			S1 = KV.vals[S];
		}		

// part1

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(150,130,40,40);
 
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*(i+1);}
			else if(KV.choice == 14)
			{r = KV.base + 4*(i+1);}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S1+(KV.henka1/2)*(i+1));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(150+40*(i+1),130,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*i + 20;}
			else if(KV.choice == 14)
			{r = KV.base + 4*i + 16;}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S1-(KV.henka1/2)*(2-i));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(70+40*i,130,40,40);		
		}
			
// part2
  
		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(150,175,40,40);

		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*(i+1);}
			else if(KV.choice == 14)
			{r = KV.base + 4*(i+1);}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S1-(KV.henka1/2)*(i+1));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(150+40*(i+1),175,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*i + 20;}
			else if(KV.choice == 14)
			{r = KV.base + 4*i + 16;}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S1+(KV.henka1/2)*(2-i));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(70+40*i,175,40,40);		
		}
	
// lightness : ruiji

		g.setColor(Color.black);
		g.drawString("明度 : 類似",0,335);	
		
		a1 = KV.vals[L] + KV.henka1;
		b1 = KV.vals[L] - KV.henka1;
		if(a1 >= 256){
			L1 = KV.vals[L] - (a1- 255);
		}
		if(b1 < 0 ){
			L1 = KV.vals[L] + (KV.henka1 - KV.vals[L]);
		}
		if(a1 <= 255 && b1 >= 0){
			L1 = KV.vals[L];
		}		

// part1

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(150,330,40,40);
 
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*(i+1);}
			else if(KV.choice == 14)
			{r = KV.base + 4*(i+1);}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1+(KV.henka1/2)*(i+1),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(150+40*(i+1),330,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*i + 20;}
			else if(KV.choice == 14)
			{r = KV.base + 4*i + 16;}
			if(r >= 24){
	 			r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1-(KV.henka1/2)*(2-i),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(70+40*i,330,40,40);		
		}
			
// part2
  
		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(150,375,40,40);

		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*(i+1);}
			else if(KV.choice == 14)
			{r = KV.base + 4*(i+1);}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1-(KV.henka1/2)*(i+1),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(150+40*(i+1),375,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*i + 20;}
			else if(KV.choice == 14)
			{r = KV.base + 4*i + 16;}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1+(KV.henka1/2)*(2-i),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(70+40*i,375,40,40);		
		}

// saturation : taishou  
 
		g.setColor(Color.black);
		g.drawString("彩度 : 対照",0,235);	

		a2 = KV.vals[S] + KV.henka2;
	        b2 = KV.vals[S] - KV.henka2;

		if(a2 >= 256){
			S2 = KV.vals[S] - (a2- 255);
		}
		if(b2 < 0 ){
			S2 = KV.vals[S] + (KV.henka2 - KV.vals[S]);
		}
		if(a2 <= 255 && b2 >= 0){
			S2 = KV.vals[S];
		}		

// part1

		RGB.toRGB(KV.vals[H],KV.vals[L],S2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(150,230,40,40);

		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*(i+1);}
			else if(KV.choice == 14)
			{r = KV.base + 4*(i+1);}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S2+(KV.henka2/2)*(i+1));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(150+40*(i+1),230,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*i + 20;}
			else if(KV.choice == 14)
			{r = KV.base + 4*i + 16;}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S2-(KV.henka2/2)*(2-i));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(70+40*i,230,40,40);		
		}

// part2

		RGB.toRGB(KV.vals[H],KV.vals[L],S2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(150,275,40,40);

		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*(i+1);}
			else if(KV.choice == 14)
			{r = KV.base + 4*(i+1);}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S2-(KV.henka2/2)*(i+1));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(150+40*(i+1),275,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*i + 20;}
			else if(KV.choice == 14)
			{r = KV.base + 4*i + 16;}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S2+(KV.henka2/2)*(2-i));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(70+40*i,275,40,40);		
		}

 // lightness : taishou  
 
		g.setColor(Color.black);
		g.drawString("明度 : 対照",0,435);	

		a2 = KV.vals[L] + KV.henka2;
	        b2 = KV.vals[L] - KV.henka2;

		if(a2 >= 256){
			L2 = KV.vals[L] - (a2- 255);
		}
		if(b2 < 0 ){
			L2 = KV.vals[L] + (KV.henka2 - KV.vals[L]);
		}
		if(a2 <= 255 && b2 >= 0){
			L2 = KV.vals[L];
		}		

// part1

		RGB.toRGB(KV.vals[H],L2,KV.vals[L]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(150,430,40,40);

		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*(i+1);}
			else if(KV.choice == 14)
			{r = KV.base + 4*(i+1);}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L2+(KV.henka2/2)*(i+1),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(150+40*(i+1),430,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*i + 20;}
			else if(KV.choice == 14)
			{r = KV.base + 4*i + 16;}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L2-(KV.henka2/2)*(2-i),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(70+40*i,430,40,40);		
		}

// part2

		RGB.toRGB(KV.vals[H],L2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(150,475,40,40);

		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*(i+1);}
			else if(KV.choice == 14)
			{r = KV.base + 4*(i+1);}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L2-(KV.henka2/2)*(i+1),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(150+40*(i+1),475,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*i + 20;}
			else if(KV.choice == 14)
			{r = KV.base + 4*i + 16;}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L2+(KV.henka2/2)*(2-i),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(70+40*i,475,40,40);		
		}

/***** 類似&対照を考慮 *****/

		int aL,bL,aS,bS,hhL=0,hhS=0;

		if(KV.choice == 13||KV.choice == 14){
			if(meido.l_d > KV.meido_d){
				hhL = KV.henka2;hhS = KV.henka1;
			}
			else{
				hhL = KV.henka1;hhS = KV.henka2;
			}
		}

		g.setColor(Color.black);
		g.drawString("調和",0,535);

		aL = KV.vals[L] + hhL;
		bL = KV.vals[L] - hhL;
		aS = KV.vals[S] + hhS;
		bS = KV.vals[S] - hhS;
		if(aL >= 256){
			L1 = KV.vals[L] - (aL - 255);
		}else if(bL < 0 ){
			L1 = KV.vals[L] + (hhL - KV.vals[L]);
		}else{
			L1 = KV.vals[L];
		}
		if(aS >= 256){
			S1 = KV.vals[S] - (aS - 255);
		}else if(bS < 0 ){
			S1 = KV.vals[S] + (hhS - KV.vals[S]);
		}else{
			S1 = KV.vals[S];
		}
// part1

		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(150,530,40,40);
 
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*(i+1);}
			else if(KV.choice == 14)
			{r = KV.base + 4*(i+1);}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1+(hhL/2)*(i+1),S1+(hhS/2)*(i+1));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(150+40*(i+1),530,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*i + 20;}
			else if(KV.choice == 14)
			{r = KV.base + 4*i + 16;}
			if(r >= 24){
	 			r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1-(hhL/2)*(2-i),S1-(hhS/2)*(2-i));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(70+40*i,530,40,40);		
		}
			
// part2
  
		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(150,575,40,40);

		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*(i+1);}
			else if(KV.choice == 14)
			{r = KV.base + 4*(i+1);}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1-(hhL/2)*(i+1),S1-(hhS/2)*(i+1));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(150+40*(i+1),575,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			if(KV.choice == 13)
			{r = KV.base + 2*i + 20;}
			else if(KV.choice == 14)
			{r = KV.base + 4*i + 16;}
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1+(hhL/2)*(2-i),S1+(hhS/2)*(2-i));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(70+40*i,575,40,40);		
		}	
/***************************************/

	}

	public void update(Graphics g){
		paint(g);
	}
}

class Six extends Panel{

	int X1 = 150;
	int r,a1,a2,b1,b2,S1,S2,L1,L2;
	int l[] = new int[6];
    	final int RED = 0;
    	final int GRN = 1;
    	final int BLU = 2;
    	final int H = 3;
    	final int L = 4;
    	final int S = 5;

	public void init(){

		reshape(220,0,450,700);
	}

	public void paint(Graphics g){	

		S1 = KV.vals[S]; S2 = KV.vals[S]; L1 = KV.vals[L]; L2 = KV.vals[L];	

// Result1(vivid)

		setBackground(new Color(KV.bg_r,KV.bg_g,KV.bg_b));
		g.setColor(Color.black);
		g.drawString("色相",0,20);
		
		g.drawString("base",X1+5,15);
		
		String angle2 = Integer.toString(120);
		g.drawString(angle2,X1-70,15);
		String angle3 = Integer.toString(60);
		g.drawString(angle3,X1-30,15);		
		String angle4 = Integer.toString(60);
		g.drawString(angle4,X1+50,15);
		String angle5 = Integer.toString(120);
		g.drawString(angle5,X1+90,15);
		String angle6 = Integer.toString(180);
		g.drawString(angle6,X1+130,15);

		RGB.toRGB(KV.vh[KV.base],KV.vl[KV.base],KV.vs[KV.base]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,20,40,40);
		l[0] = KV.vl[KV.base];
 
		for(int i = 0; i < 3; i=i+1){
			r = KV.base + 4*(i+1);
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vl[r],KV.vs[r]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1+40*(i+1),20,40,40);
			l[i+1] = KV.vl[r];
		}
		for(int i = 0; i < 2; i=i+1){
			r = KV.base + 4*i + 16;
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vl[r],KV.vs[r]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1-80+40*i,20,40,40);
			l[i+4] = KV.vl[r];		
		}
		meido.meido_6(l[0],l[1],l[2],l[3],l[4],l[5]);

// Result2(saturation & lightness : identical)

		g.setColor(Color.black);
		g.drawString("彩度 & 明度",0,80);
		g.drawString(": 同一",0,95);

		RGB.toRGB(KV.vals[H],KV.vals[L],KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,75,40,40);
 
		for(int i = 0; i < 3; i=i+1){
			r = KV.base + 4*(i+1);
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1+40*(i+1),75,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			r = KV.base + 4*i + 16;
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1-80+40*i,75,40,40);				}

//  Result1(ruiji)
	
// saturation : ruiji

		g.setColor(Color.black);
		g.drawString("彩度 : 類似",0,135);	
		
		a1 = KV.vals[S] + KV.henka1;
		b1 = KV.vals[S] - KV.henka1;
		if(a1 >= 256){
			S1 = KV.vals[S] - (a1- 255);
		}
		if(b1 < 0 ){
			S1 = KV.vals[S] + (KV.henka1 - KV.vals[S]);
		}
		if(a1 <= 255 && b1 >= 0){
			S1 = KV.vals[S];
		}		

// part1

		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,130,40,40);
 
		for(int i = 0; i < 3; i=i+1){
			r = KV.base + 4*(i+1);
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S1+(KV.henka1/3)*(i+1));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1+40*(i+1),130,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			r = KV.base + 4*i + 16;
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S1-(KV.henka1/2)*(2-i));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1-80+40*i,130,40,40);				}
			
// part2
	  
		RGB.toRGB(KV.vals[H],KV.vals[L],S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,175,40,40);

		for(int i = 0; i < 3; i=i+1){
			r = KV.base + 4*(i+1);
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S1-(KV.henka1/3)*(i+1));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1+40*(i+1),175,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			r = KV.base + 4*i + 16;
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S1+(KV.henka1/2)*(2-i));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1-80+40*i,175,40,40);				}
	
// lightness : ruiji

		g.setColor(Color.black);
		g.drawString("明度 : 類似",0,335);	
		
	 	a1 = KV.vals[L] + KV.henka1;
	 	b1 = KV.vals[L] - KV.henka1;
		if(a1 >= 256){
			L1 = KV.vals[L] - (a1- 255);
		}
		if(b1 < 0 ){
			L1 = KV.vals[L] + (KV.henka1 - KV.vals[L]);
		}
		if(a1 <= 255 && b1 >= 0){
			L1 = KV.vals[L];
		}		

// part1

		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,330,40,40);
 
		for(int i = 0; i < 3; i=i+1){
			r = KV.base + 4*(i+1);
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1+(KV.henka1/3)*(i+1),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1+40*(i+1),330,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			r = KV.base + 4*i + 16;
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1-(KV.henka1/2)*(2-i),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1-80+40*i,330,40,40);				}
			
// part2
	  
		RGB.toRGB(KV.vals[H],L1,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,375,40,40);

		for(int i = 0; i < 3; i=i+1){
			r = KV.base + 4*(i+1);
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1-(KV.henka1/3)*(i+1),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1+40*(i+1),375,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			r = KV.base + 4*i + 16;
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1+(KV.henka1/2)*(2-i),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1-80+40*i,375,40,40);				}

// saturation : contrast 

		g.setColor(Color.black);
		g.drawString("彩度 : 対照",0,235);	

		a2 = KV.vals[S] + KV.henka2;
	        b2 = KV.vals[S] - KV.henka2;

		if(a2 >= 256){
			S2 = KV.vals[S] - (a2- 255);
		}
		if(b2 < 0 ){
			S2 = KV.vals[S] + (KV.henka2 - KV.vals[S]);
		}
		if(a2 <= 255 && b2 >= 0){
			S2 = KV.vals[S];
		}		

// part1

		RGB.toRGB(KV.vals[H],KV.vals[L],S2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,230,40,40);

		for(int i = 0; i < 3; i=i+1){
			r = KV.base + 4*(i+1);
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S2+(KV.henka2/3)*(i+1));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1+40*(i+1),230,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			r = KV.base + 4*i + 16;
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S2-(KV.henka2/2)*(2-i));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1-80+40*i,230,40,40);				}

// part2

		RGB.toRGB(KV.vals[H],KV.vals[L],S2);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,275,40,40);

		for(int i = 0; i < 3; i=i+1){
			r = KV.base + 4*(i+1);
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S2-(KV.henka2/3)*(i+1));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1+40*(i+1),275,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			r = KV.base + 4*i + 16;
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],KV.vals[L],S2+(KV.henka2/2)*(2-i));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1-80+40*i,275,40,40);				}

// lightness : contrast 

		g.setColor(Color.black);
		g.drawString("明度 : 対照",0,435);	

		a2 = KV.vals[L] + KV.henka2;
	        b2 = KV.vals[L] - KV.henka2;

		if(a2 >= 256){
			L2 = KV.vals[L] - (a2- 255);
		}
		if(b2 < 0 ){
			L2 = KV.vals[L] + (KV.henka2 - KV.vals[L]);
		}
		if(a2 <= 255 && b2 >= 0){
			L2 = KV.vals[L];
		}		

// part1

		RGB.toRGB(KV.vals[H],L2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,430,40,40);

		for(int i = 0; i < 3; i=i+1){
			r = KV.base + 4*(i+1);
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L2+(KV.henka2/3)*(i+1),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1+40*(i+1),430,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			r = KV.base + 4*i + 16;
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L2-(KV.henka2/2)*(2-i),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1-80+40*i,430,40,40);				}

// part2

		RGB.toRGB(KV.vals[H],L2,KV.vals[S]);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,475,40,40);

		for(int i = 0; i < 3; i=i+1){
			r = KV.base + 4*(i+1);
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L2-(KV.henka2/3)*(i+1),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1+40*(i+1),475,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			r = KV.base + 4*i + 16;
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L2+(KV.henka2/2)*(2-i),KV.vals[S]);
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1-80+40*i,475,40,40);				}

/***** 類似&対照を考慮 *****/

		int aL,bL,aS,bS,hhL=0,hhS=0;

		if(KV.choice == 15){
			if(meido.l_d > KV.meido_d){
				hhL = KV.henka2;hhS = KV.henka1;
			}
			else{
				hhL = KV.henka1;hhS = KV.henka2;
			}
		}

		g.setColor(Color.black);
		g.drawString("調和",0,535);	

		aL = KV.vals[L] + hhL;
		bL = KV.vals[L] - hhL;
		aS = KV.vals[S] + hhS;
		bS = KV.vals[S] - hhS;
		if(aL >= 256){
			L1 = KV.vals[L] - (aL - 255);
		}else if(bL < 0 ){
			L1 = KV.vals[L] + (hhL - KV.vals[L]);
		}else{
			L1 = KV.vals[L];
		}
		if(aS >= 256){
			S1 = KV.vals[S] - (aS - 255);
		}else if(bS < 0 ){
			S1 = KV.vals[S] + (hhS - KV.vals[S]);
		}else{
			S1 = KV.vals[S];
		}

// part1

		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,530,40,40);

		for(int i = 0; i < 3; i=i+1){
			r = KV.base + 4*(i+1);
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1+(hhL/3)*(i+1),S1+(hhS/3)*(i+1));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1+40*(i+1),530,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			r = KV.base + 4*i + 16;
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1-(hhL/2)*(2-i),S1-(hhS/2)*(2-i));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1-80+40*i,530,40,40);				}

// part2

		RGB.toRGB(KV.vals[H],L1,S1);
		g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
		g.fillRect(X1,575,40,40);

		for(int i = 0; i < 3; i=i+1){
			r = KV.base + 4*(i+1);
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1-(hhL/3)*(i+1),S1-(hhS/3)*(i+1));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1+40*(i+1),575,40,40);				}
		for(int i = 0; i < 2; i=i+1){
			r = KV.base + 4*i + 16;
			if(r >= 24){
				r = r - 24;
			}
			RGB.toRGB(KV.vh[r],L1+(hhL/2)*(2-i),S1+(hhS/2)*(2-i));
			g.setColor(new Color(KV.vals[RED],KV.vals[GRN],KV.vals[BLU]));
			g.fillRect(X1-80+40*i,575,40,40);				}	
/***************************************/	
	}

	public void update(Graphics g){
		paint(g);
	}
}
	

matunaga@ke.ics.saitama-u.ac.jp