A infinite quadrilateral in the topology, which possess one Edge and two InfiniteEdges since one edge lies in the infinite. More...

#include <topology.hh>

Inheritance diagram for concepts::InfiniteQuad:
concepts::Connector2 concepts::Connector concepts::OutputOperator

Public Member Functions

const Attributeattrib () const
 Returns the attribute of the connector. More...
 
virtual const Connector2child (uint i) const
 
virtual Connector2child (uint i, bool mode=0)
 Returns a child. More...
 
InfiniteQuadclone (InfiniteEdge &edg0, Edge &edg1, InfiniteEdge &edg2) const
 Returns the pointer of a new Quad with the same attribute, the same key and the same rho but NO children and sibling. More...
 
Connector1edge (uint i) const
 Returns a 1D component: edge. More...
 
const InfQuadSubdivisiongetStrategy () const
 Returns the subdivision strategy of this quad. More...
 
 InfiniteQuad (InfiniteEdge &edg0, Edge &edg1, InfiniteEdge &edg2, const Attribute attrib=Attribute())
 Constructor. More...
 
const Keykey () const
 Returns the key of the connector. More...
 
int numEdges () const
 
int numVertices () const
 
int operator== (const Connector &cntr) const
 Comparison operator. More...
 
int related (const Connector &conn) const
 Checks if this connector is related to conn. More...
 
Z2 rho () const
 Returns the orientation of the finite edge. More...
 
void setAttrib (uint attrb)
 
void setStrategy (const InfQuadSubdivision *strategy=0) throw (StrategyChange)
 Sets the subdivision strategy of this quad. More...
 
Vertexvertex (uint i) const
 Returns a 0D component: vertex A 2D element consists of 1D and 0D elements, the vertices can be queried here. More...
 
virtual ~InfiniteQuad ()
 Destructor. More...
 

Protected Member Functions

Scan< Connector2 > * children_ () const
 Scanner over the children. More...
 
void edgeAssertion_ () const
 Assert, that the vertices of the four edges match properly. More...
 
 InfiniteQuad (InfiniteEdge &edg0, Edge &edg1, InfiniteEdge &edg2, const Attribute attrib, const Key &key, const Z2 rho)
 Constructor used by clone() More...
 
virtual std::ostream & info (std::ostream &os) const
 Returns information in an output stream. More...
 

Protected Attributes

Attribute attrib_
 Attribute. More...
 
concepts::Joiner< Connector2 *, 1 > * chld_
 List of Pointers to the children. More...
 
Edgeedg_
 Finite edge. More...
 
InfiniteEdgeinfEdg_ [2]
 Finite edge. More...
 
Key key_
 Unique key of the connector. More...
 
Z2 rho_
 Orientation flags for the finite edge. More...
 
const InfQuadSubdivisionsubdivStrategy_
 Subdivision strategy for the quadrilateral. More...
 

Static Protected Attributes

static uint cnt_
 Counter for the connectors. More...
 

Friends

class InfQuadSubdiv2V
 

Detailed Description

A infinite quadrilateral in the topology, which possess one Edge and two InfiniteEdges since one edge lies in the infinite.

Implements the abstract methods from the parent classes to query the children, the vertices and the edges of the quadrilateral.

The finite edge can have two different orientations in the quadrilateral, this orientation is stored in rho.

The edges are : 0 - first infinite edge 1 - finite edge 2 - second infinite edge The vertices are : 0 - vertex of first infinite edge 1 - vertex of second infinite edge if rho == 0 0 - first vertex of finite edge 1 - second vertex of finite edge if rho == 1 vice versa

Definition at line 423 of file topology.hh.

Constructor & Destructor Documentation

◆ InfiniteQuad() [1/2]

concepts::InfiniteQuad::InfiniteQuad ( InfiniteEdge edg0,
Edge edg1,
InfiniteEdge edg2,
const Attribute  attrib = Attribute() 
)

Constructor.

Creates a quadrilateral out of three edges. The edges must form an infinite quadrilateral: the 1st and the 2nd edge, the 2nd and the 3rd edge must have a common vertex. The Edge can have an arbitrary orientation, which is detected and stored in rho_.

Parameters
edg01st edge.
edg12nd edge.
edg23rd edge.
attribAttribute of the edge

◆ ~InfiniteQuad()

virtual concepts::InfiniteQuad::~InfiniteQuad ( )
virtual

Destructor.

◆ InfiniteQuad() [2/2]

concepts::InfiniteQuad::InfiniteQuad ( InfiniteEdge edg0,
Edge edg1,
InfiniteEdge edg2,
const Attribute  attrib,
const Key key,
const Z2  rho 
)
protected

Constructor used by clone()

Member Function Documentation

◆ attrib()

const Attribute& concepts::Connector::attrib ( ) const
inlineinherited

Returns the attribute of the connector.

Definition at line 108 of file connector.hh.

◆ child() [1/2]

virtual const Connector2* concepts::InfiniteQuad::child ( uint  i) const
virtual

Implements concepts::Connector2.

◆ child() [2/2]

virtual Connector2* concepts::InfiniteQuad::child ( uint  i,
bool  mode = 0 
)
virtual

Returns a child.

If children are created, four new children are created (with the same attributes as this one). All edges of the quadrilateral are refined and four new edges introduced.

Parameters
iIndex of the child to be returned.
modemode = 1: No children are created
mode = 0: If no childs exist, four new children are created. setStrategy() is called before creating the children.

Implements concepts::Connector2.

◆ children_()

Scan<Connector2>* concepts::InfiniteQuad::children_ ( ) const
inlineprotected

Scanner over the children.

Definition at line 524 of file topology.hh.

◆ clone()

InfiniteQuad * concepts::InfiniteQuad::clone ( InfiniteEdge edg0,
Edge edg1,
InfiniteEdge edg2 
) const
inline

Returns the pointer of a new Quad with the same attribute, the same key and the same rho but NO children and sibling.

Definition at line 532 of file topology.hh.

◆ edge()

Connector1* concepts::InfiniteQuad::edge ( uint  i) const
virtual

Returns a 1D component: edge.

A 2D element consists of 1D and 0D elements, the edges can be queried here.

Parameters
iIndex of the edge

Implements concepts::Connector2.

◆ edgeAssertion_()

void concepts::InfiniteQuad::edgeAssertion_ ( ) const
protected

Assert, that the vertices of the four edges match properly.

◆ getStrategy()

const InfQuadSubdivision* concepts::InfiniteQuad::getStrategy ( ) const
inline

Returns the subdivision strategy of this quad.

If you want to find check against another strategy use

quad.getStrategy() == QuadSubdiv2V::instance()

Definition at line 500 of file topology.hh.

◆ info()

virtual std::ostream& concepts::InfiniteQuad::info ( std::ostream &  os) const
protectedvirtual

Returns information in an output stream.

Reimplemented from concepts::Connector.

◆ key()

const Key& concepts::Connector::key ( ) const
inlineinherited

Returns the key of the connector.

Definition at line 105 of file connector.hh.

◆ numEdges()

int concepts::InfiniteQuad::numEdges ( ) const
inline

Definition at line 464 of file topology.hh.

◆ numVertices()

int concepts::InfiniteQuad::numVertices ( ) const
inline

Definition at line 460 of file topology.hh.

◆ operator==()

int concepts::Connector::operator== ( const Connector cntr) const
inlineinherited

Comparison operator.

Definition at line 102 of file connector.hh.

◆ related()

int concepts::Connector::related ( const Connector conn) const
inherited

Checks if this connector is related to conn.

It is being checked if one of the two is an ancestor of the other.

Parameters
connOther connector
Returns
An integer i.
i=0 if there is no relationship or the connectors are identical
i>0 if conn is an ancestor of this connector
i<0 if conn is a descendant of this connector
|i| gives the number of generations between the connectors

◆ rho()

Z2 concepts::InfiniteQuad::rho ( ) const
inline

Returns the orientation of the finite edge.

rho = 0 : Edge is oriented counter-clockwise in the quadrilateral. rho = 1 : Edge is oriented clockwise in the quadrilateral.

Definition at line 473 of file topology.hh.

◆ setAttrib()

void concepts::Connector::setAttrib ( uint  attrb)
inlineinherited

Definition at line 111 of file connector.hh.

◆ setStrategy()

void concepts::InfiniteQuad::setStrategy ( const InfQuadSubdivision strategy = 0)
throw (StrategyChange
)

Sets the subdivision strategy of this quad.

If the parameter is set to 0 (or if the method is called without parameter) the strategy is set to the default (if not already set). The default subdivision strategy is subdivision into 4 children.

  @param strategy Pointer to an instance of a subdivision strategy.
Exceptions
StrategyChangeif the change is not allowed (the change is not allowed if there are children present)

◆ vertex()

Vertex* concepts::InfiniteQuad::vertex ( uint  i) const
inlinevirtual

Returns a 0D component: vertex A 2D element consists of 1D and 0D elements, the vertices can be queried here.

Parameters
iIndex of the vertex

Implements concepts::Connector2.

Definition at line 458 of file topology.hh.

Friends And Related Function Documentation

◆ InfQuadSubdiv2V

friend class InfQuadSubdiv2V
friend

Definition at line 424 of file topology.hh.

Member Data Documentation

◆ attrib_

Attribute concepts::Connector::attrib_
protectedinherited

Attribute.

Definition at line 132 of file connector.hh.

◆ chld_

concepts::Joiner<Connector2*, 1>* concepts::InfiniteQuad::chld_
protected

List of Pointers to the children.

Definition at line 509 of file topology.hh.

◆ cnt_

uint concepts::Connector2::cnt_
staticprotectedinherited

Counter for the connectors.

This counter is used to create the unique key of the connector.

Definition at line 263 of file connector.hh.

◆ edg_

Edge* concepts::InfiniteQuad::edg_
protected

Finite edge.

Definition at line 512 of file topology.hh.

◆ infEdg_

InfiniteEdge* concepts::InfiniteQuad::infEdg_[2]
protected

Finite edge.

Definition at line 515 of file topology.hh.

◆ key_

Key concepts::Connector::key_
protectedinherited

Unique key of the connector.

Definition at line 129 of file connector.hh.

◆ rho_

Z2 concepts::InfiniteQuad::rho_
protected

Orientation flags for the finite edge.

Definition at line 518 of file topology.hh.

◆ subdivStrategy_

const InfQuadSubdivision* concepts::InfiniteQuad::subdivStrategy_
protected

Subdivision strategy for the quadrilateral.

Definition at line 521 of file topology.hh.


The documentation for this class was generated from the following file:
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich