var m=new Array(12);
var pi=3.14159265358979323846;

function kd3p()
{
var x=new Array(3),y=new Array(3),t="",d,a,b,c,r,u,f,aa,bb,rr,uu,ff;
x[0]=Number(document.f.x1.value.replace(/,/,"."));
x[1]=Number(document.f.x2.value.replace(/,/,"."));
x[2]=Number(document.f.x3.value.replace(/,/,"."));
y[0]=Number(document.f.y1.value.replace(/,/,"."));
y[1]=Number(document.f.y2.value.replace(/,/,"."));
y[2]=Number(document.f.y3.value.replace(/,/,"."));
for(i=0;i<3;i++)if((isNaN(x[i]))||(isNaN(y[i])))return;
for(i=0;i<3;i++){j=i*4; m[j]=1;m[j+1]=-2*x[i];m[j+2]=-2*y[i];m[j+3]=-x[i]*x[i]-y[i]*y[i];}
GLSL(3,4);
for(i=0;i<12;i+=5)if(m[i]!=1){document.f.ta.value=" \n\       Es gibt keinen\n       solchen Kreis!" ;return;}
a=Runden(m[7],15);b=Runden(m[11],15);
r=Runden(Math.sqrt(a*a+b*b-m[3]),15);
u=Runden(2*pi*r,15);
f=Runden(pi*r*r,15);
aa=ZahlStr(a);bb=ZahlStr(b);rr=ZahlStr(r);uu=ZahlStr(u);ff=ZahlStr(f);
t="xm = "+aa+"\nym = "+bb+"\nr  = "+rr+"\nu  = "+uu+"\nA  = "+ff+"\n\nSchnittpunkte\n• mit x-Achse:\n";
if(Math.abs(b)>r)t+="   keine";
else if(Math.abs(b)==r)t+"   x0 = "+ZahlStr(a);
else{d=Math.sqrt(r*r-b*b);t+="   x01 = "+ZahlStr(a-d)+"\n   x02 = "+ZahlStr(a+d);}
t+="\n• mit y-Achse:\n"
if(Math.abs(a)>r)t+="   keine";
else if(Math.abs(a)==r)t+"   y0 = "+ZahlStr(b);
else{d=Math.sqrt(r*r-a*a);t+="   y01 = "+ZahlStr(b-d)+"\n   y02 = "+ZahlStr(b+d);}
document.f.ta.value=t;
}
function cl(){document.f.ta.value="";}
function cl1()
{
	if(document.f.x1.value.replace(/ /g,"")==""){cl();return;}
	if(document.f.x2.value.replace(/ /g,"")==""){cl();return;}
	if(document.f.x3.value.replace(/ /g,"")==""){cl();return;}
	if(document.f.y1.value.replace(/ /g,"")==""){cl();return;}
	if(document.f.y2.value.replace(/ /g,"")==""){cl();return;}
	if(document.f.y3.value.replace(/ /g,"")==""){cl();return;}
	kd3p();
}

function Runden(t,i)
{
	var d=Math.pow(10,i);
	return Math.round(t*d)/d;
}

function ZahlStr(x)
{
var t=String(Runden(x,12)).replace(/\./,",").replace(/-,/,"-0,");
if(t.indexOf(",")==0)t="0"+t;
return t;
}

function GLSL(nz, ns)
{
    var i, j, k ;
	var q;
	for (j = 0;j<ns-1;j++)
	{
        // Diagonalenfeld normalisieren
        q = m[j * ns + j];
        if (q == 0){
            //Gewährleisten, daß keine 0 in der Diagonale steht
            for (i = j+1 ;i< nz;i++)
			{
                // Suche Reihe mit Feld <> 0 und addiere dazu
                if (m[i * ns + j] != 0)
				{
                    for (k = 0 ; k<ns; k++)
					{
						m[j * ns + k] += m[i * ns + k];
                    }
                    q = m[j * ns + j];
                    break;
                }
            }
        }
        if (q != 0)
		{
            // Diagonalen auf 1 bringen
            for (k = 0;k< ns;k++)
			{
                m[j * ns + k] = m[j * ns + k] / q;
            }
        }
        // Spalten außerhalb der Diagonalen auf 0 bringen
        for (i = 0 ; i< nz ; i++)
		{
            if (i != j )
			{
                q = m[i * ns + j];
                for (k = 0; k< ns;k++)
				{
                    m[i * ns + k] -=  q * m[j * ns + k];
                }
			}
        }
    }
}

function zufallspunkte()
{
	document.f.x1.value=format(Math.round(Math.random()*200+100)/10);
	document.f.x2.value=format(Math.round(Math.random()*200+100)/10);
	document.f.x3.value=format(Math.round(Math.random()*200+100)/10);
	document.f.y1.value=format(Math.round(Math.random()*200+100)/10);
	document.f.y2.value=format(Math.round(Math.random()*200+100)/10);
	document.f.y3.value=format(Math.round(Math.random()*200+100)/10);
	kd3p();
}

function format(x){return (" "+String(x)).replace(/\./,",").replace(/-,/,"-0,").replace(/ ,/,"0,").replace(/ /,"");}

