This is old C++ code originally intended to be a playground for 3D math.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

76 lines
1.9 KiB

#include "polyeder.h"
polyeder::polyeder(const polygon& p, const vertex_list& vl) :
container<polygon>(p), vl(vl) {
for(unsigned i=0; i<count; i++) {
content[i].set_vertex_list(&this->vl);
content[i]._init_normal_();
content[i].set_polyeder(this);
}
}
polyeder::polyeder(const polygon* p, unsigned c, const vertex_list& vl) :
container<polygon>(p, c), vl(vl) {
for(unsigned i=0; i<count; i++) {
content[i].set_vertex_list(&this->vl);
content[i]._init_normal_();
content[i].set_polyeder(this);
}
}
polyeder::polyeder(const polyeder& p) :
container<polygon>(p), vl(p.vl) {
for(unsigned i=0; i<count; i++) {
content[i].set_vertex_list(&this->vl);
content[i].set_polyeder(this);
}
}
const polyeder& polyeder::operator=(const polyeder& p) {
if(this==&p)
return *this;
container<polygon>::operator=(p);
vl=p.vl;
for(unsigned i=0; i<count; i++) {
content[i].set_vertex_list(&vl);
content[i].set_polyeder(this);
}
return *this;
}
void polyeder::transform(const Mmn<double>& tm, int p) {
for(unsigned i=0; i<count; i++) {
content[i].transform(tm, p);
}
}
void polyeder::transform_normals(const Mmn<double>& tm, int p) {
for(unsigned i=0; i<count; i++) {
content[i].transform_normal(tm, p);
}
}
void polyeder::reset(void) {
vl.reset();
for(unsigned i=0; i<count; i++) {
content[i].reset();
}
}
void polyeder::trans_poly(unsigned i, const Mmn<double>& tm, int p) {
content[i].transform(tm, p);
}
void polyeder::project_2d(double lcx, double sw, double sh,
double ph_ar, double sy, int p) {
for(unsigned i=0; i<count; i++) {
content[i].project_2d(lcx, sw, sh, ph_ar, sy, p+1);
}
for(unsigned i=0; i<vl.card(); i++) {
vl[i].set_trans_stage(p);
}
}