/*
 *  OBJ List
 *  (c) François Pirsch 2007
 *
 *  Liste de solides mathématiques courants au format OBJ.
 *  Les objets sont rangés en groupes.
 *  Le tableau objName associe un nom complet au nom court des objets (surtout pour les pyramides et prismes)
 */

var objList = new Array();
var objName = new Array();
var objPrefix = new Array();

// Solides de Platon
objName.platon = "Solides de Platon";
objName.platoncube       = "cube";
objName.platontetraedre  = "tétraèdre";
objName.platonoctaedre   = "octaèdre";
objName.platondodecaedre = "dodécaèdre";
objName.platonicosaedre  = "icosaèdre";
objList.platon = new Array();
objList.platon.tetraedre = "# Tétraèdre régulier\n\nv 1.00 0.00      0.00\nv -.50 .8660254  0.00\nv -.50 -.8660254 0.00\nv 0.00 0.00      1.41421356\n \nf 1 3 2\nf 1 4 3\nf 1 2 4\nf 2 3 4";
objList.platon.cube = "# Cube simple.\n\n# sommets du cube\nv 0 0 0\nv 1 0 0\nv 1 1 0\nv 0 1 0\nv 0 0 1\nv 1 0 1\nv 1 1 1\nv 0 1 1\n\n# 6 faces\nf 4 3 2 1\nf 3 4 8 7\nf 5 6 7 8\nf 6 5 1 2\nf 1 5 8 4\nf 2 3 7 6";
objList.platon.octaedre = "# Octaèdre régulier\n\nv  1  0  0\nv  0  1  0\nv -1  0  0\nv  0 -1  0\nv  0  0  1\nv  0  0 -1\n\n" +
	"# pyramide supérieure\nf 1 5 4\nf 4 5 3\nf 3 5 2\nf 2 5 1\n\n# pyramide inférieure\nf 1 4 6\nf 4 3 6\nf 3 2 6\nf 2 1 6";
objList.platon.dodecaedre = "# Dodécaèdre régulier\n\n# 20 sommets\n\nv 0  .618034  1.618033\nv 0  .618033 -1.618033\nv 0 -.618033 -1.618033\nv 0 -.618033  1.618033\n\n" +
	"v  .618034  1.618033 0\nv  .618033 -1.618033 0\nv -.618033 -1.618033 0\nv -.618033  1.618033 0\n\n" +
	"v  1.618034 0  .618033\nv  1.618033 0 -.618033\nv -1.618033 0 -.618033\nv -1.618033 0  .618033\n\n" +
	"v  1  1  1\nv  1  1 -1\nv  1 -1 -1\nv  1 -1  1\nv -1  1  1\nv -1  1 -1\nv -1 -1 -1\nv -1 -1  1\n\n" +
	"# 12 faces pentagonales\nf 1 4 16 9 13\nf 1 17 12 20 4\nf 1 13 5 8 17\nf 4 20 7 6 16\nf 20 12 11 19 7\n" +
	"f 17 8 18 11 12\nf 13 9 10 14 5\nf 16 6 15 10 9\nf 5 14 2 18 8\nf 7 19 3 15 6\nf 2 14 10 15 3\nf 2 3 19 11 18";
objList.platon.icosaedre = "# Icosaèdre régulier\n\n# 12 sommets\n\nv 0  1.618033  1\nv 0 -1.618033  1\nv 0 -1.618033 -1\nv 0  1.618033 -1\n" +
	"v  1 0  1.618033\nv  1 0 -1.618033\nv -1 0 -1.618033\nv -1 0  1.618033\nv  1.618033  1 0\n" +
	"v -1.618033  1 0\nv -1.618033 -1 0\nv  1.618033 -1 0\n\n" +
	"# 20 faces triangulaires\n\nf 1 8 5\nf 5 8 2\nf 1 5 9\nf 9 5 12\nf 12 5 2\nf 2 8 11\nf 11 8 10\n" +
	"f 10 8 1\nf 4 1 9\nf 4 9 6\nf 4 6 7\nf 4 7 10\nf 4 10 1\nf 7 11 10\n" +
	"f 6 9 12\nf 3 2 11\nf 3 11 7\nf 3 7 6\nf 3 6 12\nf 3 12 2";

// Prismes
objName.prisme = "Prismes";
objName.prismetriangle  = "prisme à base triangulaire";
objName.prismecarre     = "prisme à base carrée";
objName.prismepentagone = "prisme à base pentagonale";
objName.prismehexagone  = "prisme à base hexagonale";
objList.prisme = new Array();
objList.prisme.triangle = "# Prisme droit à base triangulaire\n\nv  1         0        0\nv -0.5      -0.866025 0\nv -0.5       0.866025 0\n\n" +
	"# Sommets de la seconde base\nv  1         0        2\nv -0.5      -0.866025 2\nv -0.5       0.866025 2\n\n" +
	"# Bases\nf 1 2 3\nf 6 5 4\n\n# Faces latérales\nf 1 4 5 2\nf 2 5 6 3\nf 3 6 4 1\n# 6 vertices, 5 faces";
objList.prisme.carre = "# Prisme droit à base carrée\n\nv  1         0        0\nv  0        -1        0\nv -1         0        0\nv  0         1        0\n\n" +
	"# Sommets de la seconde base\nv  1         0        2\nv  0        -1        2\nv -1         0        2\nv  0         1        2\n\n" +
	"# Bases\nf 1 2 3 4\nf 8 7 6 5\n\n# Faces latérales\nf 1 5 6 2\nf 2 6 7 3\nf 3 7 8 4\nf 4 8 5 1\n# 8 vertices, 6 faces";
objList.prisme.pentagone = "# Prisme droit à base pentagonale\n\nv  1         0        0\nv  0.309017 -0.951057 0\nv -0.809017 -0.587785 0\nv -0.809017  0.587785 0\nv  0.309017  0.951057 0\n\n" +
	"# Sommets de la seconde base\nv  1         0        2\nv  0.309017 -0.951057 2\nv -0.809017 -0.587785 2\nv -0.809017  0.587785 2\nv  0.309017  0.951057 2\n\n" +
	"# Bases\nf 1 2 3 4 5\nf 10 9 8 7 6\n\n# Faces latérales\nf 1 6 7 2\nf 2 7 8 3\nf 3 8 9 4\nf 4 9 10 5\nf 5 10 6 1\n# 10 vertices, 7 faces";
objList.prisme.hexagone = "# Prisme droit à base hexagonale\nv  1         0        0\nv  0.5      -0.866025 0\nv -0.5      -0.866025 0\nv -1         0        0\nv -0.5       0.866025 0\nv  0.5       0.866025 0\n\n" +
	"# Sommets de la seconde base\nv  1         0        2\nv  0.5      -0.866025 2\nv -0.5      -0.866025 2\nv -1         0        2\nv -0.5       0.866025 2\nv  0.5       0.866025 2\n\n" +
	"# Bases\nf 1 2 3 4 5 6\nf 12 11 10 9 8 7\n\n# Faces latérales\nf 1 7 8 2\nf 2 8 9 3\nf 3 9 10 4\nf 4 10 11 5\nf 5 11 12 6\nf 6 12 7 1\n# 12 vertices, 8 faces";

// Pyramides
objName.pyramide = "Pyramides";		// Les noms des bases sont les mêmes que pour les prismes.
objName.pyramidetriangle  = "pyramide à base triangulaire";
objName.pyramidecarre     = "pyramide à base carrée";
objName.pyramidepentagone = "pyramide à base pentagonale";
objName.pyramidehexagone  = "pyramide à base hexagonale";
objList.pyramide = new Array();
objList.pyramide.triangle = "# Pyramide régulière à base triangulaire\n\n# Sommet principal\nv 0 0 2 3\n\n" +
	"# La base est un triangle équilatéral.\nv  1         0        0\nv -0.5      -0.866025 0\nv -0.5       0.866025 0\n\n" +
	"# Base\nf 2 3 4\n\n# Faces latérales\nf 1 3 2\nf 1 4 3\nf 1 2 4\n# 4 vertices, 4 faces";
objList.pyramide.carre = "# Pyramide régulière à base carrée.\n\n# Sommet principal\nv 0 0 2 4\n\n" +
	"# La base est un carré.\nv  0        -1        0\nv -1         0        0\nv  0         1        0\nv  1         0        0\n\n" +
	"# Base\nf 2 3 4 5\n\n# Faces latérales\nf 1 3 2\nf 1 4 3\nf 1 5 4\nf 1 2 5\n# 5 vertices, 5 faces";
objList.pyramide.pentagone = "# Pyramide régulière à base pentagonale\n\n# Sommet principal\nv 0 0 2 5\n\n" +
	"# La base est un pentagone régulier.\nv  1         0        0\nv  0.309017 -0.951057 0\nv -0.809017 -0.587785 0\nv -0.809017  0.587785 0\nv  0.309017  0.951057 0\n\n" +
	"# Base\nf 2 3 4 5 6\n\n# Faces latérales\nf 1 3 2\nf 1 4 3\nf 1 5 4\nf 1 6 5\nf 1 2 6\n# 6 vertices, 6 faces";
objList.pyramide.hexagone = "# Pyramide régulière à base heagonale\n\n# Sommet principal\nv 0 0 2 6\n\n" +
	"# La base est un hexagone régulier.\nv  0.5      -0.866025 0\nv -0.5      -0.866025 0\nv -1         0        0\nv -0.5       0.866025 0\nv  0.5       0.866025 0\nv  1         0        0\n\n" +
	"# Base\nf 2 3 4 5 6 7\n\n# Faces latérales\nf 1 3 2\nf 1 4 3\nf 1 5 4\nf 1 6 5\nf 1 7 6\nf 1 2 7\n# 7 vertices, 7 faces";
