Java-Quellcode für Torusberechnung


[ Zauberspiegel Wissenschaft Ideenfabrik ]


Geschrieben von Gabi am 15. August 2003 12:30:26:

Als Antwort auf: Gleichung am Torus geschrieben von Gabi am 14. August 2003 23:37:37:

//----------------------------------------------------------


// Torus:

void drawTorus ()
{
int i,j,u001,v001,u01,v01;
double winkelphi,uuu,vvv,www,u000,v000,w000,paramv,Lq,L,Lges,LA;
double windungen,swphi,swph,swtheta,swthet,winkeltheta,radiusklein,radiusgross;
double start1dX=0,start2dX=0,start1dY=0,start2dY=0,start1dZ=0,start2dZ=0,abBetrag,KreuzWinkel;
String Stext;

double z6=1000000;
radiusgross=vR;
radiusklein=vr;
LA=0;

if (cbA.getState())
{
// erste Spulenwicklung

windungen=wA;
swphi=2*Math.PI/windungen;
swtheta=2*Math.PI/kreisteile;
swph=swphi/kreisteile;
Lges=0;


g2.setColor(Color.black);
winkelphi=0; uuu=radiusgross+radiusklein; vvv=0; www=0;

for (i=1; i <= windungen; i++)
{

winkeltheta=0;

for (j=1; j <= kreisteile; j++)
{
winkeltheta +=swtheta;
winkelphi +=swph;

paramv=radiusgross+radiusklein*Math.cos(winkeltheta);
u000=uuu; v000=vvv; w000=www;

uuu = paramv*Math.cos(winkelphi);
vvv = paramv*Math.sin(winkelphi);
www = radiusklein*Math.sin(winkeltheta);

if(i==1 && j==1) { start1dX=uuu-u000; start1dY=vvv-v000; start1dZ=www-w000; }

u001 = screenU(u000,v000); v001 = screenV(u000,v000,w000);
u01 = screenU(uuu,vvv); v01 = screenV(uuu,vvv,www);

if ( j > (int)(kreisteile/2) ) g2.setColor(Color.magenta);
if ( j < (int)(kreisteile/2) ) g2.setColor(Color.black);

g2.drawLine(u001,v001,u01,v01);

Lq=(uuu-u000)*(uuu-u000) + (vvv-v000)*(vvv-v000) + (www-w000)*(www-w000);
L=Math.sqrt(Lq);
Lges +=L;


}

}

g2.setColor(Color.black);
Lq=Math.round(Lges*z6)/z6;
LA=Lges;
Stext = "LängeA= " + Double.toString(Lq) + " ";
g2.drawString(Stext,5,15);

};// Ende if (cbA.getState())


if (cbB.getState())
{
// inverse Spulenwicklung


windungen=wB;
swphi=2*Math.PI/kreisteile;
swtheta=2*Math.PI/windungen;
swthet=swtheta/kreisteile;
Lges=0;

winkeltheta=0; uuu=radiusgross+radiusklein; vvv=0; www=0; Lges=0;

g2.setColor(Color.red);


for (i=1; i <= windungen; i++)
{
if ( i > (int)(windungen/2) ) g2.setColor(Color.blue);
if ( i < (int)(windungen/2) ) g2.setColor(Color.red);

winkelphi=0;

for (j=1; j <= kreisteile; j++)
{
winkeltheta -=swthet;
winkelphi +=swphi;

paramv=radiusgross+radiusklein*Math.cos(winkeltheta);
u000=uuu; v000=vvv; w000=www;

uuu = paramv*Math.cos(winkelphi);
vvv = paramv*Math.sin(winkelphi);
www = radiusklein*Math.sin(winkeltheta);

if(i==1 && j==1) { start2dX=uuu-u000; start2dY=vvv-v000; start2dZ=www-w000; }

u001 = screenU(u000,v000); v001 = screenV(u000,v000,w000);
u01 = screenU(uuu,vvv); v01 = screenV(uuu,vvv,www);


g2.drawLine(u001,v001,u01,v01);

Lq=(uuu-u000)*(uuu-u000) + (vvv-v000)*(vvv-v000) + (www-w000)*(www-w000);
L=Math.sqrt(Lq);
Lges +=L;


}

}
g2.setColor(Color.black);
Lq=Math.round(Lges*z6)/z6;
Stext = "LängeB= " + Double.toString(Lq) + " ";
g2.drawString(Stext,5,30);
if(LA > 0)
{
Lq=Math.round(LA/Lges*z6)/z6; Stext = "A/B= "+ Double.toString(Lq) + " ";
g2.drawString(Stext,5,45);
Lq=Math.round(Lges/LA*z6)/z6; Stext = "B/A= "+ Double.toString(Lq) + " ";
g2.drawString(Stext,5,60);
Stext = "Kreisteile= "+ Double.toString(kreisteile) + "";
g2.drawString(Stext,5,415);
abBetrag=Math.sqrt((start1dX*start1dX+start1dY*start1dY+start1dZ*start1dZ)*(start2dX*start2dX+start2dY*start2dY+start2dZ*start2dZ));
KreuzWinkel=Math.round(180/Math.PI*Math.acos((start1dX*start2dX+start1dY*start2dY+start1dZ*start2dZ)/abBetrag)*1000.0)/1000.0;
Stext = "Kreuz(R+r,0,0)= "+ Double.toString(KreuzWinkel) + " Grad";
g2.drawString(Stext,5,430);

}

}; // Ende if (cbB.getState())


}


//----------------------------------------------------------





Antworten:


[ Zauberspiegel Wissenschaft Ideenfabrik ]