Public Member Functions | |
vtBuilding & | operator= (const vtBuilding &v) |
void | SetFootprint (int i, const DLine2 &dl) |
void | SetFootprint (int i, const DPolygon2 &poly) |
const DPolygon2 & | GetFootprint (int i) const |
const DLine2 & | GetOuterFootprint (int i) const |
bool | GetBaseLevelCenter (DPoint2 &p) const |
void | SetRectangle (const DPoint2 ¢er, float fWidth, float fDepth, float fRotation=0.0f) |
void | SetCircle (const DPoint2 ¢er, float fRad) |
void | FlipFootprintDirection () |
float | CalculateBaseElevation (vtHeightField *pHeightField) |
void | TransformCoords (OCTransform *trans) |
void | SetRoofType (RoofType rt, int iSlope=-1, int iLev=-1) |
RoofType | GetRoofType () const |
RGBi | GuessRoofColor () const |
void | SetRoofColor (const RGBi &rgb) |
void | SetColor (BldColor which, const RGBi &color) |
RGBi | GetColor (BldColor which) const |
void | SetNumStories (int i) |
int | NumStories () const |
float | GetTotalHeight () const |
uint | NumLevels () const |
vtLevel * | GetLevel (int i) |
const vtLevel * | GetLevel (int i) const |
vtLevel * | CreateLevel (const DPolygon2 &footprint) |
vtLevel * | CreateLevel () |
void | InsertLevel (int iLev, vtLevel *pLev) |
void | DeleteLevel (int iLev) |
bool | GetExtents (DRECT &rect) const |
void | Offset (const DPoint2 &delta) |
double | GetDistanceToInterior (const DPoint2 &point) const |
void | WriteXML (GZOutput &out, bool bDegrees) const |
void | AddDefaultDetails () |
void | DetermineLocalFootprints () |
const FPolygon3 & | GetLocalFootprint (int i) const |
bool | IsContainedBy (const DRECT &rect) const |
void | SwapLevels (int lev1, int lev2) |
void | SetEaves (float fLength) |
void | SetEavesSimple (float fLength) |
void | SetEavesFelkel (float fLength) |
void | CopyStyleFrom (const vtBuilding *const pSource, bool bDoHeight) |
void | SetCRS (vtCRS *proj) |
![]() | |
void | CopyFrom (const vtStructure &v) |
void | SetType (vtStructureType t) |
vtStructureType | GetType () const |
void | SetElevationOffset (float fOffset) |
float | GetElevationOffset () const |
void | SetAbsolute (bool b) |
bool | GetAbsolute () const |
vtBuilding * | GetBuilding () |
vtFence * | GetFence () |
vtStructInstance * | GetInstance () |
void | WriteTags (GZOutput &out) const |
![]() | |
void | AddTag (const vtTag &pTag) |
void | AddTag (const char *name, const char *value) |
vtTag * | FindTag (const char *szTagName) |
const vtTag * | FindTag (const char *szTagName) const |
vtTag * | GetTag (int index) |
const vtTag * | GetTag (int index) const |
uint | NumTags () const |
void | RemoveTag (int index) |
void | RemoveTag (const char *szTagName) |
void | Clear () |
void | SetValueString (const char *szTagName, const vtString &string, bool bCreating=false) |
void | SetValueBool (const char *szTagName, bool value, bool bCreating=false) |
void | SetValueInt (const char *szTagName, int value, bool bCreating=false) |
void | SetValueFloat (const char *szTagName, float value, bool bCreating=false) |
void | SetValueDouble (const char *szTagName, double value, bool bCreating=false) |
void | SetValueRGBi (const char *szTagName, const RGBi &value, bool bCreating=false) |
const char * | GetValueString (const char *szTagName, bool bSuppressWarning=false) const |
bool | GetValueBool (const char *szTagName) const |
int | GetValueInt (const char *szTagName) const |
float | GetValueFloat (const char *szTagName) const |
double | GetValueDouble (const char *szTagName) const |
RGBi | GetValueRGBi (const char *szTagName) const |
bool | GetValueString (const char *szTagName, vtString &string) const |
bool | GetValueBool (const char *szTagName, bool &bValue) const |
bool | GetValueInt (const char *szTagName, int &iValue) const |
bool | GetValueFloat (const char *szTagName, float &fValue) const |
bool | GetValueDouble (const char *szTagName, double &dValue) const |
bool | GetValueRGBi (const char *szTagName, RGBi &color) const |
vtTagArray & | operator= (const vtTagArray &v) |
bool | operator== (const vtTagArray &v) const |
bool | operator!= (const vtTagArray &v) const |
void | CopyTagsFrom (const vtTagArray &v) |
bool | WriteToXML (const char *fname, const char *title) const |
void | WriteToXMLBody (FILE *fp, int iIndent) const |
bool | LoadFromXML (const char *fname) |
virtual bool | OverrideValue (const char *szTagName, const vtString &string) |
virtual void | WriteOverridesToXML (FILE *fp) const |
void | LogTags () const |
Static Public Member Functions | |
static const char * | GetEdgeFeatureString (int edgetype) |
static int | GetEdgeFeatureValue (const char *value) |
![]() | |
static void | SetVerbose (bool value) |
Protected Attributes | |
vtArray< vtLevel * > | m_Levels |
vtCRS * | m_pCRS |
![]() | |
vtStructureType | m_type |
float | m_fElevationOffset |
bool | m_bAbsolute |
![]() | |
std::vector< vtTag > | m_tags |
Additional Inherited Members | |
![]() | |
static bool | s_bVerbose = false |
This class contains a parametric representation of a building.
The geometry is described by a series of levels (vtLevel), each of which contains a set of edges (vtEdge), which in turn are composed of edge features (vtEdgeFeature). These components can vary in color, material, size, and number, which gives a high-level representation of a building, which can be used to construct a reasonable (visually similar) model of the building.
float vtBuilding::CalculateBaseElevation | ( | vtHeightField * | pHeightField | ) |
Calculate the elevation at which this building should be placed on a given heightfield.
void vtBuilding::FlipFootprintDirection | ( | ) |
Flips the direction of the footprint, which is either clockwise or counterclockwise when viewed from above. This affects the footprints of all levels.
RGBi vtBuilding::GetColor | ( | BldColor | which | ) | const |
Get the color of the building. In the case of multi-colored buildings, note that this method returns only the first color encountered.
which | Can be either BLD_BASIC (color of the building) or BLD_ROOF (color of the roof). |
double vtBuilding::GetDistanceToInterior | ( | const DPoint2 & | point | ) | const |
Find the closest distance from a given point to the interior of a building's lowest footprint. If the point is inside the footprint, the value 0.0 is returned.
int vtBuilding::NumStories | ( | ) | const |
Get the total number of stories of this building. The top level is assumed to be a roof and does not count toward the total.
vtBuilding & vtBuilding::operator= | ( | const vtBuilding & | v | ) |
Asignment operator, which makes an explicit copy the entire building including each level.
void vtBuilding::SetCircle | ( | const DPoint2 & | center, |
float | fRad | ||
) |
Sets the base footprint of the building to be a circle. A circle is represented by a 20-sided polygonal footprint.
center | The location of the building's center. |
fRad | The radius of the building. |
void vtBuilding::SetColor | ( | BldColor | which, |
const RGBi & | color | ||
) |
Set the colors of the building.
which | Can be either BLD_BASIC (the overall color of the building) or BLD_ROOF (the overall color of the roof). |
color | The color to set. |
void vtBuilding::SetFootprint | ( | int | lev, |
const DLine2 & | foot | ||
) |
Set the footprint of the given level of the building.
lev | The level, from 0 for the base level and up. |
foot | The footprint. |
void vtBuilding::SetFootprint | ( | int | lev, |
const DPolygon2 & | poly | ||
) |
Set the footprintf of the given level of the building.
lev | The level, from 0 for the base level and up. |
poly | The footprint. |
void vtBuilding::SetNumStories | ( | int | iStories | ) |
Set the height of the building in stories. If the building has no levels, two will be created: for the walls and the roof. If the number of stories is greater than before, the additional stories are added to the top-most non-roof level. If lesser, stories and levels are removed from the top down until the desired number is met.
iStories | Number of stories to set. |
void vtBuilding::SetRoofType | ( | RoofType | rt, |
int | iSlope = -1 , |
||
int | iLev = -1 |
||
) |
Set the type of roof for this building. In cases of ambiguity, such as setting a gable roof, the method will try to make intelligent guesses about where to put the roof angles based the length of the roof edges.
rt | Roof type, one of:
|
iSlope | For a non-flat roof, this is the slope in degrees of the sloped edges. This varies from 0 (horizontal) to 90 (vertical). |
iLev | (optional) The number of the level to assume is the roof. If omitted, the top level is assumed to be the roof. |
void vtBuilding::TransformCoords | ( | OCTransform * | trans | ) |
Transform the coodinates of this building (the footprints of each level) by the given coordinate transformation.