I'm not new to C ++, but I'm used to running the g ++ compiler against Microsoft VS C ++. I understand what this error should mean. That should mean I'm missing ';' in the line before or in the Polygon class. I do not seem to see anything wrong. g ++ compiles the code without errors. It seems that the Polygon class is not loading. Can someone please show me what I missed. I have Application.cpp, Polygon.h and Polygon.cpp below.
Application.cpp metadata errors, but if I can fix the first ones, the following will follow:
application.cpp (121): error C2143: syntax error: missing ';' before '*'
application.cpp (121): error C4430: missing type specifier - int. Note: C ++ does not support default-int
application.cpp (121): error C2365: "Polygon": override; the previous definition was a “function” c: \ program files \ microsoft sdks \ windows \ v6.0a \ include \ wingdi.h (4203): see the Polygon declaration
#include <sstream>
#include <numeric>
#include <math.h>
#include "Polygon.h"
#define PI 3.14159265
using namespace std;
double _window_height = 500;
double _window_width = 500;
double _window_position_x = 0;
double _window_position_y = 0;
string _window_title ("Assignment 5");
int _my_shape = 0;
GLint _object_shine = 40;
double _object_y_rotation = 0;
GLfloat ambient_reflection[3] = {1.0, 1.0, 1.0};
GLfloat diffuse_reflection[3] = {1.0, 1.0, 1.0};
GLfloat specular_reflection[3] = {1.0, 1.0, 1.0};
GLfloat emissive_color[3] = {0.0, 0.0, 0.0};
int specular_exponent = 0;
GLfloat _global_ambient_light[] = {0.5, 0.5, 0.5, 1.0};
GLfloat _global_diffuse_light[] = {0.7, 0.7, 0.7, 1.0};
int rotation_int = 0;
int rotation_angle = 90;
int _CAMERA_DISTANCE = 2;
GLfloat _z_axis_rotations[8][4] = {{(_CAMERA_DISTANCE*cos((90)*PI/180)), (_CAMERA_DISTANCE*sin((90)*PI/180)), 0.0, 1.0},
{(_CAMERA_DISTANCE*cos((45)*PI/180)), (_CAMERA_DISTANCE*sin((45)*PI/180)), 0.0, 1.0},
{(_CAMERA_DISTANCE*cos((0)*PI/180)), (_CAMERA_DISTANCE*sin((0)*PI/180)), 0.0, 1.0},
{(_CAMERA_DISTANCE*cos((315)*PI/180)), (_CAMERA_DISTANCE*sin((315)*PI/180)), 0.0, 1.0},
{(_CAMERA_DISTANCE*cos((270)*PI/180)), (_CAMERA_DISTANCE*sin((270)*PI/180)), 0.0, 1.0},
{(_CAMERA_DISTANCE*cos((225)*PI/180)), (_CAMERA_DISTANCE*sin((225)*PI/180)), 0.0, 1.0},
{(_CAMERA_DISTANCE*cos((180)*PI/180)), (_CAMERA_DISTANCE*sin((180)*PI/180)), 0.0, 1.0},
{(_CAMERA_DISTANCE*cos((135)*PI/180)), (_CAMERA_DISTANCE*sin((135)*PI/180)), 0.0, 1.0}};
GLfloat _ambient_0_light[] = {0.3f, 0.3f, 0.3f, 1.0f};
GLfloat _diffuse_0_light[] = {0.6f, 0.6f, 0.6f, 1.0f};
GLfloat _specular_0_light[] = {0.6f, 0.6f, 0.6f, 1.0f};
GLfloat _specular_0_property[] = {0.6f, 0.6f, 0.6f, 1.0f};
GLfloat _light_1_position[] = {2.0, 0.0, -0.5, 1.0};
GLfloat _diffuse_1_light[] = {0.2, 0.4, 0.9, 1.0};
GLfloat _spot_1_direction[] = {-0.3, -2.0, -0.3};
GLfloat _light_2_position[] = {0.3, -0.5, 4.0, 1.0};
GLfloat _diffuse_2_light[] = {1.0, 0.2, 0.6, 1.0};
GLfloat _spot_2_direction[] = {0.3, -0.5, -2.0};
GLfloat _cutoff = 90.0;
GLfloat _AMBIENT_CONSTANT = 0.1;
GLfloat _DIFFUSE_CONSTANT = 0.1;
GLfloat _EMISSION_CONSTANT = 0.05;
GLfloat _SPECULAR_CONSTANT = 0.1;
int _SPECULAR_EXPONENT_CONSTANT = 1;
int _CUTOFF_CONSTANT = 1;
bool _shade_model_smooth = true;
string _FILE_OPEN_ERROR = "Error: File could not be found or opened.";
string _CHOICE_INVALID_ERROR = "Error: The choice you made was not one that is defined.";
Polygon** _Polygons;
int _polygons_max = 10;
int _polygons_current = 0;
void ReadFromFile(){
ifstream input;
string filename = "";
string line = "";
filename = "dodec.dat";
input.open (filename.c_str(), ifstream::in);
if(input.is_open()){
_Polygons = new Polygon*[_polygons_max];
double _light_settings[12] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
int SH = 0;
double _normals[3] = {0.0, 0.0, 0.0};
int _coordinate_count = 0;
int _coordinate_max = 4;
double** _coordinates = new double*[_coordinate_max];
while (input.good()){
if(_polygons_current >= _polygons_max){
_polygons_max = _polygons_max * 2;
Polygon** temp = new Polygon*[_polygons_max];
for (int j = 0; j <_polygons_current; j++) {
temp[j] = _Polygons[j];
}
delete [] _Polygons;
_Polygons = temp;
}
getline(input, line);
string::size_type _last_pos = line.find_first_not_of(" ", 0);
string::size_type _pos = line.find_first_of(" ", _last_pos);
if((line.substr(_last_pos, _pos - _last_pos)).c_str()[0] == '#'){
}else if((line.substr(_last_pos, _pos - _last_pos)).c_str()[0] == 'J' ||
(line.substr(_last_pos, _pos - _last_pos)).c_str()[0] == 'j'){
if(_coordinate_count != 0){
_Polygons[_polygons_current] = new Polygon(_coordinate_count, _coordinates);
_Polygons[_polygons_current]->setAmbientReflection(_light_settings[0], _light_settings[1], _light_settings[2]);
_Polygons[_polygons_current]->setDiffuseReflection(_light_settings[3], _light_settings[4], _light_settings[5]);
_Polygons[_polygons_current]->setSpecularReflection(_light_settings[6], _light_settings[7], _light_settings[8]);
_Polygons[_polygons_current]->setEmissiveColor(_light_settings[9], _light_settings[10], _light_settings[11]);
_Polygons[_polygons_current]->setSurfaceNormals(_normals[0], _normals[1], _normals[2]);
_Polygons[_polygons_current]->setSpecularExponent(SH);
for(int i=0; i<_coordinate_count; i++){
delete _coordinates[i];
}
_coordinate_count = 0;
_polygons_current++;
}
if(line.find_first_not_of(" ", _pos) != string::npos){
for(int i=0; i<12; i++){
_last_pos = line.find_first_not_of(" ", _pos);
_pos = line.find_first_of(" ", _last_pos);
_light_settings[i] = atof(line.substr(_last_pos, _pos - _last_pos).c_str());
}
_last_pos = line.find_first_not_of(" ", _pos);
_pos = line.find_first_of(" ", _last_pos);
SH = atoi(line.substr(_last_pos, _pos - _last_pos).c_str());
for(int i=0; i<3; i++){
_last_pos = line.find_first_not_of(" ", _pos);
_pos = line.find_first_of(" ", _last_pos);
_normals[i] = atof(line.substr(_last_pos, _pos - _last_pos).c_str());
}
}
}else{
if(_coordinate_count >= _coordinate_max){
_coordinate_max = _coordinate_max * 2;
double** temp = new double*[_coordinate_max];
for (int i = 0; i < _coordinate_count; i++) {
temp[i] = new double[3];
temp[i][0] = _coordinates[i][0];
temp[i][1] = _coordinates[i][1];
temp[i][2] = _coordinates[i][3];
}
delete [] _coordinates;
_coordinates = temp;
}
_coordinates[_coordinate_count] = new double[3];
for(int i=0; i<3; i++){
_coordinates[_coordinate_count][i] = atof(line.substr(_last_pos, _pos - _last_pos).c_str());
_last_pos = line.find_first_not_of(" ", _pos);
_pos = line.find_first_of(" ", _last_pos);
}
_coordinate_count++;
}
}
input.close();
}else{
cout << _FILE_OPEN_ERROR;
exit(0);
}
}
void InitializeWindow(int argc, char** argv){
glutInit(&argc,argv);
glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH );
glutInitWindowSize(_window_width, _window_height);
glutInitWindowPosition(_window_position_x, _window_position_y);
glutCreateWindow(_window_title.c_str());
}
void InitializeEnvironment(){
glClearColor (0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, _global_ambient_light);
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, _global_diffuse_light);
glLoadIdentity();
glLightfv(GL_LIGHT0, GL_POSITION, _z_axis_rotations[0]);
glLightfv(GL_LIGHT0, GL_SPECULAR, _specular_0_light);
glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, _cutoff);
glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 0);
glLoadIdentity();
glLightfv(GL_LIGHT1, GL_POSITION, _light_1_position);
glLightfv(GL_LIGHT1, GL_DIFFUSE, _diffuse_1_light);
glEnable(GL_LIGHTING);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHT1);
if(_my_shape == 1){
glFrontFace(GL_CW);
}else{
glFrontFace(GL_CCW);
}
glEnable(GL_CULL_FACE);
}
void Keyboard(unsigned char key, int x, int y) {
switch (key) {
case '1':
glEnable(GL_LIGHT0);
break;
case '2':
glEnable(GL_LIGHT1);
break;
case '+':
if(_cutoff == 90){
_cutoff = 180;
}else if((_cutoff-_CUTOFF_CONSTANT) > 180){
_cutoff = 180;
}else{
_cutoff += _CUTOFF_CONSTANT;
}
glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, _cutoff);
break;
case '-':
if(_cutoff == 180){
_cutoff = 90;
}else if((_cutoff-_CUTOFF_CONSTANT) < 0){
_cutoff = 0;
}else{
_cutoff -= _CUTOFF_CONSTANT;
}
glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, _cutoff);
break;
case '0':
glDisable(GL_LIGHT0);
glDisable(GL_LIGHT1);
break;
case 'a':
if(_global_ambient_light[0]>0){
_global_ambient_light[0] = _global_ambient_light[1] = _global_ambient_light[2] -= _AMBIENT_CONSTANT;
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, _global_ambient_light);
}
break;
case 'A':
if(_global_ambient_light[0]<1){
_global_ambient_light[0] = _global_ambient_light[1] = _global_ambient_light[2] += _AMBIENT_CONSTANT;
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, _global_ambient_light);
}
break;
case 'd':
if(_global_diffuse_light[0]>0){
_global_diffuse_light[0] = _global_diffuse_light[1] = _global_diffuse_light[2] -= _DIFFUSE_CONSTANT;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, _global_diffuse_light);
}
break;
case 'D':
if(_global_diffuse_light[0]<1){
_global_diffuse_light[0] = _global_diffuse_light[1] = _global_diffuse_light[2] += _DIFFUSE_CONSTANT;
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, _global_diffuse_light);
}
break;
case 's':
if(_my_shape != 1){
for(int i=0; i<3; i++){
if((specular_reflection[i]-_SPECULAR_CONSTANT) < -1.0){
specular_reflection[i] = -1.0;
}else{
specular_reflection[i] -= _SPECULAR_CONSTANT;
}
}
}else{
for(int i=0; i < _polygons_current; i++){
double* sr = _Polygons[i]->getSpecularReflection();
for(int j=0; j<3; j++){
if((sr[j]-_SPECULAR_CONSTANT) < -1.0){
sr[j] = -1.0;
}else{
sr[j] -= _SPECULAR_CONSTANT;
}
}
}
}
break;
case 'S':
if(_my_shape != 1){
for(int i=0; i<3; i++){
if((specular_reflection[i]+_SPECULAR_CONSTANT) > 1.0){
specular_reflection[i] = 1.0;
}else{
specular_reflection[i] += _SPECULAR_CONSTANT;
}
}
}else{
for(int i=0; i < _polygons_current; i++){
double* sr = _Polygons[i]->getSpecularReflection();
for(int j=0; j<3; j++){
if((sr[j]+_SPECULAR_CONSTANT) > 1.0){
sr[j] = 1.0;
}else{
sr[j] += _SPECULAR_CONSTANT;
}
}
}
}
break;
case 'h':
if(_my_shape != 1){
if((specular_exponent-_SPECULAR_EXPONENT_CONSTANT) < 0){
specular_exponent = 0;
}else{
specular_exponent-=_SPECULAR_EXPONENT_CONSTANT;
}
}else{
for(int i=0; i < _polygons_current; i++){
int sh = _Polygons[i]->getSpecularExponent();
if((sh-_SPECULAR_EXPONENT_CONSTANT) < 0){
_Polygons[i]->setSpecularExponent(0);
}else{
_Polygons[i]->setSpecularExponent(sh-_SPECULAR_EXPONENT_CONSTANT);
}
}
}
break;
case 'H':
if(_my_shape != 1){
if((specular_exponent+_SPECULAR_EXPONENT_CONSTANT) > 128){
specular_exponent = 128;
}else{
specular_exponent+=_SPECULAR_EXPONENT_CONSTANT;
}
}else{
for(int i=0; i < _polygons_current; i++){
int sh = _Polygons[i]->getSpecularExponent();
if((sh+_SPECULAR_EXPONENT_CONSTANT) > 128){
_Polygons[i]->setSpecularExponent(128);
}else{
_Polygons[i]->setSpecularExponent(sh+_SPECULAR_EXPONENT_CONSTANT);
}
}
}
break;
case 'e':
if(_my_shape != 1){
if((emissive_color[0]-_EMISSION_CONSTANT) < 0){
emissive_color[0] = 0;
}else{
emissive_color[0] -= _EMISSION_CONSTANT;
}
if((emissive_color[1]-_EMISSION_CONSTANT) < 0){
emissive_color[1] = 0;
}else{
emissive_color[1] -= _EMISSION_CONSTANT;
}
if((emissive_color[2]-_EMISSION_CONSTANT) < 0){
emissive_color[2] = 0;
}else{
emissive_color[2] -= _EMISSION_CONSTANT;
}
}else{
for(int i=0; i < _polygons_current; i++){
double* ep = _Polygons[i]->getEmissiveColor();
if((ep[0]-_EMISSION_CONSTANT) < 0){
ep[0] = 0;
}else{
ep[0] -= _EMISSION_CONSTANT;
}
if((ep[1]-_EMISSION_CONSTANT) < 0){
ep[1] = 0;
}else{
ep[1] -= _EMISSION_CONSTANT;
}
if((ep[2]-_EMISSION_CONSTANT) < 0){
ep[2] = 0;
}else{
ep[2] -= _EMISSION_CONSTANT;
}
}
}
break;
case 'E':
if(_my_shape != 1){
if((emissive_color[0]+_EMISSION_CONSTANT) > 1){
emissive_color[0] = 1;
}else{
emissive_color[0] += _EMISSION_CONSTANT;
}
if((emissive_color[1]+_EMISSION_CONSTANT) > 1){
emissive_color[1] = 1;
}else{
emissive_color[1] += _EMISSION_CONSTANT;
}
if((emissive_color[2]+_EMISSION_CONSTANT) > 1){
emissive_color[2] = 1;
}else{
emissive_color[2] += _EMISSION_CONSTANT;
}
}else{
for(int i=0; i < _polygons_current; i++){
double* ep = _Polygons[i]->getEmissiveColor();
if((ep[0]+_EMISSION_CONSTANT) > 1){
ep[0] = 1;
}else{
ep[0] += _EMISSION_CONSTANT;
}
if((ep[1]+_EMISSION_CONSTANT) > 1){
ep[1] = 1;
}else{
ep[1] += _EMISSION_CONSTANT;
}
if((ep[2]+_EMISSION_CONSTANT) > 1){
ep[2] = 1;
}else{
ep[2] += _EMISSION_CONSTANT;
}
}
}
break;
case 'p':
glLoadIdentity();
if(rotation_int == 7){
rotation_int = 0;
}else{
rotation_int++;
}
glLightfv(GL_LIGHT0, GL_POSITION, _z_axis_rotations[rotation_int]);
break;
case 'P':
glLoadIdentity();
if(rotation_int == 0){
rotation_int = 7;
}else{
rotation_int--;
}
glLightfv(GL_LIGHT0, GL_POSITION, _z_axis_rotations[rotation_int]);
break;
case 'o':
_object_y_rotation -= 15.0;
break;
case 'O':
_object_y_rotation += 15.0;
break;
case 'q': case 'Q':
exit(0);
}
glutPostRedisplay();
}
void DrawFromFile(){
glPushMatrix();
for(int i=0; i < _polygons_current; i++){
double* ap = _Polygons[i]->getAmbientReflection();
double* dp = _Polygons[i]->getDiffuseReflection();
double* ep = _Polygons[i]->getEmissiveColor();
double* sp = _Polygons[i]->getSpecularReflection();
GLfloat amt[] = {ap[0], ap[1], ap[2], 1};
GLfloat dif[] = {dp[0], dp[1], dp[2], 1};
GLfloat emc[] = {ep[0], ep[1], ep[2], 1};
GLfloat spc[] = {sp[0], sp[1], sp[2], 1};
int _p_sides = _Polygons[i]->getSides();
glMaterialfv(GL_FRONT, GL_AMBIENT, amt);
glMaterialfv(GL_FRONT, GL_DIFFUSE, dif);
glMaterialfv(GL_FRONT, GL_EMISSION, emc);
glMaterialfv(GL_FRONT, GL_SPECULAR, spc);
glMateriali(GL_FRONT, GL_SHININESS, _Polygons[i]->getSpecularExponent());
glBegin(GL_POLYGON);
for(int j=0; j < _p_sides; j++){
glNormal3dv(_Polygons[i]->getSurfaceNormals());
glVertex3dv(_Polygons[i]->getVertex(j));
}
glEnd();
}
glPopMatrix();
}
void Display(void){
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glShadeModel (GL_SMOOTH);
glMatrixMode(GL_PROJECTION);
gluPerspective(45, 1, 0, 2);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
switch(_my_shape){
case 1:
glTranslated(0, 0, -1);
glRotated(_object_y_rotation, 0, 1, 0);
DrawFromFile();
break;
case 2:
glMaterialfv(GL_FRONT, GL_AMBIENT, ambient_reflection);
glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse_reflection);
glMaterialfv(GL_FRONT, GL_EMISSION, emissive_color);
glMaterialfv(GL_FRONT, GL_SPECULAR, specular_reflection);
glMateriali(GL_FRONT, GL_SHININESS, specular_exponent);
glRotated(_object_y_rotation, 0, 1, 0);
glutSolidTeapot(0.8);
break;
case 3:
glMaterialfv(GL_FRONT, GL_AMBIENT, ambient_reflection);
glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse_reflection);
glMaterialfv(GL_FRONT, GL_EMISSION, emissive_color);
glMaterialfv(GL_FRONT, GL_SPECULAR, specular_reflection);
glMateriali(GL_FRONT, GL_SHININESS, specular_exponent);
glRotated(_object_y_rotation, 0, 1, 0);
glutSolidIcosahedron();
break;
case 4:
glMaterialfv(GL_FRONT, GL_AMBIENT, ambient_reflection);
glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse_reflection);
glMaterialfv(GL_FRONT, GL_EMISSION, emissive_color);
glMaterialfv(GL_FRONT, GL_SPECULAR, specular_reflection);
glMateriali(GL_FRONT, GL_SHININESS, specular_exponent);
glRotated(_object_y_rotation, 0, 1, 0);
glutSolidTorus(0.3, 0.8, 10, 30);
break;
default:
cout << _CHOICE_INVALID_ERROR << endl;
exit(1);
break;
}
glPopMatrix();
glFlush();
}
int PollUser(){
int choice = 0;
cout << "Use the menu below to pick a shape to draw:" << endl << endl;
cout << "1: Dodecahedron (Drawn from file)" << endl;
cout << "2: Teapot (GLUT drawn)" << endl;
cout << "3: Icosahedron (GLUT drawn)" << endl;
cout << "4: Torus (GLUT drawn)" << endl;
cout << endl << "Enter choice: ";
cin >> choice;
return choice;
}
int main(int argc, char** argv){
_my_shape = PollUser();
InitializeWindow(argc, argv);
InitializeEnvironment();
glutDisplayFunc(Display);
glutKeyboardFunc(Keyboard);
ReadFromFile();
glutMainLoop();
return 0;
}
Polygon.h
#ifndef POLYGON_H_
#define POLYGON_H_
#include <iostream>
#include <cstdlib>
#include <new>
class Polygon {
public:
Polygon();
Polygon(int, double**);
virtual ~Polygon();
void *operator new(size_t size);
void operator delete(void *p);
void *operator new[](size_t size);
void operator delete[](void *p);
double* getVertex(int);
void setSpecularExponent(int);
void setSurfaceNormals(double,double,double);
void setAmbientReflection(double,double,double);
void setDiffuseReflection(double,double,double);
void setSpecularReflection(double,double,double);
void setEmissiveColor(double,double,double);
int getSides(void);
int getSpecularExponent(void);
double* getSurfaceNormals(void);
double* getAmbientReflection(void);
double* getDiffuseReflection(void);
double* getSpecularReflection(void);
double* getEmissiveColor(void);
private:
double** verticies;
double surface_normals[3];
double ambient_reflection[3];
double diffuse_reflection[3];
double specular_reflection[3];
double emissive_color[3];
int sides;
int spec_ex;
};
#endif
Polygon.cpp
#include "Polygon.h"
using namespace std;
Polygon::Polygon(){
sides = 0;
}
Polygon::Polygon(int numberOfSides, double** polyVerticies){
sides = numberOfSides;
verticies = new double*[numberOfSides];
for(int n=0; n<numberOfSides; n++){
verticies[n] = new double[3];
verticies[n][0] = polyVerticies[n][0];
verticies[n][1] = polyVerticies[n][1];
verticies[n][2] = polyVerticies[n][2];
}
}
void *Polygon::operator new(size_t size){
void *p;
p = malloc(size);
if(!p) {
bad_alloc ba;
throw ba;
}
return p;
}
void Polygon::operator delete(void *p){
free(p);
}
void *Polygon::operator new[](size_t size){
void *p;
p = malloc(size);
if(!p) {
bad_alloc ba;
throw ba;
}
return p;
}
void Polygon::operator delete[](void *p){
free(p);
}
void Polygon::setSpecularExponent(int exponent){
spec_ex = exponent;
}
void Polygon::setSurfaceNormals(double x, double y, double z){
surface_normals[0] = x;
surface_normals[1] = y;
surface_normals[2] = z;
}
void Polygon::setAmbientReflection(double r, double g, double b){
ambient_reflection[0] = r;
ambient_reflection[1] = g;
ambient_reflection[2] = b;
}
void Polygon::setDiffuseReflection(double r, double g, double b){
diffuse_reflection[0] = r;
diffuse_reflection[1] = g;
diffuse_reflection[2] = b;
}
void Polygon::setSpecularReflection(double r, double g, double b){
specular_reflection[0] = r;
specular_reflection[1] = g;
specular_reflection[2] = b;
}
void Polygon::setEmissiveColor(double r, double g, double b){
emissive_color[0] = r;
emissive_color[1] = g;
emissive_color[2] = b;
}
double* Polygon::getVertex(int index){
if(index < sides){
double* _temp = new double[3];
_temp[0] = verticies[index][0];
_temp[1] = verticies[index][1];
_temp[2] = verticies[index][2];
return _temp;
}
return new double;
}
int Polygon::getSides(){
return sides;
}
int Polygon::getSpecularExponent(){
return spec_ex;
}
double* Polygon::getSurfaceNormals(){
return surface_normals;
}
double* Polygon::getAmbientReflection(){
return ambient_reflection;
}
double* Polygon::getDiffuseReflection(){
return diffuse_reflection;
}
double* Polygon::getSpecularReflection(){
return specular_reflection;
}
double* Polygon::getEmissiveColor(){
return emissive_color;
}
Polygon::~Polygon() {
delete[] verticies;
}
Thanks for any help anyone can offer.