import de.grogra.billboard.*;
import de.grogra.billboard.vrml.*;
import java.io.*;

int BB_OBJEKT_ENTFERNUNG			= 5;
int BB_HOEHE_VERSCHIEBUNG			= 2;
int BB_BILDER_ANZAHL				= 5;
int BB_GRID_SCHRITTE				= 6;
int BB_GRID_BEGIN_STEP				= 0;
double BB_GRID_ABSTAND				= 3.5;
int BB_BEGIN						= 0;

module A(float len) extends Sphere(0.1)
{
	{setShader(GREEN);}
}


protected void init ()
[
	Axiom ==> A(1);
]

File file	= new File("C:/Seminar/");

public void dynBB()         
{	
	VRMLDynamicBuilder bb = new VRMLDynamicBuilder(file, BasicBillboarder.MT_PNG, "bbs");
		
	bb.initialize(BB_OBJEKT_ENTFERNUNG, BB_HOEHE_VERSCHIEBUNG, BB_BILDER_ANZAHL);
	
	bb.beginAt(BB_BEGIN);
	
	bb.billboarding();
}

public void cakeBB()         
{
	VRMLCakeBuilder bb = new VRMLCakeBuilder(file, CakeBillboarder.MT_PNG, "bbs");
	
	bb.setLayer(0,4);
	bb.initialize(BB_OBJEKT_ENTFERNUNG, BB_HOEHE_VERSCHIEBUNG, BB_BILDER_ANZAHL);
	
	bb.beginAt(BB_BEGIN);
	bb.setCenterDim(0.01, 50);
	
	bb.billboarding();
}

public void gridBB()         
{
	VRMLGridBuilder bb = new VRMLGridBuilder(file, BasicBillboarder.MT_PNG, "bbs");
	
	bb.setLayer(0,4);
	bb.initialize(BB_OBJEKT_ENTFERNUNG, BB_HOEHE_VERSCHIEBUNG, true, BB_GRID_SCHRITTE);
	
	//bb.beginAt(BB_BEGIN, BB_GRID_BEGIN_STEP);	

	bb.billboarding();
}

int num = 100;
protected void run ()
[
	A(x) ==> for((1:num))
				(
					F(x/num)
				)[RU(30) RH(90) A(x*0.8)] [RU(-30) RH(90) A(x*0.8)];
]

public void sieben()
{
	for(apply(7)) run();
}


