*****************************************************************************
*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <math.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
-#include <math.h>
#include <stdlib.h>
#include <errno.h>
-#include "config.h"
#include "polyhedra.h"
extern const char *progname;
} while(0)
#define Malloc(lvalue,n,type) do {\
- if (!(lvalue = (type*) malloc((n) * sizeof(type)))) \
- Err("out of memory");\
+ if (!(lvalue = (type*) calloc((n), sizeof(type)))) \
+ abort();\
} while(0)
#define Realloc(lvalue,n,type) do {\
if (!(lvalue = (type*) realloc(lvalue, (n) * sizeof(type)))) \
- Err("out of memory");\
+ abort();\
} while(0)
#define Calloc(lvalue,n,type) do {\
if (!(lvalue = (type*) calloc(n, sizeof(type))))\
- Err("out of memory");\
+ abort();\
} while(0)
#define Matalloc(lvalue,n,m,type) do {\
if (!(lvalue = (type**) matalloc(n, (m) * sizeof(type))))\
- Err("out of memory");\
+ abort();\
} while(0)
#define Sprintfrac(lvalue,x) do {\
static Fraction frax;
-static struct {
+static const struct {
char *Wythoff, *name, *dual, *group, *class, *dual_class;
short Coxeter, Wenninger;
} uniform[] = {
* Dihedral Schwarz Triangles (D5 only)
***************************************************************************/
+ /* {"3|2 5/2", "xyz",
+ "xyz",
+ "xyz",
+ "",
+ "",
+ 0, 0},
+*/
+
+
+
/* (2 2 5) (D1/5) */
/* 1 */ {"2 5|2", "Pentagonal Prism",
"Pentagonal Dipyramid",
"Catalan Solid",
30, 14},
- /* 33 */ {"2 3 5|", "Truncated Icosidodechedon",
+ /* 33 */ {"2 3 5|", "Truncated Icosidodecahedron",
"Disdyakistriacontahedron",
"Icosahedral (I[1])",
"Archimedian Solid",
static void
frac(double x)
{
- static Fraction zero = {0,1}, inf = {1,0};
+ static const Fraction zero = {0,1}, inf = {1,0};
Fraction r0, r;
long f;
double s = x;
return dihedral(P, "Dihedron", "Hosohedron");
}
} else {/* other nontabulated */
- static char *pre[] = {"Tetr", "Oct", "Icos"};
+ static const char *pre[] = {"Tetr", "Oct", "Icos"};
Malloc(P->name, 50, char);
Malloc(P->dual_name, 50, char);
sprintf(P->name, "%sahedral ", pre[P->K - 3]);
scale(sin(angle), cross(axis, vertex)));
}
-Vector x, y, z;
+static Vector x, y, z;
/*
* rotate the standard frame
static void
rotframe(double azimuth, double elevation, double angle)
{
- static Vector X = {1,0,0}, Y = {0,1,0}, Z = {0,0,1};
+ static const Vector X = {1,0,0}, Y = {0,1,0}, Z = {0,0,1};
Vector axis;
axis = rotate(rotate (X, Y, elevation), Z, azimuth);
facelets++;
} else if (P->even != -1) {
- if (hit[i]) {
+ if (hit && hit[i]) {
push_face3 (result, P->incid[3][i], P->incid[0][i], ii);
push_face3 (result, P->incid[1][i], P->incid[2][i], ii);
} else {
int count = 0;
polyhedron **result;
- Malloc (result, last_uniform * 2 + 1, polyhedron*);
+ Malloc (result, last_uniform * 2 + 3, polyhedron*);
while (index < last_uniform) {
- static char sym[4];
+ char sym[4];
Polyhedron *P;
sprintf(sym, "#%d", index + 1);
}
*polyhedra_ret = result;
+ count++; /* leave room for teapot */
return count;
}