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