package fem2; import java.io.*; import java.util.*; import java.awt.*; public class fem//Finite-Elemente-Verfahren, Dreiecke { int apkt,adrk; //Anzahl Punkte, Dreiecke triang[] drk; //Dreiecke double[][] pkt; //Gitterpunkte int aunb = 0; //Anzahl Unbekannte (innere Pkte) int[] unb; //Randmarken & Variablen-Nrn double[] yw; // Feld innere Funktionswerte double[] xmn = new double[3]; //Bereichs-Minima double[] xmx = new double[3]; //Bereichs-Maxima matrix mat; //System-Matrix private double[] gxf = new double[2]; //2D-Streckfaktoren private double fxx,fxy,fyx,fyy,fyz; //3D-Streckfaktoren void wbereich() { //bestimmt umschliessendes Rechteck [xmn,xmx] for (int j=0; j<2; j++) { xmn[j] = pkt[0][j]; xmx[j] = xmn[j]; } for (int k=1; kpkt[k][j]) xmn[j] = pkt[k][j]; if (xmx[j]Bildkoordinaten gp gp[0] = 2+(int) Math.round(gxf[0]*(xp[0]-xmn[0])); gp[1] = 596-(int) Math.round(gxf[1]*(xp[1]-xmn[1])); }//grafkoord void grafpar(double dw, double kw) {//berechnet 3D-Trafo zu Dreh-&KippWinkel double cd = Math.cos(dw); double sd = Math.sin(dw); double ck = Math.cos(kw)*0.707; double sk = Math.sin(kw)*0.707; double w2 = 420.0; //Graphikfaktor fxx = cd*w2/(xmx[0]-xmn[0]); fxy =-sd*w2/(xmx[1]-xmn[1]); fyx = sd*ck*w2/(xmx[0]-xmn[0]); fyy = cd*ck*w2/(xmx[1]-xmn[1]); fyz =-sk*w2/(xmx[2]-xmn[2]); }//grafpar void grafkoord3(double[] xp, double zp, int[] gp) {//3D-Welt->Bildkoordinaten gp double[] pm = new double[3]; for (int i=0; i<2; i++) pm[i] = xp[i]-(xmn[i]+xmx[i])/2;//Um Mittelpunkt zentrieren pm[2] = zp-(xmn[2]+xmx[2])/2; gp[0] = 300+(int)Math.round(fxx*pm[0]+fxy*pm[1]); //nur Drehanteil gp[1] = 300-(int)Math.round(fyx*pm[0]+fyy*pm[1]+fyz*pm[2]); }//grafkoord3 void zeiggeom(Graphics g) {//2D-Gitter malen auf g int[] epgx = new int[3]; int[] epgy = new int[3]; int[] gp = new int[2]; int pn; g.clearRect(0,0,600,600); for (int k=0; k