inputCube() that reads in an Alias|Wavefront object, e.g.,
a simple cube.
inputCube() function, read in the data for the
verteces and faces as they are encountered. The program should
contain two global lists:
std::vector<point_t *> points
a list of vertices,
std::vector<face_t *> faces
a list of faces, and
std::string group an unused string to store the group
designation
face_t object that will be used to store the
integer vertex indeces that index into the object's vertex list,
basically a list of integers.
The face_t object contains the following data objects:
std::vector<int> vin a list of integers
face.h and implementation
face.cpp files.
outputCube() function that
outputs the list of points, the group
string, and the list of faces.
cout << points[i], the point
should use the operator<< to output
its list of coordinates.
cout << faces[i], the face
should use the operator<< to output
its list of vertex indices.
std::vector, are indexed 0..n-1.
point_t object and follow that pattern.
This time, when looping through the input, you will have to
decide what is being read in: a point_t object,
a face_t object, or the std::string
object. Each of these is identified by the leading character,
i.e.,
v,
f,
or
g,
respectively. Therefore, your parsing loop should read in a
single character and then switch on that character
to decide what to read in, e.g., with
std::istream& s,
while( s.get(c) && !s.eof() ) {
switch(c) {
case 'v':
// read in vertex_t object
break;
case 'g':
// read in group string
break;
case 'f':
// read in face_t object
break;
}
(*the_points[i])[0] syntax).
cube-ccw.obj file used to test the above program is:
v 1.0 1.0 1.0
v 1.0 1.0 -1.0
v 1.0 -1.0 1.0
v 1.0 -1.0 -1.0
v -1.0 1.0 1.0
v -1.0 1.0 -1.0
v -1.0 -1.0 1.0
v -1.0 -1.0 -1.0
g cube
f 1 5 7 3
f 2 1 3 4
f 5 6 8 7
f 6 2 4 8
f 2 6 5 1
f 8 4 3 7
std::vector containers, which keep track
of the size of the list.
.obj files
below.
tar.gz
archive of your asg##/ directory, including:
README file containing
Makefile
.h headers and .cpp source)
make clean before tar)
handin notes