|
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();
}