// Geometry.cpp: implementation of the CGeometry class. // ////////////////////////////////////////////////////////////////////// #include "Geometry.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CGeometry::CGeometry(): CObjectInScene () { Ambient[3]=1.0; Diffuse[3]=1.0; Specular[3]=1.0; } CGeometry::~CGeometry() { } void CGeometry::getPosition(float &x, float &y, float &z) { x=TMatrix[12]; y=TMatrix[13]; z=TMatrix[14]; } void CGeometry::getPosition(GLfloat p[]) { p[0]=TMatrix[12]; p[1]=TMatrix[13]; p[2]=TMatrix[14]; } void CGeometry::setPosition(GLfloat p[]) { TMatrix[12]=p[0]; TMatrix[13]=p[1]; TMatrix[14]=p[2]; } void CGeometry::setPosition(GLfloat x, GLfloat y, GLfloat z) { TMatrix[12]=x; TMatrix[13]=y; TMatrix[14]=z; } void CGeometry::copyVector3(GLfloat p[], GLfloat d[]) { int i; for (i=0;i<3;i++) p[i]=d[i]; } void CGeometry::setDiffuse(GLfloat d[]) { copyVector3(Diffuse,d); } void CGeometry::setSpecular(GLfloat d[]) { copyVector3(Specular,d); } void CGeometry::setAmbient(GLfloat d[]) { copyVector3(Ambient,d); } void CGeometry::readProperty(FILE *fp) { int i; char s[81]; float x,y,z; i = fseek( fp, 0L, SEEK_SET); if( i ) printf( "Fseek failed" ); do { fscanf( fp, "%s", s ); i=strcmp( s,Name); }while(!feof(fp) && i!=0); if(!feof(fp)){ fscanf(fp,"%s\t%f,%f,%f\n",s,&x,&y,&z); setPosition(x,y,z); fscanf(fp,"%s\t%f,%f,%f\n",s,&x,&y,&z); Diffuse[0]=x;Diffuse[1]=y;Diffuse[2]=z; fscanf(fp,"%s\t%f,%f,%f\n",s,&x,&y,&z); Specular[0]=x;Specular[1]=y;Specular[2]=z; fscanf(fp,"%s\t%f,%f,%f\n",s,&x,&y,&z); Ambient[0]=x;Ambient[1]=y;Ambient[2]=z; } } void CGeometry::writeProperty(FILE *fp) { float x,y,z; fprintf(fp, "%s\t%s\n","Name:", Name); getPosition(x,y,z); fprintf(fp, "%s\t%f,%f,%f\n","Position:", x,y,z); fprintf(fp, "%s\t%f,%f,%f\n","Diffuse:", Diffuse[0],Diffuse[1],Diffuse[2]); fprintf(fp, "%s\t%f,%f,%f\n","Specular:", Specular[0],Specular[1],Specular[2]); fprintf(fp, "%s\t%f,%f,%f\n\n","Ambient:", Ambient[0],Ambient[1], Ambient[2]); }