Image:Icosahedron.png

Icosahedron, rendered by Java applet I wrote.

Polyhedra.html

<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.*;

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 tetrav[]={
-1,-s,0, -1,s,0, 1,0,-s, 1,0,s};
  int tetrat[]={
0,3,1, 3,2,1, 1,2,0, 3,0,2};
  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,1,3,2, 2,3,7,6, 0,2,6,4, 3,1,5,7, 0,4,5,1, 6,7,5,4};
  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};
  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);
  }
  void drawfig(Graphics g, double vs[], int ts[], int m) {
    double tr[]=randmat();
    for(int back=-1;back<=1;back+=2) for(int t=0;t*m<ts.length;++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)(back<0?.90:0.90)));
        int xa[]=new int[m], ya[]=new int[m];
        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=3;w<m;++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, m);
      }
    }
  }
  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]});
  }
}
Missing image
Heckert_GNU_white.png


Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
Subject to disclaimers.

File links

There are no pages that link to this file.

Navigation

  • Art and Cultures
    • Art (https://academickids.com/encyclopedia/index.php/Art)
    • Architecture (https://academickids.com/encyclopedia/index.php/Architecture)
    • Cultures (https://www.academickids.com/encyclopedia/index.php/Cultures)
    • Music (https://www.academickids.com/encyclopedia/index.php/Music)
    • Musical Instruments (http://academickids.com/encyclopedia/index.php/List_of_musical_instruments)
  • Biographies (http://www.academickids.com/encyclopedia/index.php/Biographies)
  • Clipart (http://www.academickids.com/encyclopedia/index.php/Clipart)
  • Geography (http://www.academickids.com/encyclopedia/index.php/Geography)
    • Countries of the World (http://www.academickids.com/encyclopedia/index.php/Countries)
    • Maps (http://www.academickids.com/encyclopedia/index.php/Maps)
    • Flags (http://www.academickids.com/encyclopedia/index.php/Flags)
    • Continents (http://www.academickids.com/encyclopedia/index.php/Continents)
  • History (http://www.academickids.com/encyclopedia/index.php/History)
    • Ancient Civilizations (http://www.academickids.com/encyclopedia/index.php/Ancient_Civilizations)
    • Industrial Revolution (http://www.academickids.com/encyclopedia/index.php/Industrial_Revolution)
    • Middle Ages (http://www.academickids.com/encyclopedia/index.php/Middle_Ages)
    • Prehistory (http://www.academickids.com/encyclopedia/index.php/Prehistory)
    • Renaissance (http://www.academickids.com/encyclopedia/index.php/Renaissance)
    • Timelines (http://www.academickids.com/encyclopedia/index.php/Timelines)
    • United States (http://www.academickids.com/encyclopedia/index.php/United_States)
    • Wars (http://www.academickids.com/encyclopedia/index.php/Wars)
    • World History (http://www.academickids.com/encyclopedia/index.php/History_of_the_world)
  • Human Body (http://www.academickids.com/encyclopedia/index.php/Human_Body)
  • Mathematics (http://www.academickids.com/encyclopedia/index.php/Mathematics)
  • Reference (http://www.academickids.com/encyclopedia/index.php/Reference)
  • Science (http://www.academickids.com/encyclopedia/index.php/Science)
    • Animals (http://www.academickids.com/encyclopedia/index.php/Animals)
    • Aviation (http://www.academickids.com/encyclopedia/index.php/Aviation)
    • Dinosaurs (http://www.academickids.com/encyclopedia/index.php/Dinosaurs)
    • Earth (http://www.academickids.com/encyclopedia/index.php/Earth)
    • Inventions (http://www.academickids.com/encyclopedia/index.php/Inventions)
    • Physical Science (http://www.academickids.com/encyclopedia/index.php/Physical_Science)
    • Plants (http://www.academickids.com/encyclopedia/index.php/Plants)
    • Scientists (http://www.academickids.com/encyclopedia/index.php/Scientists)
  • Social Studies (http://www.academickids.com/encyclopedia/index.php/Social_Studies)
    • Anthropology (http://www.academickids.com/encyclopedia/index.php/Anthropology)
    • Economics (http://www.academickids.com/encyclopedia/index.php/Economics)
    • Government (http://www.academickids.com/encyclopedia/index.php/Government)
    • Religion (http://www.academickids.com/encyclopedia/index.php/Religion)
    • Holidays (http://www.academickids.com/encyclopedia/index.php/Holidays)
  • Space and Astronomy
    • Solar System (http://www.academickids.com/encyclopedia/index.php/Solar_System)
    • Planets (http://www.academickids.com/encyclopedia/index.php/Planets)
  • Sports (http://www.academickids.com/encyclopedia/index.php/Sports)
  • Timelines (http://www.academickids.com/encyclopedia/index.php/Timelines)
  • Weather (http://www.academickids.com/encyclopedia/index.php/Weather)
  • US States (http://www.academickids.com/encyclopedia/index.php/US_States)

Information

  • Home Page (http://academickids.com/encyclopedia/index.php)
  • Contact Us (http://www.academickids.com/encyclopedia/index.php/Contactus)

  • Clip Art (http://classroomclipart.com)
Toolbox
Personal tools