*** empty log message ***

This commit is contained in:
David Rose 2001-02-27 18:52:16 +00:00
parent c5e5251a80
commit dfa4141322
2 changed files with 74 additions and 14 deletions

View File

@ -142,15 +142,21 @@ add_transform_options() {
&EggWriter::dispatch_scale, &_got_transform, &_transform); &EggWriter::dispatch_scale, &_got_transform, &_transform);
add_option add_option
("TR", "angle,x,y,z", 49, ("TR", "x,y,z", 49,
"Rotate the model x degrees about the x axis, then y degrees about the "
"y axis, and then z degrees about the z axis.",
&EggWriter::dispatch_rotate_xyz, &_got_transform, &_transform);
add_option
("TA", "angle,x,y,z", 49,
"Rotate the model angle degrees counterclockwise about the given " "Rotate the model angle degrees counterclockwise about the given "
"axis.", "axis.",
&EggWriter::dispatch_rotate, &_got_transform, &_transform); &EggWriter::dispatch_rotate_axis, &_got_transform, &_transform);
add_option add_option
("TT", "x,y,z", 49, ("TT", "x,y,z", 49,
"Translate the model by the indicated amount.\n\n" "Translate the model by the indicated amount.\n\n"
"All transformation options (-TS, -TR, -TT) are cumulative and are " "All transformation options (-TS, -TR, -TA, -TT) are cumulative and are "
"applied in the order they are encountered on the command line.", "applied in the order they are encountered on the command line.",
&EggWriter::dispatch_translate, &_got_transform, &_transform); &EggWriter::dispatch_translate, &_got_transform, &_transform);
} }
@ -446,26 +452,78 @@ dispatch_scale(const string &opt, const string &arg, void *var) {
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: EggWriter::dispatch_rotate // Function: EggWriter::dispatch_rotate_xyz
// Access: Protected, Static // Access: Protected, Static
// Description: Handles -TR, which specifies a rotate transform. Var // Description: Handles -TR, which specifies a rotate transform about
// is an LMatrix4d. // the three cardinal axes. Var is an LMatrix4d.
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
bool EggWriter:: bool EggWriter::
dispatch_rotate(ProgramBase *self, const string &opt, const string &arg, void *var) { dispatch_rotate_xyz(ProgramBase *self, const string &opt, const string &arg, void *var) {
EggBase *base = (EggBase *)self; EggBase *base = (EggBase *)self;
EggWriter *me = base->as_writer(); EggWriter *me = base->as_writer();
return me->ns_dispatch_rotate(opt, arg, var); return me->ns_dispatch_rotate_xyz(opt, arg, var);
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: EggWriter::ns_dispatch_rotate // Function: EggWriter::ns_dispatch_rotate_xyz
// Access: Protected // Access: Protected
// Description: Handles -TR, which specifies a rotate transform. Var // Description: Handles -TR, which specifies a rotate transform about
// is an LMatrix4d. // the three cardinal axes. Var is an LMatrix4d.
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
bool EggWriter:: bool EggWriter::
ns_dispatch_rotate(const string &opt, const string &arg, void *var) { ns_dispatch_rotate_xyz(const string &opt, const string &arg, void *var) {
LMatrix4d *transform = (LMatrix4d *)var;
vector_string words;
tokenize(arg, words, ",");
LVecBase3d xyz;
bool okflag = false;
if (words.size() == 3) {
okflag =
string_to_double(words[0], xyz[0]) &&
string_to_double(words[1], xyz[1]) &&
string_to_double(words[2], xyz[2]);
}
if (!okflag) {
nout << "-" << opt
<< " requires three numbers separated by commas.\n";
return false;
}
LMatrix4d mat =
LMatrix4d::rotate_mat(xyz[0], LVector3d(1.0, 0.0, 0.0), _coordinate_system) *
LMatrix4d::rotate_mat(xyz[1], LVector3d(0.0, 1.0, 0.0), _coordinate_system) *
LMatrix4d::rotate_mat(xyz[2], LVector3d(0.0, 0.0, 1.0), _coordinate_system);
*transform = (*transform) * mat;
return true;
}
////////////////////////////////////////////////////////////////////
// Function: EggWriter::dispatch_rotate_axis
// Access: Protected, Static
// Description: Handles -TA, which specifies a rotate transform about
// an arbitrary axis. Var is an LMatrix4d.
////////////////////////////////////////////////////////////////////
bool EggWriter::
dispatch_rotate_axis(ProgramBase *self, const string &opt, const string &arg, void *var) {
EggBase *base = (EggBase *)self;
EggWriter *me = base->as_writer();
return me->ns_dispatch_rotate_axis(opt, arg, var);
}
////////////////////////////////////////////////////////////////////
// Function: EggWriter::ns_dispatch_rotate_axis
// Access: Protected
// Description: Handles -TA, which specifies a rotate transform about
// an arbitrary axis. Var is an LMatrix4d.
////////////////////////////////////////////////////////////////////
bool EggWriter::
ns_dispatch_rotate_axis(const string &opt, const string &arg, void *var) {
LMatrix4d *transform = (LMatrix4d *)var; LMatrix4d *transform = (LMatrix4d *)var;
vector_string words; vector_string words;

View File

@ -43,8 +43,10 @@ protected:
bool ns_dispatch_normals(const string &opt, const string &arg, void *mode); bool ns_dispatch_normals(const string &opt, const string &arg, void *mode);
static bool dispatch_scale(const string &opt, const string &arg, void *var); static bool dispatch_scale(const string &opt, const string &arg, void *var);
static bool dispatch_rotate(ProgramBase *self, const string &opt, const string &arg, void *var); static bool dispatch_rotate_xyz(ProgramBase *self, const string &opt, const string &arg, void *var);
bool ns_dispatch_rotate(const string &opt, const string &arg, void *var); bool ns_dispatch_rotate_xyz(const string &opt, const string &arg, void *var);
static bool dispatch_rotate_axis(ProgramBase *self, const string &opt, const string &arg, void *var);
bool ns_dispatch_rotate_axis(const string &opt, const string &arg, void *var);
static bool dispatch_translate(const string &opt, const string &arg, void *var); static bool dispatch_translate(const string &opt, const string &arg, void *var);
bool verify_output_file_safe() const; bool verify_output_file_safe() const;