SyFi
0.3
|
#include <Polygon.h>
Public Member Functions | |
Box (GiNaC::ex p0, GiNaC::ex p1, const std::string &subscript="") | |
Box (GiNaC::ex p0, GiNaC::ex p1, GiNaC::ex p2, GiNaC::ex p3, GiNaC::ex p4, GiNaC::ex p5, GiNaC::ex p6, GiNaC::ex p7, const std::string &subscript="") | |
Box (const Box &box) | |
Box () | |
virtual | ~Box () |
virtual unsigned int | no_space_dim () const |
virtual Line | line (unsigned int i) const |
virtual Rectangle | rectangle (unsigned int i) const |
virtual GiNaC::ex | repr (Repr_format format=SUBS_PERFORMED) const |
virtual const std::string | str () const |
virtual GiNaC::ex | integrate (GiNaC::ex f, Repr_format format=SUBS_PERFORMED) |
virtual Box * | copy () const |
SyFi::Box::Box | ( | GiNaC::ex | p0, |
GiNaC::ex | p1, | ||
const std::string & | subscript = "" |
||
) |
SyFi::Box::Box | ( | GiNaC::ex | p0, |
GiNaC::ex | p1, | ||
GiNaC::ex | p2, | ||
GiNaC::ex | p3, | ||
GiNaC::ex | p4, | ||
GiNaC::ex | p5, | ||
GiNaC::ex | p6, | ||
GiNaC::ex | p7, | ||
const std::string & | subscript = "" |
||
) |
SyFi::Box::Box | ( | const Box & | box | ) |
Definition at line 1126 of file Polygon.cpp.
: Polygon(box) { }
SyFi::Box::Box | ( | ) | [inline] |
virtual SyFi::Box::~Box | ( | ) | [inline, virtual] |
Box * SyFi::Box::copy | ( | ) | const [virtual] |
Implements SyFi::Polygon.
Reimplemented in SyFi::ReferenceBox.
Definition at line 1223 of file Polygon.cpp.
References Box().
{ return new Box(*this); }
ex SyFi::Box::integrate | ( | GiNaC::ex | f, |
Repr_format | format = SUBS_PERFORMED |
||
) | [virtual] |
Implements SyFi::Polygon.
Definition at line 1196 of file Polygon.cpp.
References repr(), and SyFi::sub().
Referenced by main().
{ ex b_repr = repr(); lst sub; sub = lst(b_repr.op(0), b_repr.op(1), b_repr.op(2)); ex intf = func.subs(sub); ex D = ( p[6].op(0) - p[0].op(0) ) * ( p[6].op(1) - p[0].op(1) ) * ( p[6].op(2) - p[0].op(2) ); intf = intf*D; intf = GiNaC::integral(b_repr.op(3).op(0), b_repr.op(3).op(1), b_repr.op(3).op(2), intf); intf = eval_integ(intf); intf = GiNaC::integral(b_repr.op(4).op(0), b_repr.op(4).op(1), b_repr.op(4).op(2), intf); intf = eval_integ(intf); intf = GiNaC::integral(b_repr.op(5).op(0), b_repr.op(5).op(1), b_repr.op(5).op(2), intf); intf = eval_integ(intf); return intf; }
Line SyFi::Box::line | ( | unsigned int | i | ) | const [virtual] |
Reimplemented from SyFi::Polygon.
Definition at line 1137 of file Polygon.cpp.
References SyFi::istr(), and SyFi::Polygon::subscript.
{ int i0, i1; switch(i) { case 0: i0 = 6; i1 = 7; break; case 1: i0 = 5; i1 = 6; break; case 2: i0 = 4; i1 = 7; break; case 3: i0 = 4; i1 = 5; break; case 4: i0 = 3; i1 = 7; break; case 5: i0 = 2; i1 = 6; break; case 6: i0 = 2; i1 = 3; break; case 7: i0 = 1; i1 = 5; break; case 8: i0 = 1; i1 = 2; break; case 9: i0 = 0; i1 = 4; break; case 10: i0 = 0; i1 = 3; break; case 11: i0 = 0; i1 = 1; break; default: throw std::out_of_range("Line index is out of range!"); } return Line(p[i0], p[i1], istr(subscript,i)); }
unsigned int SyFi::Box::no_space_dim | ( | ) | const [virtual] |
Rectangle SyFi::Box::rectangle | ( | unsigned int | i | ) | const [virtual] |
Reimplemented from SyFi::Polygon.
Definition at line 1161 of file Polygon.cpp.
References SyFi::istr(), and SyFi::Polygon::subscript.
{ switch(i) { case 0: return Rectangle(p[4], p[6], istr(subscript,i)); case 1: return Rectangle(p[2], p[7], istr(subscript,i)); case 2: return Rectangle(p[1], p[6], istr(subscript,i)); case 3: return Rectangle(p[0], p[7], istr(subscript,i)); case 4: return Rectangle(p[0], p[5], istr(subscript,i)); case 5: return Rectangle(p[0], p[2], istr(subscript,i)); } throw std::out_of_range("Rectangle index is out of range!"); }
ex SyFi::Box::repr | ( | Repr_format | format = SUBS_PERFORMED | ) | const [virtual] |
Implements SyFi::Polygon.
Definition at line 1175 of file Polygon.cpp.
References SyFi::t, and SyFi::x.
Referenced by integrate(), and main().
{ lst ret; GiNaC::symbol r("r"), s("s"), t("t"); ret.append( x == p[0].op(0) + r * (p[6].op(0) - p[0].op(0)) ); ret.append( y == p[0].op(1) + s * (p[6].op(1) - p[0].op(1)) ); ret.append( z == p[0].op(2) + t * (p[6].op(2) - p[0].op(2)) ); ret.append( lst(r,0,1) ); ret.append( lst(s,0,1) ); ret.append( lst(t,0,1) ); return ret; }
const string SyFi::Box::str | ( | ) | const [virtual] |
Implements SyFi::Polygon.
Reimplemented in SyFi::ReferenceBox.
Definition at line 1188 of file Polygon.cpp.
{ std::ostringstream s; // s <<"Box("<<p[0]<<","<<p[1]<<","<<p[2]<<","<<p[3]<<","<<p[4]<<","<<p[5]<<","<<p[6]<<","<<p[7]<<")"; s <<"Box"; return s.str(); }