Science Fair Projects Ideas - User:Cyp/Java

All Science Fair Projects

      

Science Fair Project Encyclopedia for Schools!

  Search    Browse    Forum  Coach    Links    Editor    Help    Tell-a-Friend    Encyclopedia    Dictionary     

Science Fair Project Encyclopedia

For information on any area of science that interests you,
enter a keyword (eg. scientific method, molecule, cloud, carbohydrate etc.).
Or else, you can start by choosing any of the categories below.

User:Cyp/Java

Contents

Polyhedra.html


For drawing an old version of the polyhedrons at platonic solid and archimedean solid. Can't draw the ones at catalan solid.

<html><head><title>Polyhedra</title><body>
<applet width=200 height=200 code="Polyhedra.class" codebase="."></applet>
</html>

Polyhedra.java


import java.awt.*;
import java.applet.*;

//-a,-b,-c, -a,-b,c, -a,b,-c, -a,b,c, a,-b,-c, a,-b,c, a,b,-c, a,b,c,
//-c,-a,-b, -c,-a,b, -c,a,-b, -c,a,b, c,-a,-b, c,-a,b, c,a,-b, c,a,b,
//-b,-c,-a, -b,-c,a, -b,c,-a, -b,c,a, b,-c,-a, b,-c,a, b,c,-a, b,c,a,

public class Polyhedra extends Applet{
  double g=1.6180339887498948482045868343656381177203; //(1+Math.sqrt(5))/2;
  double d=0.6180339887498948482045868343656381177203; //1/g;
  double s=1.4142135623730950488016887242096980785696; //Math.sqrt(2);
  double q=2.6180339887498948482045868343656381177203; //(1+Math.sqrt(5))/2+1;
  double j=3.2360679774997896964091736687312762354406; //(1+Math.sqrt(5));
  double w=(Math.pow(Math.sqrt(297)+17, 1/3.)-Math.pow(Math.sqrt(297)-17, 1/3.)-1)/3; //w+w*w+w*w*w==1
  double w2=Math.pow((g+Math.sqrt(g-5/27.))/2, 1/3.)+Math.pow((g-Math.sqrt(g-5/27.))/2, 1/3.); //w2*w2*w2-2*w2==g
  double aa=w2-1/w2;
  double bb=w2*g+q+g/w2;
  double tetrav[]={
-1,-s,0, -1,s,0, 1,0,-s, 1,0,s};
  int tetrat[]={
0,1,3, 3,1,2, 1,0,2, 3,2,0};
  double hexav[]={
-1,-1,-1, -1,-1,1, -1,1,-1, -1,1,1, 1,-1,-1, 1,-1,1, 1,1,-1, 1,1,1};
  int hexat[]={
0,2,3,1, 2,6,7,3, 0,4,6,2, 3,7,5,1, 0,1,5,4, 6,4,5,7};
  double octav[]={
-1,0,0, 1,0,0, 0,-1,0, 0,1,0, 0,0,-1, 0,0,1};
  int octat[]={
0,4,3, 3,4,1, 1,4,2, 2,4,0, 3,5,0, 0,5,2, 2,5,1, 1,5,3};
  double dodecav[]={
0,-d,-g, 0,-d,g, 0,d,-g, 0,d,g, -d,-g,0, -d,g,0, d,-g,0, d,g,0, -g,0,-d, g,0,-d, -g,0,d, g,0,d, -1,-1,-1, -1,-1,1, -1,1,-1, -1,1,1, 1,-1,-1, 1,-1,1, 1,1,-1, 1,1,1};
  int dodecat[]={
0,2,14,8,12, 0,16,9,18,2, 4,6,16,0,12, 2,18,7,5,14, 13,4,12,8,10, 6,17,11,9,16, 15,10,8,14,5, 18,9,11,19,7, 1,17,6,4,13, 5,7,19,3,15, 13,10,15,3,1, 19,11,17,1,3};
  double icosav[]={
0,-1,-g, 0,-1,g, 0,1,-g, 0,1,g, -1,-g,0, -1,g,0, 1,-g,0, 1,g,0, -g,0,-1, g,0,-1, -g,0,1, g,0,1};
  int icosat[]={
0,2,8, 2,0,9, 4,0,8, 4,6,0, 6,9,0, 5,8,2, 5,2,7, 7,2,9, 10,4,8, 10,8,5, 6,11,9, 9,11,7, 10,5,3, 10,1,4, 1,11,6, 3,7,11, 1,6,4, 3,5,7, 3,11,1, 1,10,3};
  double icosidodecav[]={
-j,0,0, j,0,0, 0,-j,0, 0,j,0, 0,0,-j, 0,0,j,
-1,-g,-q, -1,-g,q, -1,g,-q, -1,g,q, 1,-g,-q, 1,-g,q, 1,g,-q, 1,g,q,
-g,-q,-1, -g,q,-1, g,-q,-1, g,q,-1, -g,-q,1, -g,q,1, g,-q,1, g,q,1,
-q,-1,-g, q,-1,-g, -q,-1,g, q,-1,g, -q,1,-g, q,1,-g, -q,1,g, q,1,g
};
  int icosidodecat[]={
3,17,21,3, 3,27,23,1, 3,1,25,29, 3,21,29,13, 3,12,27,17, 3,10,16,23, 3,20,11,25, 3,9,13,5, 3,19,9,28, 3,26,8,15,
3,15,3,19, 3,7,5,11, 3,18,24,7, 3,2,14,18, 3,2,20,16, 3,4,6,10, 3,6,22,14, 3,8,4,12, 3,0,22,26, 3,0,28,24,
5,17,27,1,29,21, 5,1,23,16,20,25, 5,4,10,23,27,12, 5,5,13,29,25,11, 5,3,21,13,9,19, 5,8,12,17,3,15,
5,0,26,15,19,28, 5,24,28,9,5,7, 5,0,24,18,14,22, 5,2,18,7,11,20, 5,10,6,14,2,16, 5,8,26,22,6,4
};
  double cuboctav[]={
-1,-1,0, -1,1,0, 1,-1,0, 1,1,0,
0,-1,-1, 0,-1,1, 0,1,-1, 0,1,1,
-1,0,-1, 1,0,-1, -1,0,1, 1,0,1
};
  int cuboctat[]={
3,3,11,7, 3,9,3,6, 3,11,2,5, 3,4,2,9, 3,7,10,1, 3,1,8,6, 3,0,10,5, 3,4,8,0,
4,3,9,2,11, 4,11,5,10,7, 4,7,1,6,3, 4,10,0,8,1, 4,6,8,4,9, 4,4,0,5,2
};
  double truncicosav[]={
0,-1,-3*g, 0,-1,3*g, 0,1,-3*g, 0,1,3*g,
-3*g,0,-1, 3*g,0,-1, -3*g,0,1, 3*g,0,1,
-1,-3*g,0, -1,3*g,0, 1,-3*g,0, 1,3*g,0,

-2,-(g+q),-g, -2,-(g+q),g, -2,(g+q),-g, -2,(g+q),g, 2,-(g+q),-g, 2,-(g+q),g, 2,(g+q),-g, 2,(g+q),g,
-g,-2,-(g+q), g,-2,-(g+q), -g,-2,(g+q), g,-2,(g+q), -g,2,-(g+q), g,2,-(g+q), -g,2,(g+q), g,2,(g+q),
-(g+q),-g,-2, -(g+q),g,-2, (g+q),-g,-2, (g+q),g,-2, -(g+q),-g,2, -(g+q),g,2, (g+q),-g,2, (g+q),g,2,

-1,-(2+g),-2*g, -1,-(2+g),2*g, -1,(2+g),-2*g, -1,(2+g),2*g, 1,-(2+g),-2*g, 1,-(2+g),2*g, 1,(2+g),-2*g, 1,(2+g),2*g,
-2*g,-1,-(2+g), 2*g,-1,-(2+g), -2*g,-1,(2+g), 2*g,-1,(2+g), -2*g,1,-(2+g), 2*g,1,-(2+g), -2*g,1,(2+g), 2*g,1,(2+g),
-(2+g),-2*g,-1, -(2+g),2*g,-1, (2+g),-2*g,-1, (2+g),2*g,-1, -(2+g),-2*g,1, -(2+g),2*g,1, (2+g),-2*g,1, (2+g),2*g,1
};
  int truncicosat[]={
6,9,11,19,43,39,15, 6,55,31,5,7,35,59, 6,27,43,19,59,35,51, 6,11,9,14,38,42,18, 6,20,44,28,52,12,36,
6,0,2,24,48,44,20, 6,48,24,38,14,53,29, 6,0,21,45,49,25,2, 6,12,8,10,16,40,36, 6,18,42,25,49,31,55,
6,23,47,34,58,17,41, 6,1,3,27,51,47,23, 6,21,40,16,54,30,45, 6,7,5,30,54,58,34, 6,39,26,50,33,57,15,
6,3,1,22,46,50,26, 6,57,33,6,4,29,53, 6,6,32,56,52,28,4, 6,22,37,13,56,32,46, 6,37,41,17,10,8,13,
5,59,19,11,18,55, 5,35,7,34,47,51, 5,3,26,39,43,27, 5,44,48,29,4,28, 5,20,36,40,21,0, 5,38,24,2,25,42,
5,14,9,15,57,53, 5,10,17,58,54,16, 5,22,1,23,41,37, 5,49,45,30,5,31, 5,50,46,32,6,33, 5,13,8,12,52,56
};
  double trunctetrav[]={
3,1,1, 1,3,1, 1,1,3,  3,-1,-1, -1,3,-1, -1,-1,3,  -3,-1,1, 1,-3,-1, -1,1,-3,  -3,1,-1, -1,-3,1, 1,-1,-3
};
  int trunctetrat[]={
6,11,3,0,1,4,8, 6,3,7,10,5,2,0, 6,6,10,7,11,8,9, 6,9,4,1,2,5,6,
3,0,2,1, 3,8,4,9, 3,6,5,10, 3,7,3,11
};
  double trunchexav[]={
-(s-1),-1,-1, -(s-1),-1,1, -(s-1),1,-1, -(s-1),1,1, (s-1),-1,-1, (s-1),-1,1, (s-1),1,-1, (s-1),1,1,
-1,-(s-1),-1, 1,-(s-1),-1, -1,-(s-1),1, 1,-(s-1),1, -1,(s-1),-1, 1,(s-1),-1, -1,(s-1),1, 1,(s-1),1,
-1,-1,-(s-1), -1,1,-(s-1), 1,-1,-(s-1), 1,1,-(s-1), -1,-1,(s-1), -1,1,(s-1), 1,-1,(s-1), 1,1,(s-1)
};
  int trunchexat[]={
8,5,22,18,4,0,16,20,1, 8,21,14,10,20,16,8,12,17, 8,14,3,7,15,11,5,1,10, 8,6,19,23,7,3,21,17,2, 8,0,4,9,13,6,2,12,8, 8,13,9,18,22,11,15,23,19,
3,11,22,5, 3,18,9,4, 3,3,14,21, 3,2,17,12, 3,10,1,20, 3,7,23,15, 3,13,19,6, 3,0,8,16
};
  double truncoctav[]={
-2,-1,0, -2,1,0, 2,-1,0, 2,1,0,
0,-2,-1, 0,-2,1, 0,2,-1, 0,2,1,
-1,0,-2, 1,0,-2, -1,0,2, 1,0,2,
-1,-2,0, -1,2,0, 1,-2,0, 1,2,0,
0,-1,-2, 0,-1,2, 0,1,-2, 0,1,2,
-2,0,-1, 2,0,-1, -2,0,1, 2,0,1
};
  int truncoctat[]={
6,17,11,23,2,14,5, 6,14,2,21,9,16,4, 6,7,15,3,23,11,19, 6,0,12,4,16,8,20, 6,19,10,22,1,13,7, 6,17,5,12,0,22,10, 6,1,20,8,18,6,13, 6,6,18,9,21,3,15,
4,12,5,14,4, 4,2,23,3,21, 4,13,6,15,7, 4,8,16,9,18, 4,0,20,1,22, 4,11,17,10,19
};
  double truncdodecav[]={
(0),-(3-g),-(5*g), (0),-(3-g),(5*g), (0),(3-g),-(5*g), (0),(3-g),(5*g),
-(5*g),(0),-(3-g), (5*g),(0),-(3-g), -(5*g),(0),(3-g), (5*g),(0),(3-g),
-(3-g),-(5*g),(0), -(3-g),(5*g),(0), (3-g),-(5*g),(0), (3-g),(5*g),(0),

-(3-g),-(2+g),-(4+2*g), -(3-g),-(2+g),(4+2*g), -(3-g),(2+g),-(4+2*g), -(3-g),(2+g),(4+2*g), (3-g),-(2+g),-(4+2*g), (3-g),-(2+g),(4+2*g), (3-g),(2+g),-(4+2*g), (3-g),(2+g),(4+2*g),
-(4+2*g),-(3-g),-(2+g), (4+2*g),-(3-g),-(2+g), -(4+2*g),-(3-g),(2+g), (4+2*g),-(3-g),(2+g), -(4+2*g),(3-g),-(2+g), (4+2*g),(3-g),-(2+g), -(4+2*g),(3-g),(2+g), (4+2*g),(3-g),(2+g),
-(2+g),-(4+2*g),-(3-g), -(2+g),(4+2*g),-(3-g), (2+g),-(4+2*g),-(3-g), (2+g),(4+2*g),-(3-g), -(2+g),-(4+2*g),(3-g), -(2+g),(4+2*g),(3-g), (2+g),-(4+2*g),(3-g), (2+g),(4+2*g),(3-g),

-(2+g),-(-2+4*g),-(1+3*g), -(2+g),-(-2+4*g),(1+3*g), -(2+g),(-2+4*g),-(1+3*g), -(2+g),(-2+4*g),(1+3*g), (2+g),-(-2+4*g),-(1+3*g), (2+g),-(-2+4*g),(1+3*g), (2+g),(-2+4*g),-(1+3*g), (2+g),(-2+4*g),(1+3*g),
-(1+3*g),-(2+g),-(-2+4*g), (1+3*g),-(2+g),-(-2+4*g), -(1+3*g),-(2+g),(-2+4*g), (1+3*g),-(2+g),(-2+4*g), -(1+3*g),(2+g),-(-2+4*g), (1+3*g),(2+g),-(-2+4*g), -(1+3*g),(2+g),(-2+4*g), (1+3*g),(2+g),(-2+4*g),
-(-2+4*g),-(1+3*g),-(2+g), -(-2+4*g),(1+3*g),-(2+g), (-2+4*g),-(1+3*g),-(2+g), (-2+4*g),(1+3*g),-(2+g), -(-2+4*g),-(1+3*g),(2+g), -(-2+4*g),(1+3*g),(2+g), (-2+4*g),-(1+3*g),(2+g), (-2+4*g),(1+3*g),(2+g)
};
  int truncdodecat[]={
10,24,48,53,29,33,57,50,26,6,4, 10,53,38,14,18,42,55,31,11,9,29, 10,39,57,33,9,11,35,59,43,19,15, 10,40,45,21,25,49,42,18,2,0,16,
10,28,52,44,20,4,6,22,46,56,32, 10,5,7,27,51,59,35,31,55,49,25, 10,8,32,56,37,13,17,41,58,34,10, 10,17,1,3,19,43,51,27,23,47,41,
10,47,23,7,5,21,45,54,30,34,58, 10,37,46,22,26,50,39,15,3,1,13, 10,24,20,44,36,12,0,2,14,38,48, 10,36,52,28,8,10,30,54,40,16,12,
3,33,29,9, 3,50,57,39, 3,53,48,38, 3,11,31,35, 3,25,21,5, 3,42,49,55, 3,7,23,27, 3,40,54,45, 3,52,36,44, 3,8,28,32,
3,22,6,26, 3,20,24,4, 3,51,43,59, 3,56,46,37, 3,13,1,17, 3,41,47,58, 3,3,15,19, 3,14,2,18, 3,12,16,0, 3,10,34,30
};
  double rhombicuboctav[]={
-(1+s),-1,-1, -(1+s),-1,1, -(1+s),1,-1, -(1+s),1,1, (1+s),-1,-1, (1+s),-1,1, (1+s),1,-1, (1+s),1,1,
-1,-(1+s),-1, 1,-(1+s),-1, -1,-(1+s),1, 1,-(1+s),1, -1,(1+s),-1, 1,(1+s),-1, -1,(1+s),1, 1,(1+s),1,
-1,-1,-(1+s), -1,1,-(1+s), 1,-1,-(1+s), 1,1,-(1+s), -1,-1,(1+s), -1,1,(1+s), 1,-1,(1+s), 1,1,(1+s)
};
  int rhombicuboctat[]={
4,5,7,6,4, 4,5,22,23,7, 4,6,7,15,13, 4,4,6,19,18, 4,9,11,5,4, 4,21,20,1,3, 4,3,1,0,2, 4,2,12,14,3, 4,17,2,0,16,
4,0,1,10,8, 4,10,11,9,8, 4,8,9,18,16, 4,16,18,19,17, 4,11,10,20,22, 4,22,20,21,23, 4,23,21,14,15, 4,12,17,19,13, 4,13,15,14,12,
3,11,22,5, 3,7,23,15, 3,6,13,19, 3,9,4,18, 3,14,21,3, 3,16,0,8, 3,17,12,2, 3,1,20,10
};
  double snubhexa1v[]={
-1,-w,1/w, -1,w,-1/w, 1,-w,-1/w, 1,w,1/w,
1/w,-1,-w, -1/w,-1,w, -1/w,1,-w, 1/w,1,w,
-w,1/w,-1, w,-1/w,-1, -w,-1/w,1, w,1/w,1,

-1,-1/w,-w, -1,1/w,w, 1,-1/w,w, 1,1/w,-w,
-w,-1,-1/w, w,-1,1/w, w,1,-1/w, -w,1,1/w,
-1/w,-w,-1, 1/w,w,-1, -1/w,w,1, 1/w,-w,1
};
  int snubhexa1t[]={
4,9,12,10,14, 4,16,2,18,1, 4,3,17,0,19, 4,15,11,13,8, 4,22,5,20,6, 4,23,7,21,4,
3,12,5,10, 3,12,20,5, 3,5,0,10, 3,10,0,17, 3,22,0,5, 3,11,15,7, 3,19,11,3, 3,11,7,3,
3,9,14,4, 3,14,23,4, 3,10,17,14, 3,14,17,23, 3,15,21,7, 3,7,23,3, 3,20,12,16, 3,1,18,8,
3,23,17,3, 3,6,20,1, 3,12,9,16, 3,20,16,1, 3,9,2,16, 3,9,4,2, 3,4,21,2, 3,18,21,15,
3,18,15,8, 3,8,6,1, 3,6,8,13, 3,22,6,13, 3,11,19,13, 3,13,19,22, 3,22,19,0, 3,21,18,2
};
  double snubhexa2v[]={
1,-w,1/w, 1,w,-1/w, -1,-w,-1/w, -1,w,1/w,
-1/w,-1,-w, 1/w,-1,w, 1/w,1,-w, -1/w,1,w,
w,1/w,-1, -w,-1/w,-1, w,-1/w,1, -w,1/w,1,

1,-1/w,-w, 1,1/w,w, -1,-1/w,w, -1,1/w,-w,
w,-1,-1/w, -w,-1,1/w, -w,1,-1/w, w,1,1/w,
1/w,-w,-1, -1/w,w,-1, 1/w,w,1, -1/w,-w,1
};
  int snubhexa2t[]={
4,9,14,10,12, 4,18,2,16,1, 4,3,19,0,17, 4,15,8,13,11, 4,22,6,20,5, 4,23,4,21,7,
3,12,10,5, 3,12,5,20, 3,5,10,0, 3,10,17,0, 3,22,5,0, 3,11,7,15, 3,19,3,11, 3,11,3,7,
3,9,4,14, 3,14,4,23, 3,10,14,17, 3,14,23,17, 3,15,7,21, 3,7,3,23, 3,20,16,12, 3,1,8,18,
3,23,3,17, 3,6,1,20, 3,12,16,9, 3,20,1,16, 3,9,16,2, 3,9,2,4, 3,4,2,21, 3,18,15,21,
3,18,8,15, 3,8,1,6, 3,6,13,8, 3,22,13,6, 3,11,13,19, 3,13,22,19, 3,22,0,19, 3,21,2,18
};
  double rhombicosadodecav[]={
-1,-1,-g*q, -1,-1,g*q, -1,1,-g*q, -1,1,g*q, 1,-1,-g*q, 1,-1,g*q, 1,1,-g*q, 1,1,g*q,
-g*q,-1,-1, g*q,-1,-1, -g*q,-1,1, g*q,-1,1, -g*q,1,-1, g*q,1,-1, -g*q,1,1, g*q,1,1,
-1,-g*q,-1, -1,g*q,-1, 1,-g*q,-1, 1,g*q,-1, -1,-g*q,1, -1,g*q,1, 1,-g*q,1, 1,g*q,1,

-q,-g,-j, -q,-g,j, -q,g,-j, -q,g,j, q,-g,-j, q,-g,j, q,g,-j, q,g,j,
-j,-q,-g, j,-q,-g, -j,-q,g, j,-q,g, -j,q,-g, j,q,-g, -j,q,g, j,q,g,
-g,-j,-q, -g,j,-q, g,-j,-q, g,j,-q, -g,-j,q, -g,j,q, g,-j,q, g,j,q,

-(2+g),0,-q, -(2+g),0,q, (2+g),0,-q, (2+g),0,q,
-q,-(2+g),0, q,-(2+g),0, -q,(2+g),0, q,(2+g),0,
0,-q,-(2+g), 0,q,-(2+g), 0,-q,(2+g), 0,q,(2+g)
};
  int rhombicosadodecat[]={
5,44,58,46,22,20, 5,1,25,49,27,3, 5,57,43,19,17,41, 5,21,23,47,59,45, 5,31,51,29,5,7, 5,10,34,52,32,8,
5,48,24,0,2,26, 5,12,36,54,38,14, 5,6,4,28,50,30, 5,15,39,55,37,13, 5,33,53,35,11,9, 5,40,16,18,42,56,

4,34,44,20,52, 4,44,25,1,58, 4,3,27,45,59, 4,5,1,3,7, 4,25,34,10,49, 4,27,49,14,38,
4,20,22,18,16, 4,18,53,33,42, 4,6,30,43,57, 4,2,57,41,26, 4,4,6,2,0, 4,47,31,7,59,
4,55,39,47,23, 4,5,29,46,58, 4,31,39,15,51, 4,52,16,40,32, 4,12,48,26,36, 4,36,41,17,54,
4,38,54,21,45, 4,21,17,19,23, 4,55,19,43,37, 4,30,50,13,37, 4,33,9,50,28, 4,14,10,8,12,
4,9,11,15,13, 4,11,35,29,51, 4,53,22,46,35, 4,56,42,28,4, 4,24,40,56,0, 4,48,8,32,24,

3,34,25,44, 3,58,1,5, 3,27,38,45, 3,52,20,16, 3,22,53,18, 3,2,6,57, 3,3,59,7, 3,19,55,23, 3,47,39,31, 3,29,35,46,
3,14,49,10, 3,41,36,26, 3,54,17,21, 3,37,43,30, 3,0,56,4, 3,9,13,50, 3,33,28,42, 3,12,8,48, 3,11,51,15, 3,24,32,40
};
  double trunccuboctav[]={
-1,-(1+s),-(1+s+s), -1,-(1+s),(1+s+s), -1,(1+s),-(1+s+s), -1,(1+s),(1+s+s), 1,-(1+s),-(1+s+s), 1,-(1+s),(1+s+s), 1,(1+s),-(1+s+s), 1,(1+s),(1+s+s),
-(1+s+s),-1,-(1+s), (1+s+s),-1,-(1+s), -(1+s+s),-1,(1+s), (1+s+s),-1,(1+s), -(1+s+s),1,-(1+s), (1+s+s),1,-(1+s), -(1+s+s),1,(1+s), (1+s+s),1,(1+s),
-(1+s),-(1+s+s),-1, -(1+s),(1+s+s),-1, (1+s),-(1+s+s),-1, (1+s),(1+s+s),-1, -(1+s),-(1+s+s),1, -(1+s),(1+s+s),1, (1+s),-(1+s+s),1, (1+s),(1+s+s),1,

-1,-(1+s+s),-(1+s), -1,-(1+s+s),(1+s), -1,(1+s+s),-(1+s), -1,(1+s+s),(1+s), 1,-(1+s+s),-(1+s), 1,-(1+s+s),(1+s), 1,(1+s+s),-(1+s), 1,(1+s+s),(1+s),
-(1+s),-1,-(1+s+s), (1+s),-1,-(1+s+s), -(1+s),-1,(1+s+s), (1+s),-1,(1+s+s), -(1+s),1,-(1+s+s), (1+s),1,-(1+s+s), -(1+s),1,(1+s+s), (1+s),1,(1+s+s),
-(1+s+s),-(1+s),-1, -(1+s+s),(1+s),-1, (1+s+s),-(1+s),-1, (1+s+s),(1+s),-1, -(1+s+s),-(1+s),1, -(1+s+s),(1+s),1, (1+s+s),-(1+s),1, (1+s+s),(1+s),1
};
  int trunccuboctat[]={
8,5,1,34,38,3,7,39,35, 8,12,41,45,14,10,44,40,8, 8,37,6,2,36,32,0,4,33,
8,23,31,27,21,17,26,30,19, 8,24,16,20,25,29,22,18,28, 8,43,13,9,42,46,11,15,47,

6,3,38,14,45,21,27, 6,1,25,20,44,10,34, 6,11,46,22,29,5,35, 6,15,39,7,31,23,47,
6,2,26,17,41,12,36, 6,37,13,43,19,30,6, 6,8,40,16,24,0,32, 6,9,33,4,28,18,42,

4,7,3,27,31, 4,38,34,10,14, 4,5,29,25,1, 4,39,15,11,35, 4,36,12,8,32, 4,6,30,26,2,
4,47,23,19,43, 4,40,44,20,16, 4,0,24,28,4, 4,9,13,37,33, 4,41,17,21,45, 4,46,42,18,22
};
  double truncicosidodecav[]={
-d,-d,-(3+g), -d,-d,(3+g), -d,d,-(3+g), -d,d,(3+g), d,-d,-(3+g), d,-d,(3+g), d,d,-(3+g), d,d,(3+g),
-(3+g),-d,-d, -(3+g),-d,d, -(3+g),d,-d, -(3+g),d,d, (3+g),-d,-d, (3+g),-d,d, (3+g),d,-d, (3+g),d,d,
-d,-(3+g),-d, -d,-(3+g),d, -d,(3+g),-d, -d,(3+g),d, d,-(3+g),-d, d,-(3+g),d, d,(3+g),-d, d,(3+g),d,

-2*d,-g,-(g+q), -2*d,-g,(g+q), -2*d,g,-(g+q), -2*d,g,(g+q), 2*d,-g,-(g+q), 2*d,-g,(g+q), 2*d,g,-(g+q), 2*d,g,(g+q),
-(g+q),-2*d,-g, -(g+q),-2*d,g, -(g+q),2*d,-g, -(g+q),2*d,g, (g+q),-2*d,-g, (g+q),-2*d,g, (g+q),2*d,-g, (g+q),2*d,g,
-g,-(g+q),-2*d, -g,-(g+q),2*d, -g,(g+q),-2*d, -g,(g+q),2*d, g,-(g+q),-2*d, g,-(g+q),2*d, g,(g+q),-2*d, g,(g+q),2*d,

-d,-q,-(j+d), -d,-q,(j+d), -d,q,-(j+d), -d,q,(j+d), d,-q,-(j+d), d,-q,(j+d), d,q,-(j+d), d,q,(j+d),
-(j+d),-d,-q, -(j+d),-d,q, -(j+d),d,-q, -(j+d),d,q, (j+d),-d,-q, (j+d),-d,q, (j+d),d,-q, (j+d),d,q,
-q,-(j+d),-d, -q,-(j+d),d, -q,(j+d),-d, -q,(j+d),d, q,-(j+d),-d, q,-(j+d),d, q,(j+d),-d, q,(j+d),d,

-(j-1),-2,-(2+g), -(j-1),-2,(2+g), -(j-1),2,-(2+g), -(j-1),2,(2+g), (j-1),-2,-(2+g), (j-1),-2,(2+g), (j-1),2,-(2+g), (j-1),2,(2+g),
-(2+g),-(j-1),-2, -(2+g),-(j-1),2, -(2+g),(j-1),-2, -(2+g),(j-1),2, (2+g),-(j-1),-2, (2+g),-(j-1),2, (2+g),(j-1),-2, (2+g),(j-1),2,
-2,-(2+g),-(j-1), -2,-(2+g),(j-1), -2,(2+g),-(j-1), -2,(2+g),(j-1), 2,-(2+g),-(j-1), 2,-(2+g),(j-1), 2,(2+g),-(j-1), 2,(2+g),(j-1),

-g,-3,-j, -g,-3,j, -g,3,-j, -g,3,j, g,-3,-j, g,-3,j, g,3,-j, g,3,j,
-j,-g,-3, -j,-g,3, -j,g,-3, -j,g,3, j,-g,-3, j,-g,3, j,g,-3, j,g,3,
-3,-j,-g, -3,-j,g, -3,j,-g, -3,j,g, 3,-j,-g, 3,-j,g, 3,j,-g, 3,j,g
};
  int truncicosidodecat[]={
10,44,92,100,52,48,96,88,40,16,20, 10,68,69,117,85,37,13,12,36,84,116, 10,8,9,33,81,113,65,64,112,80,32,
10,21,17,41,89,97,49,53,101,93,45, 10,10,34,82,114,66,67,115,83,35,11, 10,77,29,5,7,31,79,111,63,61,109,
10,90,98,50,54,102,94,46,22,18,42, 10,51,99,91,43,19,23,47,95,103,55, 10,119,71,70,118,86,38,14,15,39,87,
10,74,106,58,56,104,72,24,0,2,26, 10,57,59,107,75,27,3,1,25,73,105, 10,76,108,60,62,110,78,30,6,4,28,

6,44,20,21,45,69,68, 6,63,39,15,13,37,61, 6,12,14,38,62,60,36, 6,80,112,88,96,72,104, 6,16,40,64,65,41,17,
6,34,10,8,32,56,58, 6,9,11,35,59,57,33, 6,114,82,106,74,98,90, 6,101,77,109,85,117,93, 6,116,84,108,76,100,92,
6,75,107,83,115,91,99, 6,7,3,27,51,55,31, 6,43,67,66,42,18,19, 6,23,22,46,70,71,47, 6,103,95,119,87,111,79,
6,118,94,102,78,110,86, 6,50,26,2,6,30,54, 6,0,24,48,52,28,4, 6,1,5,29,53,49,25, 6,113,81,105,73,97,89,

4,20,16,17,21, 4,92,44,68,116, 4,109,61,37,85, 4,69,45,93,117, 4,41,65,113,89, 4,56,32,80,104,
4,10,11,9,8, 4,82,34,58,106, 4,101,53,29,77, 4,42,66,114,90, 4,40,88,112,64, 4,27,75,99,51,
4,107,59,35,83, 4,91,115,67,43, 4,55,103,79,31, 4,47,71,119,95, 4,19,18,22,23, 4,46,94,118,70,
4,14,12,13,15, 4,87,39,63,111, 4,60,108,84,36, 4,110,62,38,86, 4,98,74,26,50, 4,2,0,4,6,
4,1,3,7,5, 4,73,25,49,97, 4,96,48,24,72, 4,100,76,28,52, 4,81,33,57,105, 4,102,54,30,78
};
  double snubdodeca1v[]={
-2*aa,-2,2*bb, -2*aa,2,-2*bb, 2*aa,-2,-2*bb, 2*aa,2,2*bb,
2*bb,-2*aa,-2, -2*bb,-2*aa,2, -2*bb,2*aa,-2, 2*bb,2*aa,2,
-2,2*bb,-2*aa, 2,-2*bb,-2*aa, -2,-2*bb,2*aa, 2,2*bb,2*aa,

-(aa+bb*d+g),-(-aa*g+bb+d),(aa*d+bb*g-1), -(aa+bb*d+g),(-aa*g+bb+d),-(aa*d+bb*g-1), (aa+bb*d+g),-(-aa*g+bb+d),-(aa*d+bb*g-1), (aa+bb*d+g),(-aa*g+bb+d),(aa*d+bb*g-1),
(aa*d+bb*g-1),-(aa+bb*d+g),-(-aa*g+bb+d), -(aa*d+bb*g-1),-(aa+bb*d+g),(-aa*g+bb+d), -(aa*d+bb*g-1),(aa+bb*d+g),-(-aa*g+bb+d), (aa*d+bb*g-1),(aa+bb*d+g),(-aa*g+bb+d),
-(-aa*g+bb+d),(aa*d+bb*g-1),-(aa+bb*d+g), (-aa*g+bb+d),-(aa*d+bb*g-1),-(aa+bb*d+g), -(-aa*g+bb+d),-(aa*d+bb*g-1),(aa+bb*d+g), (-aa*g+bb+d),(aa*d+bb*g-1),(aa+bb*d+g),

-(-aa*d+bb*g+1),-(-aa+bb*d-g),(aa*g+bb-d), -(-aa*d+bb*g+1),(-aa+bb*d-g),-(aa*g+bb-d), (-aa*d+bb*g+1),-(-aa+bb*d-g),-(aa*g+bb-d), (-aa*d+bb*g+1),(-aa+bb*d-g),(aa*g+bb-d),
(aa*g+bb-d),-(-aa*d+bb*g+1),-(-aa+bb*d-g), -(aa*g+bb-d),-(-aa*d+bb*g+1),(-aa+bb*d-g), -(aa*g+bb-d),(-aa*d+bb*g+1),-(-aa+bb*d-g), (aa*g+bb-d),(-aa*d+bb*g+1),(-aa+bb*d-g),
-(-aa+bb*d-g),(aa*g+bb-d),-(-aa*d+bb*g+1), (-aa+bb*d-g),-(aa*g+bb-d),-(-aa*d+bb*g+1), -(-aa+bb*d-g),-(aa*g+bb-d),(-aa*d+bb*g+1), (-aa+bb*d-g),(aa*g+bb-d),(-aa*d+bb*g+1),

-(-aa*d+bb*g-1),-(aa-bb*d-g),(aa*g+bb+d), -(-aa*d+bb*g-1),(aa-bb*d-g),-(aa*g+bb+d), (-aa*d+bb*g-1),-(aa-bb*d-g),-(aa*g+bb+d), (-aa*d+bb*g-1),(aa-bb*d-g),(aa*g+bb+d),
(aa*g+bb+d),-(-aa*d+bb*g-1),-(aa-bb*d-g), -(aa*g+bb+d),-(-aa*d+bb*g-1),(aa-bb*d-g), -(aa*g+bb+d),(-aa*d+bb*g-1),-(aa-bb*d-g), (aa*g+bb+d),(-aa*d+bb*g-1),(aa-bb*d-g),
-(aa-bb*d-g),(aa*g+bb+d),-(-aa*d+bb*g-1), (aa-bb*d-g),-(aa*g+bb+d),-(-aa*d+bb*g-1), -(aa-bb*d-g),-(aa*g+bb+d),(-aa*d+bb*g-1), (aa-bb*d-g),(aa*g+bb+d),(-aa*d+bb*g-1),

-(aa+bb*d-g),-(aa*g-bb+d),(aa*d+bb*g+1), -(aa+bb*d-g),(aa*g-bb+d),-(aa*d+bb*g+1), (aa+bb*d-g),-(aa*g-bb+d),-(aa*d+bb*g+1), (aa+bb*d-g),(aa*g-bb+d),(aa*d+bb*g+1),
(aa*d+bb*g+1),-(aa+bb*d-g),-(aa*g-bb+d), -(aa*d+bb*g+1),-(aa+bb*d-g),(aa*g-bb+d), -(aa*d+bb*g+1),(aa+bb*d-g),-(aa*g-bb+d), (aa*d+bb*g+1),(aa+bb*d-g),(aa*g-bb+d),
-(aa*g-bb+d),(aa*d+bb*g+1),-(aa+bb*d-g), (aa*g-bb+d),-(aa*d+bb*g+1),-(aa+bb*d-g), -(aa*g-bb+d),-(aa*d+bb*g+1),(aa+bb*d-g), (aa*g-bb+d),(aa*d+bb*g+1),(aa+bb*d-g),
};
  int snubdodeca1t[]={
5,7,19,31,43,55, 5,15,27,39,51,3, 5,52,4,16,28,40, 5,46,58,10,22,34, 5,9,21,33,45,57, 5,5,17,29,41,53,
5,2,14,26,38,50, 5,6,18,30,42,54, 5,47,59,11,23,35, 5,8,20,32,44,56, 5,12,24,36,48,0, 5,1,13,25,37,49,

3,7,27,19, 3,19,27,15, 3,7,52,27, 3,52,39,27, 3,4,52,7,     3,31,19,23, 3,40,39,52, 3,58,46,40, 3,58,40,28, 3,9,58,28,
3,9,28,21, 3,21,28,16, 3,21,16,14, 3,14,16,26, 3,26,16,4,   3,46,39,40, 3,51,39,46, 3,34,51,46, 3,51,0,3, 3,58,9,10,
3,12,34,22, 3,12,22,17, 3,24,12,17, 3,5,24,17, 3,54,24,5,   3,6,54,5, 3,17,22,29, 3,22,10,29, 3,33,21,14, 3,2,33,14,
3,49,33,2, 3,1,2,50, 3,1,50,32, 3,5,53,6, 3,24,54,36,       3,36,54,42, 3,36,42,47, 3,47,42,59, 3,42,30,59, 3,59,30,8,
3,8,30,20, 3,20,30,18, 3,20,18,13, 3,13,18,25, 3,32,13,1,   3,2,1,49, 3,44,32,50, 3,4,7,55, 3,26,4,55, 3,38,26,55,
3,38,55,43, 3,38,44,50, 3,32,20,13, 3,38,43,44, 3,44,43,56, 3,56,43,31, 3,8,11,59, 3,11,8,56, 3,11,56,31, 3,11,31,23,
3,23,19,15, 3,23,15,35, 3,35,15,3, 3,35,3,48, 3,48,3,0,     3,47,35,48, 3,47,48,36, 3,0,34,12, 3,0,51,34, 3,10,9,57,
3,10,57,29, 3,29,57,41, 3,41,57,45, 3,41,37,53, 3,49,45,33, 3,45,37,41, 3,37,25,53, 3,25,18,6, 3,25,6,53, 3,49,37,45
};
  double snubdodeca2v[]={
2*aa,-2,2*bb, 2*aa,2,-2*bb, -2*aa,-2,-2*bb, -2*aa,2,2*bb,
-2*bb,-2*aa,-2, 2*bb,-2*aa,2, 2*bb,2*aa,-2, -2*bb,2*aa,2,
2,2*bb,-2*aa, -2,-2*bb,-2*aa, 2,-2*bb,2*aa, -2,2*bb,2*aa,

(aa+bb*d+g),-(-aa*g+bb+d),(aa*d+bb*g-1), (aa+bb*d+g),(-aa*g+bb+d),-(aa*d+bb*g-1), -(aa+bb*d+g),-(-aa*g+bb+d),-(aa*d+bb*g-1), -(aa+bb*d+g),(-aa*g+bb+d),(aa*d+bb*g-1),
-(aa*d+bb*g-1),-(aa+bb*d+g),-(-aa*g+bb+d), (aa*d+bb*g-1),-(aa+bb*d+g),(-aa*g+bb+d), (aa*d+bb*g-1),(aa+bb*d+g),-(-aa*g+bb+d), -(aa*d+bb*g-1),(aa+bb*d+g),(-aa*g+bb+d),
(-aa*g+bb+d),(aa*d+bb*g-1),-(aa+bb*d+g), -(-aa*g+bb+d),-(aa*d+bb*g-1),-(aa+bb*d+g), (-aa*g+bb+d),-(aa*d+bb*g-1),(aa+bb*d+g), -(-aa*g+bb+d),(aa*d+bb*g-1),(aa+bb*d+g),

(-aa*d+bb*g+1),-(-aa+bb*d-g),(aa*g+bb-d), (-aa*d+bb*g+1),(-aa+bb*d-g),-(aa*g+bb-d), -(-aa*d+bb*g+1),-(-aa+bb*d-g),-(aa*g+bb-d), -(-aa*d+bb*g+1),(-aa+bb*d-g),(aa*g+bb-d),
-(aa*g+bb-d),-(-aa*d+bb*g+1),-(-aa+bb*d-g), (aa*g+bb-d),-(-aa*d+bb*g+1),(-aa+bb*d-g), (aa*g+bb-d),(-aa*d+bb*g+1),-(-aa+bb*d-g), -(aa*g+bb-d),(-aa*d+bb*g+1),(-aa+bb*d-g),
(-aa+bb*d-g),(aa*g+bb-d),-(-aa*d+bb*g+1), -(-aa+bb*d-g),-(aa*g+bb-d),-(-aa*d+bb*g+1), (-aa+bb*d-g),-(aa*g+bb-d),(-aa*d+bb*g+1), -(-aa+bb*d-g),(aa*g+bb-d),(-aa*d+bb*g+1),

(-aa*d+bb*g-1),-(aa-bb*d-g),(aa*g+bb+d), (-aa*d+bb*g-1),(aa-bb*d-g),-(aa*g+bb+d), -(-aa*d+bb*g-1),-(aa-bb*d-g),-(aa*g+bb+d), -(-aa*d+bb*g-1),(aa-bb*d-g),(aa*g+bb+d),
-(aa*g+bb+d),-(-aa*d+bb*g-1),-(aa-bb*d-g), (aa*g+bb+d),-(-aa*d+bb*g-1),(aa-bb*d-g), (aa*g+bb+d),(-aa*d+bb*g-1),-(aa-bb*d-g), -(aa*g+bb+d),(-aa*d+bb*g-1),(aa-bb*d-g),
(aa-bb*d-g),(aa*g+bb+d),-(-aa*d+bb*g-1), -(aa-bb*d-g),-(aa*g+bb+d),-(-aa*d+bb*g-1), (aa-bb*d-g),-(aa*g+bb+d),(-aa*d+bb*g-1), -(aa-bb*d-g),(aa*g+bb+d),(-aa*d+bb*g-1),

(aa+bb*d-g),-(aa*g-bb+d),(aa*d+bb*g+1), (aa+bb*d-g),(aa*g-bb+d),-(aa*d+bb*g+1), -(aa+bb*d-g),-(aa*g-bb+d),-(aa*d+bb*g+1), -(aa+bb*d-g),(aa*g-bb+d),(aa*d+bb*g+1),
-(aa*d+bb*g+1),-(aa+bb*d-g),-(aa*g-bb+d), (aa*d+bb*g+1),-(aa+bb*d-g),(aa*g-bb+d), (aa*d+bb*g+1),(aa+bb*d-g),-(aa*g-bb+d), -(aa*d+bb*g+1),(aa+bb*d-g),(aa*g-bb+d),
(aa*g-bb+d),(aa*d+bb*g+1),-(aa+bb*d-g), -(aa*g-bb+d),-(aa*d+bb*g+1),-(aa+bb*d-g), (aa*g-bb+d),-(aa*d+bb*g+1),(aa+bb*d-g), -(aa*g-bb+d),(aa*d+bb*g+1),(aa+bb*d-g),
};
  int snubdodeca2t[]={
5,7,55,43,31,19, 5,15,3,51,39,27, 5,52,40,28,16,4, 5,46,34,22,10,58, 5,9,57,45,33,21, 5,5,53,41,29,17,
5,2,50,38,26,14, 5,6,54,42,30,18, 5,47,35,23,11,59, 5,8,56,44,32,20, 5,12,0,48,36,24, 5,1,49,37,25,13,

3,7,19,27, 3,19,15,27, 3,7,27,52, 3,52,27,39, 3,4,7,52,     3,31,23,19, 3,40,52,39, 3,58,40,46, 3,58,28,40, 3,9,28,58,
3,9,21,28, 3,21,16,28, 3,21,14,16, 3,14,26,16, 3,26,4,16,   3,46,40,39, 3,51,46,39, 3,34,46,51, 3,51,3,0, 3,58,10,9,
3,12,22,34, 3,12,17,22, 3,24,17,12, 3,5,17,24, 3,54,5,24,   3,6,5,54, 3,17,29,22, 3,22,29,10, 3,33,14,21, 3,2,14,33,
3,49,2,33, 3,1,50,2, 3,1,32,50, 3,5,6,53, 3,24,36,54,       3,36,42,54, 3,36,47,42, 3,47,59,42, 3,42,59,30, 3,59,8,30,
3,8,20,30, 3,20,18,30, 3,20,13,18, 3,13,25,18, 3,32,1,13,   3,2,49,1, 3,44,50,32, 3,4,55,7, 3,26,55,4, 3,38,55,26,
3,38,43,55, 3,38,50,44, 3,32,13,20, 3,38,44,43, 3,44,56,43, 3,56,31,43, 3,8,59,11, 3,11,56,8, 3,11,31,56, 3,11,23,31,
3,23,15,19, 3,23,35,15, 3,35,3,15, 3,35,48,3, 3,48,0,3,     3,47,48,35, 3,47,36,48, 3,0,12,34, 3,0,34,51, 3,10,57,9,
3,10,29,57, 3,29,41,57, 3,41,45,57, 3,41,53,37, 3,49,33,45, 3,45,41,37, 3,37,53,25, 3,25,6,18, 3,25,53,6, 3,49,45,37
};


/*-!,-@,#, -!,@,-#, !,-@,-#, !,@,#,
#,-!,-@, -#,-!,@, -#,!,-@, #,!,@,
-@,#,-!, @,-#,-!, -@,-#,!, @,#,!,

!,-@,#, !,@,-#, -!,-@,-#, -!,@,#,
-#,-!,-@, #,-!,@, #,!,-@, -#,!,@,
@,#,-!, -@,-#,-!, @,-#,!, -@,#,!,*/


boolean DEBUG=/*/true;/*/false;/**/

  public void paint(Graphics g) {
    g.setColor(new Color(0xffffff));
    g.fillRect(0, 0, 200, 200);
    double n=Math.random();
 /*   if(n<.2) drawfig(g, tetrav, tetrat, 3);
    else if(n<.4) drawfig(g, hexav, hexat, 4);
    else if(n<.6) drawfig(g, octav, octat, 3);
    else if(n<.8) drawfig(g, dodecav, dodecat, 5);
    else drawfig(g, icosav, icosat, 3);
    */
    //drawfig(g, tetrav, tetrat, 3);
    //drawfig(g, hexav, hexat, 4);
    //drawfig(g, octav, octat, 3);
    //drawfig(g, dodecav, dodecat, 5);
    //drawfig(g, icosav, icosat, 3);
    //drawfig(g, icosidodecav, icosidodecat, -1);
    //drawfig(g, cuboctav, cuboctat, -1);
    //drawfig(g, truncicosav, truncicosat, -1);
    //drawfig(g, trunctetrav, trunctetrat, -1);
    //drawfig(g, trunchexav, trunchexat, -1);
    //drawfig(g, truncoctav, truncoctat, -1);
    //drawfig(g, truncdodecav, truncdodecat, -1);
    //drawfig(g, rhombicuboctav, rhombicuboctat, -1);
    //drawfig(g, snubhexa1v, snubhexa1t, -1);
    //drawfig(g, snubhexa2v, snubhexa2t, -1);
    //drawfig(g, rhombicosadodecav, rhombicosadodecat, -1);
    //drawfig(g, trunccuboctav, trunccuboctat, -1);
    //drawfig(g, truncicosidodecav, truncicosidodecat, -1);
    //drawfig(g, snubdodeca1v, snubdodeca1t, -1);
    drawfig(g, snubdodeca2v, snubdodeca2t, -1);
  }
  void drawfig(Graphics g, double vs[], int ts[], int m) {
    int z=m, y=m; if(m==-1) m=1;
    double tr[]=randmat();
    for(int back=(DEBUG?1:-1);back<=1;back+=2) for(int t=0;t*m<ts.length;++t) {
      if(z==-1) { y=(int)ts[t]; ++t; }
      double f, td[];
      double a1=vs[ts[t*m  ]*3], a2=vs[ts[t*m  ]*3+1], a3=vs[ts[t*m  ]*3+2];
      f=1/Math.sqrt(a1*a1+a2*a2+a3*a3); a1*=f; a2*=f; a3*=f; td=trans(a1, a2, a3, tr); a1=td[0]; a2=td[1]; a3=td[2];
      double b1=vs[ts[t*m+1]*3], b2=vs[ts[t*m+1]*3+1], b3=vs[ts[t*m+1]*3+2];
      f=1/Math.sqrt(b1*b1+b2*b2+b3*b3); b1*=f; b2*=f; b3*=f; td=trans(b1, b2, b3, tr); b1=td[0]; b2=td[1]; b3=td[2];
      double c1=vs[ts[t*m+2]*3], c2=vs[ts[t*m+2]*3+1], c3=vs[ts[t*m+2]*3+2];
      f=1/Math.sqrt(c1*c1+c2*c2+c3*c3); c1*=f; c2*=f; c3*=f; td=trans(c1, c2, c3, tr); c1=td[0]; c2=td[1]; c3=td[2];
      double d1=b1-a1, d2=b2-a2, d3=b3-a3;
      double e1=c1-a1, e2=c2-a2, e3=c3-a3;
      double f1=e2*d3-d2*e3, f2=e3*d1-d3*e1, f3=e1*d2-d1*e2;
      double da1=a1/(4+a3), da2=a2/(4+a3),
             db1=b1/(4+b3)-da1, db2=b2/(4+b3)-da2,
             dc1=c1/(4+c3)-da1, dc2=c2/(4+c3)-da2;
      if(back*(db1*dc2-dc1*db2)/*f3*/>0) {
        g.setColor(new Color((float)Math.random(), (float)Math.random(), (float)Math.random(), (float)(/*.85+.15*/ .75+.25*Math.random())/*(float)(back<0?.90:0.90)*/));
        int xa[]=new int[y], ya[]=new int[y];
        xa[0]=(int)(a1*3/(4+a3)*100+100); xa[1]=(int)(b1*3/(4+b3)*100+100); xa[2]=(int)(c1*3/(4+c3)*100+100);
        ya[0]=(int)(a2*3/(4+a3)*100+100); ya[1]=(int)(b2*3/(4+b3)*100+100); ya[2]=(int)(c2*3/(4+c3)*100+100);
        for(int w=0/*3*/;w<y;++w) {
          a1=vs[ts[t*m+w]*3]; a2=vs[ts[t*m+w]*3+1]; a3=vs[ts[t*m+w]*3+2];
          f=1/Math.sqrt(a1*a1+a2*a2+a3*a3); a1*=f; a2*=f; a3*=f; td=trans(a1, a2, a3, tr); a1=td[0]; a2=td[1]; a3=td[2];
          xa[w]=(int)(a1*3/(4+a3)*100+100); ya[w]=(int)(a2*3/(4+a3)*100+100);
        }
        g.fillPolygon(xa, ya, y);
        
      }if(z==-1) t+=y-1;
    }if(!DEBUG)return;
    g.setColor(new Color(0, 0, 0)); //g.drawString("Hello", 10, 10);
    for(int num=0;num<vs.length/3;++num) {
      double a1=vs[num*3], a2=vs[num*3+1], a3=vs[num*3+2];
      double f, td[];
      f=1/Math.sqrt(a1*a1+a2*a2+a3*a3); a1*=f; a2*=f; a3*=f; td=trans(a1, a2, a3, tr); a1=td[0]; a2=td[1]; a3=td[2];
      //double da1=a1/(4+a3), da2=a2/(4+a3);
      if(a3<0){//1* db1*dc2-dc1*db2 /*f3*/<0) {
        /*a3=0;*/ g.drawString(""+num, (int)(a1*3/(4+a3)*100+100), (int)(a2*3/(4+a3)*100+100));
        g.fillRect((int)(a1*3/(4+a3)*100+100)-1, (int)(a2*3/(4+a3)*100+100)-1, 3, 3);
      }
    }
  }
  double[] randmat() {
    double[] r=new double[9];
    double s, x, y, z;
    int i, j;
    for(i=0;i<3;++i) {
      x=Math.random()*2-1;
      y=Math.random()*2-1;
      z=Math.random()*2-1;
      s=x*x+y*y+z*z;
      if(s>1) { --i; continue; }
      for(j=0;j<i;++j) {
        s=x*r[j*3  ]
         +y*r[j*3+1]
         +z*r[j*3+2];
        x-=s*r[j*3  ];
        y-=s*r[j*3+1];
        z-=s*r[j*3+2];
      }
      s=x*x+y*y+z*z;
      if(s==0) { --i; continue; }
      s=Math.sqrt(s);
      x/=s; y/=s; z/=s;
      r[i*3  ]=x;
      r[i*3+1]=y;
      r[i*3+2]=z;
    }
    if(r[0]*r[4]*r[8]+r[1]*r[5]*r[6]+r[2]*r[3]*r[7]-r[0]*r[5]*r[7]-r[1]*r[3]*r[8]-r[2]*r[4]*r[6]<0) {
      r[0]=-r[0];
      r[1]=-r[1];
      r[2]=-r[2];
    }
    return(r);
  }
  double[] trans(double x, double y, double z, double[] t) {
    return(new double[]{x*t[0]+y*t[1]+z*t[2],
                        x*t[3]+y*t[4]+z*t[5],
                        x*t[6]+y*t[7]+z*t[8]});
  }
}

Graph.html

If I use this again, I'll probably convert it to c, first. Probably easier than trying to remember how to compile java, anyway.

<html><head><title>Graph</title><body bgcolor=#fe07f2> <applet width=201 height=201 code="Graph.class" codebase="."></applet> </html>

Graph.java

import java.awt.*;
import java.applet.*;
public class Graph extends Applet {
  double minx=-10, miny=-10, maxx=10, maxy=10, stex=1, stey=1;
  double addx, addy, scax, scay, delx, dely;
  int sx, sy;
  float cr, cg, cb;
  float gr[];
  void drawfunction(function fx, function fy, double st, double en) {
    double x, y, dx, dy, tx, ty, a, s;
    for(a=st;a<=en;) {
      drawdot(xinpd(tx=fx.y(a)), yinpd(ty=fy.y(a)));
      x=fx.dydx(a)*scax; y=fy.dydx(a)*scay;
      s=Math.sqrt(x*x+y*y);
      do { dx=tx-fx.y(a+.1/s); dy=ty-fy.y(a+.1/s); if(dx*dx*scax*scax+dy*dy*scay*scay<.127201965) break; s*=2; } while(true);
      a+=.1/s;
    }
  }
  void drawfunction(function f) {
    double x, y, s;
    for(x=minx;x<maxx;) {
      drawdot(xinpd(x), yinpd(y=f.y(x)));
      s=f.dydx(x)*scay/scax; s=Math.sqrt(1+s*s); if(y>maxy-dely*1||y<miny+dely*1||y!=y||s!=s) s=1; //if(s>1000) s=1000;
      x+=.1/scax/s;
    }
  }
  void drawgrid() {
    double z;
    for(z= stey;z<=maxy;z+=stey) drawhorz(yinp(z));
    for(z=-stey;z>=miny;z-=stey) drawhorz(yinp(z));
    for(z= stex;z<=maxx;z+=stex) drawvert(xinp(z));
    for(z=-stex;z>=minx;z-=stex) drawvert(xinp(z));
  }
  void drawaxes() {
    drawhorz(yinp(0));
    drawvert(xinp(0));
  }
  void drawhorz(int y) {
    int x;
    for(x=0;x<sx;++x) {
      subp(x, y-1, cr/2, cg/2, cb/2);
      subp(x, y  , cr  , cg  , cb  );
      subp(x, y+1, cr/2, cg/2, cb/2);
    }
  }
  void drawvert(int x) {
    int y;
    for(y=0;y<sy;++y) {
      subp(x-1, y, cr/2, cg/2, cb/2);
      subp(x  , y, cr  , cg  , cb  );
      subp(x+1, y, cr/2, cg/2, cb/2);
    }
  }
  void drawdot(double x, double y) {
    if(x!=x||y!=y) return;
    int ix=(int)x, iy=(int)y;
    float ox=(float)(1+ix-x), oy=(float)(1+iy-y);
    float px=1-ox, py=1-oy;
    subp(ix-1, iy-1, cr*ox*oy*.05f, cg*ox*oy*.05f, cb*ox*oy*.05f);
    subp(ix  , iy-1, cr   *oy*.05f, cg   *oy*.05f, cb   *oy*.05f);
    subp(ix+1, iy-1, cr*px*oy*.05f, cg*px*oy*.05f, cb*px*oy*.05f);
    subp(ix-1, iy  , cr*ox   *.05f, cg*ox   *.05f, cb*ox   *.05f);
    subp(ix  , iy  , cr      *.05f, cg      *.05f, cb      *.05f);
    subp(ix+1, iy  , cr*px   *.05f, cg*px   *.05f, cb*px   *.05f);
    subp(ix-1, iy+1, cr*ox*py*.05f, cg*ox*py*.05f, cb*ox*py*.05f);
    subp(ix  , iy+1, cr   *py*.05f, cg   *py*.05f, cb   *py*.05f);
    subp(ix+1, iy+1, cr*px*py*.05f, cg*px*py*.05f, cb*px*py*.05f);
  }
  int xinp(double x) {
    return((int)((x+addx)*scax));
  }
  int yinp(double y) {
    return((int)((y+addy)*scay));
  }
  double xinpd(double x) {
    return(((x+addx)*scax));
  }
  double yinpd(double y) {
    return(((y+addy)*scay));
  }
  void subp(int x, int y, float r, float g, float b) {
    if(x<0||y<0||x>=sx||y>=sy) return;
    setp(x, y, getpr(x, y)-r, getpg(x, y)-g, getpb(x, y)-b);
  }
  void fixp(int x, int y) {
    if(x<0||y<0||x>=sx||y>=sy) return;
    float r=getpr(x, y), g=getpg(x, y), b=getpb(x, y);
    if(r<=0) r=0; else if(r>=1) r=1; if(g<=0) g=0; else if(g>=1) g=1; if(b<=0) b=0; else if(b>=1) b=1;
    setp(x, y, r, g, b);
  }
  void setp(int x, int y, float r, float g, float b) {
    if(x<0||y<0||x>=sx||y>=sy) return;
    gr[(x+y*sx)*3]=r; gr[(x+y*sx)*3+1]=g; gr[(x+y*sx)*3+2]=b;
  }
  float getpr(int x, int y) {
    return(gr[(x+y*sx)*3]);
  }
  float getpg(int x, int y) {
    return(gr[(x+y*sx)*3+1]);
  }
  float getpb(int x, int y) {
    return(gr[(x+y*sx)*3+2]);
  }
  void setc(float r, float g, float b) {
    cr=r; cg=g; cb=b;
  }
  void cals() {
    delx=maxx-minx; dely=miny-maxy;
    scax=(sx-1)/delx; scay=(sy-1)/dely;
    addx=-minx+.5/scax; addy=-maxy+.5/scay;
  }
  public void init() {
    int x, y;
    sx=getSize().width; sy=getSize().height; gr=new float[sx*sy*3];
    cals();
    for(y=0;y<sy;++y) for(x=0;x<sx;++x) setp(x, y, 1, 1, 1);


    minx=-10/3.; miny=-10/3.; maxx=10/3.; maxy=10/3.; stex=1; stey=1; cals();
    setc(.6f, .6f, .6f);
    drawfunction(new erf(1));
    setc(.1f, .8f, .8f);
    drawfunction(new erf(2));
    setc(.8f, .1f, .8f);
    drawfunction(new erf(3));
    setc(.8f, .8f, .1f);
    drawfunction(new erf(4));
    setc(.1f, .1f, .8f);
    drawfunction(new erf(5));
/*    setc(.8f, .1f, .1f);
    drawfunction(new expinvsqlau(5));
    setc(.1f, .8f, .1f);
    drawfunction(new expinvsqlau(6));
    setc(.1f, .1f, .1f);
    drawfunction(new expinvsqlau(7));
    setc(.6f, .1f, .81f);
    drawfunction(new expinvsqlau(50));*/
/*
    minx=-1.25; miny=-1.25; maxx=1.25; maxy=1.25; stex=.1; stey=.1; cals();
    setc(.025f, .025f, .025f);
    drawgrid(); stex=1; stey=1;
    setc(.3f, .6f, .8f);
    drawfunction(new fresC(), new fresS(), -2, 2);

    minx=-50; miny=-1.25; maxx=5; maxy=1.25; stex=1; stey=1; cals();
    setc(.1f, .8f, .8f);
    drawfunction(new fresS());
    setc(.8f, .1f, .8f);
    drawfunction(new fresC());

    minx=-1.5; miny=-2.5; maxx=3.5; maxy=2.5; stex=1; stey=1; cals();
    setc(.3f, .6f, .8f);
    drawfunction(new paray(new arecip(2)), new parax(new arecip(2)), .05, 50);

    minx=-2.5; miny=-1.5; maxx=2.5; maxy=3.5; stex=1; stey=1; cals();
    setc(.6f, .6f, .6f);
    drawfunction(new expinvsq());
    setc(.1f, .8f, .8f);
    drawfunction(new expinvsqlau(1));
    setc(.8f, .1f, .8f);
    drawfunction(new expinvsqlau(2));
    setc(.8f, .8f, .1f);
    drawfunction(new expinvsqlau(3));
    setc(.1f, .1f, .8f);
    drawfunction(new expinvsqlau(4));
    setc(.8f, .1f, .1f);
    drawfunction(new expinvsqlau(5));
    setc(.1f, .8f, .1f);
    drawfunction(new expinvsqlau(6));
    setc(.1f, .1f, .1f);
    drawfunction(new expinvsqlau(7));
    setc(.6f, .1f, .81f);
    drawfunction(new expinvsqlau(50));

    double ax=0, ay=0;//double ax=new multisin().y(123), ay=new multicos().y(123);
    minx=ax-5/3.; miny=ay-5/3.; maxx=ax+5/3.; maxy=ay+5/3.; stex=.1; stey=.1; cals();
    setc(.025f, .025f, .025f);
    drawgrid(); stex=1; stey=1;
    setc(.3f, .6f, .8f);
    drawfunction(new multisin(), new multicos(), -3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825, 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825);

    minx=-10; miny=-10; maxx=10; maxy=10; stex=1; stey=1; cals();
    setc(.6f, .6f, .6f);
    drawfunction(new sin());
    setc(.1f, .8f, .8f);
    drawfunction(new sintay(1));
    setc(.8f, .1f, .8f);
    drawfunction(new sintay(2));
    setc(.8f, .8f, .1f);
    drawfunction(new sintay(3));
    setc(.1f, .1f, .8f);
    drawfunction(new sintay(4));
    setc(.8f, .1f, .1f);
    drawfunction(new sintay(5));
    setc(.1f, .8f, .1f);
    drawfunction(new sintay(6));
    setc(.1f, .1f, .1f);
    drawfunction(new sintay(7));

    minx=-2.5; miny=-.5; maxx=2.5; maxy=4.5; stex=1; stey=1; cals();
    setc(.3f, .6f, .8f);
    drawfunction(new expinvsq());

    minx=-2.5; miny=-.5; maxx=2.5; maxy=4.5; stex=1; stey=1; cals();
    setc(.3f, .6f, .8f);
    drawfunction(new expinv());

    minx=-1; miny=-7; maxx=9; maxy=3; stex=1; stey=1; cals();
    setc(.3f, .6f, .8f);
    drawfunction(new ln());

    minx=-5; miny=-1; maxx=5; maxy=9; stex=1; stey=1; cals();
    setc(.3f, .6f, .8f);
    drawfunction(new exp());

    minx=-5; miny=-5; maxx=5; maxy=5; stex=1; stey=1; cals();
    setc(.1f, .8f, .8f);
    drawfunction(new sinh());
    setc(.8f, .1f, .8f);
    drawfunction(new cosh());
    setc(.8f, .8f, .1f);
    drawfunction(new tanh());

    minx=-5; miny=-5; maxx=5; maxy=5; stex=1; stey=1; cals();
    setc(.1f, .8f, .8f);
    drawfunction(new csch());
    setc(.8f, .1f, .8f);
    drawfunction(new sech());
    setc(.8f, .8f, .1f);
    drawfunction(new coth());
*/

    setc(.8f, .8f, .8f);
    drawaxes();
    setc(.1f, .1f, .1f);
    drawgrid();
    for(y=0;y<sy;++y) for(x=0;x<sx;++x) fixp(x, y);
  }
  public void paint(Graphics g) {
    int x, y;
    for(y=0;y<sy;++y) for(x=0;x<sx;++x) {
      g.setColor(new Color(gr[(x+y*sx)*3], gr[(x+y*sx)*3+1], gr[(x+y*sx)*3+2]));
      g.fillRect(x, y, 1, 1);
    }
  }
}

abstract class function {
  abstract double y(double x);
  abstract double dydx(double x);
}

class sinh extends function {
  double y(double x) {
    return((Math.exp(x)-Math.exp(-x))/2);
  }
  double dydx(double x) {
    return((Math.exp(x)+Math.exp(-x))/2);
  }
}

class cosh extends function {
  double y(double x) {
    return((Math.exp(x)+Math.exp(-x))/2);
  }
  double dydx(double x) {
    return((Math.exp(x)-Math.exp(-x))/2);
  }
}

class tanh extends function {
  double y(double x) {
    return((Math.exp(x)-Math.exp(-x))/(Math.exp(x)+Math.exp(-x)));
  }
  double dydx(double x) {
    return(1-y(x)*y(x));
  }
}



class csch extends function {
  double y(double x) {
    return(1/((Math.exp(x)-Math.exp(-x))/2));
  }
  double dydx(double x) {
    return(-((Math.exp(x)+Math.exp(-x))/2)*y(x)*y(x));
  }
}

class sech extends function {
  double y(double x) {
    return(1/((Math.exp(x)+Math.exp(-x))/2));
  }
  double dydx(double x) {
    return(-((Math.exp(x)-Math.exp(-x))/2)*y(x)*y(x));
  }
}

class coth extends function {
  double y(double x) {
    return(1/((Math.exp(x)-Math.exp(-x))/(Math.exp(x)+Math.exp(-x))));
  }
  double dydx(double x) {
    return(1-y(x)*y(x));
  }
}


class exp extends function {
  double y(double x) {
    return(Math.exp(x));
  }
  double dydx(double x) {
    return(Math.exp(x));
  }
}


class ln extends function {
  double y(double x) {
    return(Math.log(x));
  }
  double dydx(double x) {
    return(1/x);
  }
}


class expinv extends function {
  double y(double x) {
    return(Math.exp(-1/x));
  }
  double dydx(double x) {
    return(Math.exp(-1/x)/x/x);
  }
}


class expinvsq extends function {
  double y(double x) {
    return(Math.exp(-1/x/x));
  }
  double dydx(double x) {
    return(2*Math.exp(-1/x/x)/x/x/x);
  }
}


class sin extends function {
  double y(double x) {
    return(Math.sin(x));
  }
  double dydx(double x) {
    return(Math.cos(x));
  }
}

class sintay extends function {
  int n;
  sintay(int nn) { n=nn; }
  double y(double x) {
    double f=1, r=0, t;
    int j, k=1, i;
    for(j=0;j<n;++j) {
      for(i=0,t=1;i<k;++i) t*=x;
      r+=t*f;
      ++k; f/=k; ++k; f/=-k;
    }
    return(r);
  }
  double dydx(double x) {
    double f=1, r=0, t;
    int j, k=1, i;
    for(j=0;j<n;++j) {
      for(i=0,t=1;i<k-1;++i) t*=x;
      r+=t*f*k;
      ++k; f/=k; ++k; f/=-k;
    }
    return(r);
  }
}

/*
class multisin extends function {
  double y(double x) {
    double r=0, f=1;
    int p=2;
    for(;p<100;++p) if(isp(p)) {
      r+=Math.sin(x*p)*p*f;
      f/=-1.1;
    }
    return(r);
  }
  boolean isp(int p) {
    for(int x=2;x<p;++x) if(p/x*x==p) return(false);
    return(true);
  }
  double dydx(double x) {
    double r=0, f=1;
    int p=2;
    for(;p<100;++p) if(isp(p)) {
      r+=Math.cos(x*p)*p*p*f;
      f/=-1.1;
    }
    return(r);
  }
}


class multicos extends function {
  double y(double x) {
    double r=0, f=1;
    int p=2;
    for(;p<100;++p) if(isp(p)) {
      r+=Math.cos(x*p)*p*f;
      f/=-1.1;
    }
    return(r);
  }
  boolean isp(int p) {
    for(int x=2;x<p;++x) if(p/x*x==p) return(false);
    return(true);
  }
  double dydx(double x) {
    double r=0, f=1;
    int p=2;
    for(;p<100;++p) if(isp(p)) {
      r-=Math.sin(x*p)*p*p*f;
      f/=-1.1;
    }
    return(r);
  }
}
*/

class multisin extends function {
  double y(double x) {
    double r=0, f=1;
    int p=1, q=-1;
    for(;p<100000;q-=(p-=q)) {
      r+=Math.sin(x*p)/q;
      f/=-2;
    }
    return(r);
  }
  double dydx(double x) {
    double r=0, f=1;
    int p=1, q=-1;
    for(;p<100000;q-=(p-=q)) {
      r+=Math.cos(x*p)*p/q;
      f/=-2;
    }
    return(r);
  }
}


class multicos extends function {
  double y(double x) {
    double r=0, f=1;
    int p=1, q=-1;
    for(;p<100000;q-=(p-=q)) {
      r+=Math.cos(x*p)/q;
      f/=-2;
    }
    return(r);
  }
  double dydx(double x) {
    double r=0, f=1;
    int p=1, q=-1;
    for(;p<100000;q-=(p-=q)) {
      r-=Math.sin(x*p)*p/q;
      f/=-2;
    }
    return(r);
  }
}


class parax extends function {
  function r;
  parax(function rr) { r=rr; }
  double y(double x) {
    return(r.y(x)*Math.sin(x));
  }
  double dydx(double x) {
    return(r.dydx(x)*Math.sin(x)+r.y(x)*Math.cos(x));
  }
}

class paray extends function {
  function r;
  paray(function rr) { r=rr; }
  double y(double x) {
    return(r.y(x)*Math.cos(x));
  }
  double dydx(double x) {
    return(r.dydx(x)*Math.cos(x)-r.y(x)*Math.sin(x));
  }
}


class expinvsqlau extends function {
  int n;
  expinvsqlau(int nn) { n=nn; }
  double y(double x) {
    double f=1, r=0, t;
    int j, k=0, i;
    for(j=0;j<n+1;++j) {
      for(i=0,t=1;i<k;++i) t/=-x*x;
      r+=t*f;
      ++k; f/=k;
    }
    return(r);
  }
  double dydx(double x) {
    double f=1, r=0, t;
    int j, k=0, i;
    for(j=0;j<n+1;++j) {
      for(i=0,t=1;i<k;++i) t/=-x*x;
      r+=-2*j*t*f/x;
      ++k; f/=k;
    }
    return(r);
  }
}

class recip extends function {
  double y(double x) {
    return(1/x);
  }
  double dydx(double x) {
    return(-1/x/x);
  }
}

class arecip extends function {
  double a;
  arecip(double aa) { a=aa; }
  double y(double x) {
    return(a/x);
  }
  double dydx(double x) {
    return(-a/x/x);
  }
}

class fresS extends function {
  double y(double x) {
    double t=0, x4=-x*x*x*x, b=x*x*x, p=-10;
    for(int n=0;(t-p>.00001||p-t>.00001)&&n<1000;++n) {
      p=t; t+=b/(4*n+3); b*=x4/((2*n+2)*(2*n+3));
    }
    return(t);
  }
  double dydx(double x) {
    return(Math.sin(x*x));
  }
}

class fresC extends function {
  double y(double x) {
    double t=0, x4=-x*x*x*x, b=x, p=-10;
    for(int n=0;(t-p>.00001||p-t>.00001)&&n<1000;++n) {
      p=t; t+=b/(4*n+1); b*=x4/((2*n+1)*(2*n+2));
    }
    return(t);
  }
  double dydx(double x) {
    return(Math.cos(x*x));
  }
}

class erf extends function {
  int e;
  double w=1/Math.sqrt(3.141592653589793238462643383);
  erf(int ee) { e=ee; for(;ee>1;--ee) w*=ee; }
  double y(double x) {
    double t=0, x4=-Math.pow(x, e), b=x*w, p=-10;
    for(int n=0;(t-p>.00001||p-t>.00001)&&n<1000;++n) {
      p=t; t+=b/(e*n+1); b*=x4/(n+1);
    }
    return(t);
  }
  double dydx(double x) {
    return(w*Math.exp(-Math.pow(x, e)));
  }
}

class check extends function {
  erf a=new erf(3);
  double y(double x) {
    return(1+(a.y(x+.001)-a.y(x-.001))*500-a.dydx(x));
  }
  double dydx(double x) {
    return(0);
  }
}
Last updated: 05-30-2005 19:18:00
10-26-2009 08:16:03
The contents of this article is licensed from www.wikipedia.org under the GNU Free Documentation License. Click here to see the transparent copy and copyright details
Science kits, science lessons, science toys, maths toys, hobby kits, science games and books - these are some of many products that can help give your kid an edge in their science fair projects, and develop a tremendous interest in the study of science. When shopping for a science kit or other supplies, make sure that you carefully review the features and quality of the products. Compare prices by going to several online stores. Read product reviews online or refer to magazines.

Start by looking for your science kit review or science toy review. Compare prices but remember, Price $ is not everything. Quality does matter.
Science Fair Coach
What do science fair judges look out for?
ScienceHound
Science Fair Projects for students of all ages
All Science Fair Projects.com Site
All Science Fair Projects Homepage
Search | Browse | Links | From-our-Editor | Books | Help | Contact | Privacy | Disclaimer | Copyright Notice