package sample.svg;
import static util.SVGUtil.*;

public class CharRainbow2 {
    private static final String str[] = {
        "&#x1f337;",
        "香",
        "&#x1f338;",
        "川", 
        "&#x1f339;",
        "大", 
        "&#x1f33a;",
        "学", 
        "&#x1f33b;",
        "工", 
        "&#x1f33c;",
        "学", 
        "&#x1f340;",
        "部",
        "&#x1f341;",
        "&#x1f345;",
        "&#x1f347;",
        "&#x1f34a;",
        "&#x1f34c;",
        "&#x1f34d;",
        "&#x1f34e;",
        "&#x1f351;",
        "&#x1f352;",
        "&#x1f353;",
    };
    
    private static final int numStr = str.length;
    private static int k = 0;
	
	private static String nextStr() {
	    String ret = str[k++];
	    if (k >= numStr) {
	        k=0;
	    }
	    return ret;
	}

	private static final double hues[] = { 0, 0.111, 0.222, 0.333, 0.5, 0.666, 0.777 }; /* これくらいが自然？ */
	private static final double maxR = 115, minR = 85;  /* 外側の虹、内側の虹の半径 */
	private static final int space = 7;  /* 文字の間隔の目安 */
	private static final int num = hues.length;   /* 虹の色数 */

	public static void main(String[] args) {
	    int i, j;
	    double x0 = centerX(), y0 = centerY()*1.6;
	    double fontSize = 6;    /* フォントサイズ */

	    start();
	    rulers();
	    textFont("Arial", fontSize);             
	    for (i=0; i<num; i++) {
	        double r, len;
	        int n; 
	        r = maxR + (minR-maxR)/(num-1)*i;
	        len = PI*r;
	        n = (int) (len / space); 
	        fill(hsb1(hues[i], 1, 1));
	        for (j=0; j<=n; j++) {
	            double angle = - PI +  PI * j / n;
	            double x = Math.cos(angle), y = Math.sin(angle);
	            pushMatrix();
	            translate(x0+r*x, y0+r*y);
	            rotate(angle+PI/2);
	            translate(-fontSize/2, fontSize/2);
	            text(nextStr(), 0, 0);
	            popMatrix();
	        } 
	    }
	    finish();
	}
}
