/*
** hcubeslice.
*/

#include <stdio.h>
#include "peek.h"

/*
** hcubeslice()
** 
** assumes that hcube.pk is in the current directory, and creates
** the flipbook file hcube.ps in the same directory. 
** NOTE:
** lots of imbedded constants in the below
*/
int
hcubeslice() {
  Piece 
    *object = NULL, 
    *cross_object = NULL;
  FILE 
    *obj_file, 
    *enum_file,
    *file;
  Enviro *env;
  char c, output[10], err2[80];
  Matx *init, *delta;
  int i, j;

  obj_file = fopen("hcube.pk","r");
  if (!(obj_file)) {
    sprintf(err2, "hcubeslice: can't find hcube.pk\n");
    strcat(err, err2); return(-1);
  }
  if (read_object(obj_file, &object)) {
    sprintf(err2, "hcubeslice: troubles reading hypercube file\n");
    strcat(err, err2);  return(-1);
  }
  fclose(obj_file);

  init = (Matx *) malloc(sizeof(Matx));
  init->m[0][0] = 0.7071;  init->m[0][1] = 0.40828;  init->m[0][2] = 0.288674;
  init->m[0][3] = -0.499983;  init->m[0][4] = 0;  init->m[1][0] = -0.7071;
  init->m[1][1] = 0.40828;  init->m[1][2] = 0.288674;
  init->m[1][3] = -0.499983;  init->m[1][4] = 0;  init->m[2][0] = 0;
  init->m[2][1] = -0.8165;  init->m[2][2] = 0.2887;  init->m[2][3] = -0.500028;
  init->m[2][4] = 0;  init->m[3][0] = 0;  init->m[3][1] = 0;
  init->m[3][2] = 0.866;  init->m[3][3] = 0.5;  init->m[3][4] = 0;
  init->m[4][0] = 0;  init->m[4][1] = 0;  init->m[4][2] = 0;
  init->m[4][3] = -2;   init->m[4][4] = 1;

  delta = (Matx *) malloc(sizeof(Matx));
  for (i=0; i<=4; i++)
    for (j=0; j<=4; j++)
      delta->m[i][j] = (i == j ? 1 : 0);
  delta->m[4][3] = 0.1;

  env = (Enviro *) malloc(sizeof(Enviro));
  env->light[0] = 0.70711; env->light[1] = 0; env->light[2] = 0.70711;
  env->amb = 0.15;
  env->eye[0] = 14; env->eye[1] = 0.58; env->eye[2] = 1;
  env->distance = 8.4;
  env->scale = 1.8;
  env->frontwidth = 1.5;
  env->backwidth = 0.5;

  if (psslice_4d("hcube.ps", object, init, delta, env, 41)) {
    sprintf(err2, "hcubeslice:\n"); 
    strcat(err, err2); return(-1);
  }
}
