#include <GL/gl.h>
#include <stdlib.h>
#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
void draw_line_cube(double r);
void draw_diamond();
void fbnSolidTexturedCube(double size);
void copy_vertex(GLfloat *dest, GLfloat *src);
void set_vertex(GLfloat *dest, GLfloat x, GLfloat y, GLfloat z);
float randfn1();
float randf01();
void xyz2rtp(double *r, double *t, double *p, double x, double y, double z);
void rtp2xyz(double *x, double *y, double *z, double r, double t, double p);
void rand_vector(double *x, double *y, double *z);
double vector_length(double x, double y, double z);
void stretch(double *x, double *y, double *z, double r);
int read_ppm_to_buffer(unsigned char **buffer, int *width, int *height,\
const char *filename);
void save_buffer_to_ppm(unsigned char *buffer, int width, int height,\
char *filename);
int generate_checkerboard_texture(unsigned char **buffer, int *width, int *height);