SyFi  0.3
SyFi::Box Class Reference

#include <Polygon.h>

Inheritance diagram for SyFi::Box:
SyFi::Polygon SyFi::ReferenceBox

List of all members.

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 Boxcopy () const

Detailed Description

Definition at line 209 of file Polygon.h.


Constructor & Destructor Documentation

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]

Definition at line 215 of file Polygon.h.

Referenced by copy().

{}
virtual SyFi::Box::~Box ( ) [inline, virtual]

Definition at line 216 of file Polygon.h.

{}

Member Function Documentation

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]

Implements SyFi::Polygon.

Definition at line 1131 of file Polygon.cpp.

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

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator