package sample.web3d;

import static util.Generic3DUtil.*;


public class TestAPI3D {
	
	private static int color;
	
	public static void main(String[] args) {
		start();
		
		pushMatrix();
		translate(-125, 0, 0);
		fill(color = hsl360(PHYLLOTAXIS360, 100, 50));
		sphere(10);                                     // 球
		
		translate(50, 0, 0);
		fill(color = rotateH360(color, PHYLLOTAXIS360));
		box(20, 20, 20);                                // 直方体
		
		translate(50, 0, 0);
		fill(color = rotateH360(color, PHYLLOTAXIS360));
		cone(10, 20);                                   // 円錐
		
		translate(50, 0, 0);
		fill(color = rotateH360(color, PHYLLOTAXIS360));
		cylinder(10, 20);                               // 円柱
		
		translate(50, 0, 0);
		pushMatrix();
		  scale(0.2, 0.2, 0.2);
		  translate(0, -60, 0);
		  rotateY(-2*PI/3);
		  object("duck.dae");                           // COLLADAオブジェクト
		popMatrix();
		
		translate(50, 0, 0);
		image("hidari3tomoe.png", 0, 0, 0, 20, 20);     // 画像	
		popMatrix();
		
		pushMatrix();
		translate(-125, 60, -60);
		
		fill(color = rotateH360(color, PHYLLOTAXIS360));
		pushMatrix();
		  rotateX(-PI/4);
		  ellipse(0, 0, 20, 20);                         // 楕円 （厚みなし） 
		popMatrix();
		
		translate(50, 0, 0);
		fill(color = rotateH360(color, PHYLLOTAXIS360));
		pushMatrix();
		  translate(-20, 0, 0);
		  rotateX(-PI/4);
		  textFont("monospace", 10);
		  text("Hello,", 0, 0, 0);                       // 文字列 （厚みなし）
		popMatrix();

		thickness(5);                                    // 平面図形に厚みをセット
		
		translate(50, 0, 0);
		fill(color = rotateH360(color, PHYLLOTAXIS360));
		pushMatrix();
		  rotateX(-PI/4);
		  ellipse(0, 0, 20, 20);                         // 楕円 （厚みつき）
		popMatrix();
		
		translate(50, 0, 0);
		fill(color = rotateH360(color, PHYLLOTAXIS360));
		pushMatrix();
		  rotateY(-PI/6);
		  translate(-20, 0, 0);
//		  textFont("monospace", 10);
		  text("World", 0, 0, 0);                        // 文字列 （厚みつき）
		popMatrix();
		
		translate(50, 0, 0);
		fill(color = rotateH360(color, PHYLLOTAXIS360));
		pushMatrix();
		  rotateY(-PI/6);
		  rect(-14.14, -10, 28.28, 20);                  // 長方形 （厚みつき）
		popMatrix();
		
		translate(50, 0, 0);
		fill(color = rotateH360(color, PHYLLOTAXIS360));
		pushMatrix();
		scale(0.25, 0.25, 1);
		rotateX(PI);
		translate(0, -40, 0);
		
		// http://blog.burlock.org/html5/130-path  via  examples/webgl_geometry_shapes.html
		begin2DShape();                                   // 2D図形 （厚みつき）
		vertex2D(25, 25);
		bezierVertex2D( 25,  25,  20,   0,   0,   0);
		bezierVertex2D(-30,   0, -30,  35, -30,  35);
		bezierVertex2D(-30,  55, -10,  77,  25,  95);
		bezierVertex2D( 60,  77,  80,  55,  80,  35);
		bezierVertex2D( 80,  35,  80,   0,  50,   0);
		bezierVertex2D( 35,   0,  25,  25,  25,  25);
		end2DShape();	
		popMatrix();

		popMatrix();
		
		thickness(0);
		translate(0, 30, 60);
		pushMatrix();
		rotateZ(PI/6);
		translate(-100, 0, 0);
		textFont("monospace", 16);
		fill(color = rotateH360(color, PHYLLOTAXIS360));
		fillOpacity(0.2);
		text("3D API examples");
		popMatrix();
		
		finish();
		return;
	}

}
