ROOT logo
Gled » VAR1 » TriMesh

class TriMesh: public ZGlass, public TriMeshColorArraySource


 Wrapper over TringTvor (triangulation data) and Opcode structures.

 User is responsible for (re)creation of aabboxes in TringTvor.

 Structure VConnData must be reduced (possibly use quantization to shorts.
 Structure VertexData should be extended with per-point values.
 I guess something like gl uniform varibles (including vector forms).

Function Members (Methods)

public:
TriMesh(const TriMesh&)
TriMesh(const Text_t* n = "TriMesh", const Text_t* t = 0)
virtual~TriMesh()
static void_gled_catalog_init()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
voidAssertOpcStructs()
virtual voidAssertVertexColorArray()
voidAssertVertexConnections()
virtual voidTObject::Browse(TBrowser* b)
voidBuildOpcStructs()
voidBuildVertexConnections()
voidCalculateBoundingBox()
static TriMeshColorArraySource*TriMeshColorArraySource::CastLens(const Exc_t& eh, ZGlass* lens, Bool_t null_ok)
Bool_tZGlass::CheckBit(ZGlass::Bits_e bit) const
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual voidZGlass::ClearAllReferences()
voidZGlass::ClearLinks()
virtual TObject*TObject::Clone(const char* newname = "") const
virtual voidColorArraysModified()
voidColorByCoord(RGBAPalette* pal, ZGlass* carr_src_lens = 0, Int_t axis = 2, Float_t fac = 1, Float_t offset = 0)
voidColorByCoordFormula(RGBAPalette* pal, ZGlass* carr_src_lens = 0, const Text_t* formula = "z", Float_t min = 0, Float_t max = 10)
voidColorByNormal(RGBAPalette* pal, ZGlass* carr_src_lens = 0, Int_t axis = 2, Float_t min = -1, Float_t max = 1)
voidColorByNormalFormula(RGBAPalette* pal, ZGlass* carr_src_lens = 0, const Text_t* formula = "sqrt(x*x+y*y)", Float_t min = 0, Float_t max = 1)
voidColorByParaSurfCoord(RGBAPalette* pal, ZGlass* carr_src_lens = 0, Int_t axis = 2, Float_t fac = 1, Float_t offset = 0)
voidColorByParaSurfNormal(RGBAPalette* pal, ZGlass* carr_src_lens = 0, Int_t axis = 2, Float_t min = -1, Float_t max = 1)
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidCopyLinkRefs(lppZGlass_t& ref_list)
virtual voidCopyLinkReps(ZGlass::lLinkRep_t& link_rep_list)
virtual voidCopyLinks(lpZGlass_t& glass_list)
Short_tZGlass::DecEyeRefCount()
Short_tZGlass::DecRefCount(ZGlass* from, UShort_t n = 1)
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tZGlass::DetachedThreadNice(const ZMIR* mir) const
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
voidExecuteMir(ZMIR& mir)
voidExportGTSurf(GTSurf* gts)
voidExportPovMesh(const Text_t* fname, Bool_t smoothp = false)
voidExtrudeTriangle(Int_t ti, Float_t h)
voidExtrudeTriangle(Int_t ti, Float_t x, Float_t y, Float_t z)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
static FID_tFID()
Int_tFindClosestVertex(UInt_t triangle, const Float_t* xyz, Float_t* sqr_dist = 0)
virtual ZGlass*ZGlass::FindLensByPath(const TString& url, bool throwp = false)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Bool_tFindPointFromFGH(const Float_t* fgh, Bool_t absolute_h, Float_t* xyz_out, Float_t* h_out = 0, UInt_t* triangle_idx = 0)
Bool_tFindPointFromXYZH(const Float_t* xyz_in, Float_t h_in, Float_t* xyz_out, Float_t* h_out = 0, UInt_t* triangle_idx = 0)
Bool_tFindTriangleExitPoint(UInt_t triangle, const Float_t* xyz, const Float_t* dir, Float_t* xyz_out, UInt_t* next_triangle = 0)
voidGenerateTriangleNormals()
voidGenerateVertexNormals()
Bool_tZGlass::GetAcceptRefs() const
ZImage*GetDefTexture()
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
UShort_tZGlass::GetFireRefCount() const
UInt_tZGlass::GetGlassBits()
ZMirFilter*ZGlass::GetGuard()
virtual const char*TObject::GetIconName() const
virtual ZGlass*ZGlass::GetLinkByName(const TString& link_name)
Float_tGetM() const
Bool_tZGlass::GetMIRActive() const
UShort_tZGlass::GetMoonRefCount() const
virtual const Text_t*ZGlass::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
Opcode::MeshInterface*GetOPCMeshIf()
Opcode::Model*GetOPCModel()
virtual Option_t*TObject::GetOption() const
ParaSurf*GetParaSurf()
ZQueen*ZGlass::GetQueen()
UShort_tZGlass::GetRefCount() const
Saturn*ZGlass::GetSaturn()
ID_tZGlass::GetSaturnID() const
TimeStamp_tZGlass::GetStampReqTring() const
UShort_tZGlass::GetSunRefCount() const
Float_tGetSurface() const
TimeStamp_tZGlass::GetTimeStamp() const
virtual const Text_t*ZGlass::GetTitle() const
virtual UChar_t*GetTriangleColorArray()
TringTvor*GetTTvor()
virtual UInt_tTObject::GetUniqueID() const
Bool_tZGlass::GetUseDispList() const
Bool_tZGlass::GetUseNameStack() const
virtual UChar_t*GetVertexColorArray()
Float_tGetVolume() const
Float_tGetXYArea() const
static GledNS::ClassInfo*GlassInfo()
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
Bool_tHasVertexConnections()
TStringZGlass::Identify() const
voidImportGTSurf(GTSurf* gts)
voidImportRectTerrain(RectTerrain* rt, Bool_t colp = true, Bool_t texp = false)
Short_tZGlass::IncEyeRefCount()
Short_tZGlass::IncRefCount(ZGlass* from)
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
boolZGlass::IsSunOrFireSpace()
boolZGlass::IsSunSpace()
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidMakeBox(Float_t a = 5, Float_t b = 4, Float_t c = 3)
voidMakeTetraChopper(Float_t l1 = 0.3, Float_t l2 = 0, Float_t l3 = 0.2, Float_t l4 = 0.8, Float_t w = 0.2, Float_t h = 0.2, Float_t wing_l1 = 0.4, Float_t wing_l2 = 0.8, Float_t wing_w = 0.12, Float_t wing_h = 0.02)
voidMakeTetraFlyer(Float_t l1 = 0.8, Float_t l2 = 0.2, Float_t w = 0.2, Float_t h = 0.2, Float_t wing_l1 = 0.4, Float_t wing_l2 = 0.1, Float_t wing_z = 0.01, Float_t wing_w = 0.8, Float_t wing_h = 0.02)
voidMakeTetrahedron(Float_t l1 = 0.8, Float_t l2 = 0.2, Float_t w = 0.4, Float_t h = 0.4)
voidMakeTetraMark(Float_t r0 = 0.5, Float_t h0 = 2, Float_t r1 = 3, Float_t w1 = 1, Float_t h1 = 0.05)
virtual voidZGlass::MarkStampReqTring()
voidTObject::MayNotUse(const char* method) const
static MID_tMid_CalculateBoundingBox()
static MID_tMid_ColorByCoord()
static MID_tMid_ColorByCoordFormula()
static MID_tMid_ColorByNormal()
static MID_tMid_ColorByNormalFormula()
static MID_tMid_ColorByParaSurfCoord()
static MID_tMid_ColorByParaSurfNormal()
static MID_tMid_ExportGTSurf()
static MID_tMid_ExportPovMesh()
static MID_tMid_GenerateTriangleNormals()
static MID_tMid_GenerateVertexNormals()
static MID_tMid_ImportGTSurf()
static MID_tMid_ImportRectTerrain()
static MID_tMid_MakeTetraChopper()
static MID_tMid_MakeTetraFlyer()
static MID_tMid_MakeTetrahedron()
static MID_tMid_MakeTetraMark()
static MID_tZGlass::Mid_RebuildRnrScheme()
static MID_tZGlass::Mid_ReTriangulate()
static MID_tZGlass::Mid_SetAcceptRefs()
static MID_tMid_SetCOM()
static MID_tMid_SetCOMByRef()
static MID_tMid_SetDefTexture()
static MID_tZGlass::Mid_SetGuard()
static MID_tMid_SetJ()
static MID_tMid_SetJByRef()
static MID_tMid_SetM()
static MID_tZGlass::Mid_SetMIRActive()
static MID_tZGlass::Mid_SetName()
static MID_tMid_SetParaSurf()
static MID_tMid_SetSection()
static MID_tMid_SetSectionByRef()
static MID_tZGlass::Mid_SetStampReqTring()
static MID_tMid_SetSurface()
static MID_tZGlass::Mid_SetTimeStamp()
static MID_tZGlass::Mid_SetTitle()
static MID_tMid_SetTTvor()
static MID_tZGlass::Mid_SetUseDispList()
static MID_tZGlass::Mid_SetUseDLRec()
static MID_tZGlass::Mid_SetUseNameStack()
static MID_tMid_SetVolume()
static MID_tMid_SetXYArea()
static MID_tZGlass::Mid_UpdateAllViews()
static MID_tZGlass::Mid_UpdateGlassView()
virtual Bool_tTObject::Notify()
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
TriMesh&operator=(const TriMesh&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
voidZGlass::ReadLock() const
voidZGlass::ReadUnlock() const
virtual Int_tZGlass::RebuildAllRefs(An_ID_Demangler* idd)
virtual Int_tRebuildLinkRefs(An_ID_Demangler* c)
voidZGlass::RebuildRnrScheme()
virtual voidTObject::RecursiveRemove(TObject* obj)
Opcode::AABB&ref_mesh_bbox()
const HPointF&RefCOM() const
const vector<Int_t>&RefECursVec() const
const vector<TriMesh::EdgeData>&RefEDataVec() const
const HPointF&RefJ() const
const TString&ZGlass::RefName() const
const HPointF&RefSection() const
const TString&ZGlass::RefTitle() const
const vector<TriMesh::VertexData>&RefVDataVec() const
voidZGlass::register_name_change_cb(ZGlass::NameChangeCB* nccb)
voidZGlass::register_ray_absorber(ZGlass::RayAbsorber* ra)
Int_tZGlass::RemoveReferencesTo(ZGlass* lens)
voidTObject::ResetBit(UInt_t f)
virtual voidResetTTvorDependants()
voidZGlass::ReTriangulate()
ZMIR*S_CalculateBoundingBox()
ZMIR*S_ColorByCoord(RGBAPalette* pal, ZGlass* carr_src_lens = 0, Int_t axis = 2, Float_t fac = 1, Float_t offset = 0)
ZMIR*S_ColorByCoordFormula(RGBAPalette* pal, ZGlass* carr_src_lens = 0, const Text_t* formula = "z", Float_t min = 0, Float_t max = 10)
ZMIR*S_ColorByNormal(RGBAPalette* pal, ZGlass* carr_src_lens = 0, Int_t axis = 2, Float_t min = -1, Float_t max = 1)
ZMIR*S_ColorByNormalFormula(RGBAPalette* pal, ZGlass* carr_src_lens = 0, const Text_t* formula = "sqrt(x*x+y*y)", Float_t min = 0, Float_t max = 1)
ZMIR*S_ColorByParaSurfCoord(RGBAPalette* pal, ZGlass* carr_src_lens = 0, Int_t axis = 2, Float_t fac = 1, Float_t offset = 0)
ZMIR*S_ColorByParaSurfNormal(RGBAPalette* pal, ZGlass* carr_src_lens = 0, Int_t axis = 2, Float_t min = -1, Float_t max = 1)
ZMIR*S_ExportGTSurf(GTSurf* gts)
ZMIR*S_ExportPovMesh(const Text_t* fname, Bool_t smoothp = false)
ZMIR*S_GenerateTriangleNormals()
ZMIR*S_GenerateVertexNormals()
ZMIR*S_ImportGTSurf(GTSurf* gts)
ZMIR*S_ImportRectTerrain(RectTerrain* rt, Bool_t colp = true, Bool_t texp = false)
ZMIR*S_MakeTetraChopper(Float_t l1 = 0.3, Float_t l2 = 0, Float_t l3 = 0.2, Float_t l4 = 0.8, Float_t w = 0.2, Float_t h = 0.2, Float_t wing_l1 = 0.4, Float_t wing_l2 = 0.8, Float_t wing_w = 0.12, Float_t wing_h = 0.02)
ZMIR*S_MakeTetraFlyer(Float_t l1 = 0.8, Float_t l2 = 0.2, Float_t w = 0.2, Float_t h = 0.2, Float_t wing_l1 = 0.4, Float_t wing_l2 = 0.1, Float_t wing_z = 0.01, Float_t wing_w = 0.8, Float_t wing_h = 0.02)
ZMIR*S_MakeTetrahedron(Float_t l1 = 0.8, Float_t l2 = 0.2, Float_t w = 0.4, Float_t h = 0.4)
ZMIR*S_MakeTetraMark(Float_t r0 = 0.5, Float_t h0 = 2, Float_t r1 = 3, Float_t w1 = 1, Float_t h1 = 0.05)
ZMIR*ZGlass::S_RebuildRnrScheme()
ZMIR*ZGlass::S_ReTriangulate()
ZMIR*ZGlass::S_SetAcceptRefs(Bool_t acceptrefs)
ZMIR*S_SetCOM(Float_t x, Float_t y, Float_t z)
ZMIR*S_SetCOMByRef(const HPointF& com)
ZMIR*S_SetDefTexture(ZImage* deftexture)
ZMIR*ZGlass::S_SetGuard(ZMirFilter* guard)
ZMIR*S_SetJ(Float_t x, Float_t y, Float_t z)
ZMIR*S_SetJByRef(const HPointF& j)
ZMIR*S_SetM(Float_t m)
ZMIR*ZGlass::S_SetMIRActive(Bool_t miractive)
ZMIR*ZGlass::S_SetName(const Text_t* s)
ZMIR*S_SetParaSurf(ParaSurf* parasurf)
ZMIR*S_SetSection(Float_t x, Float_t y, Float_t z)
ZMIR*S_SetSectionByRef(const HPointF& section)
ZMIR*ZGlass::S_SetStampReqTring(TimeStamp_t stampreqtring)
ZMIR*S_SetSurface(Float_t surface)
ZMIR*ZGlass::S_SetTimeStamp(TimeStamp_t timestamp)
ZMIR*ZGlass::S_SetTitle(const Text_t* s)
ZMIR*S_SetTTvor(TringTvor* ttvor)
ZMIR*ZGlass::S_SetUseDispList(Bool_t usedisplist)
ZMIR*ZGlass::S_SetUseDLRec(Bool_t state)
ZMIR*ZGlass::S_SetUseNameStack(Bool_t usenamestack)
ZMIR*S_SetVolume(Float_t volume)
ZMIR*S_SetXYArea(Float_t xyarea)
ZMIR*ZGlass::S_UpdateAllViews()
ZMIR*ZGlass::S_UpdateGlassView()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidZGlass::SetAcceptRefs(Bool_t acceptrefs)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetCOM(Float_t x, Float_t y, Float_t z)
voidSetCOMByRef(const HPointF& com)
voidSetDefTexture(ZImage* deftexture)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidZGlass::SetGuard(ZMirFilter* guard)
voidSetJ(Float_t x, Float_t y, Float_t z)
voidSetJByRef(const HPointF& j)
voidSetM(Float_t m)
voidSetMassAndSpeculate(Float_t mass, Float_t mass_frac_on_mesh = 0.4)
voidSetMassFromBBox(Float_t sfac, Float_t hfac, Float_t density, Float_t mass_frac_on_mesh = 0.4)
voidZGlass::SetMIRActive(Bool_t miractive)
voidZGlass::SetName(const Text_t* n)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetParaSurf(ParaSurf* parasurf)
voidSetSection(Float_t x, Float_t y, Float_t z)
voidSetSectionByRef(const HPointF& section)
voidZGlass::SetStampReqTring(TimeStamp_t stampreqtring)
virtual voidZGlass::SetStamps(TimeStamp_t s)
voidSetSurface(Float_t surface)
voidZGlass::SetTimeStamp(TimeStamp_t timestamp)
voidZGlass::SetTitle(const Text_t* t)
voidSetTTvor(TringTvor* ttvor)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidZGlass::SetUseDispList(Bool_t usedisplist)
voidZGlass::SetUseDLRec(Bool_t state)
voidZGlass::SetUseNameStack(Bool_t usenamestack)
voidSetVolume(Float_t volume)
voidSetXYArea(Float_t xyarea)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
TimeStamp_tZGlass::Stamp()
virtual TimeStamp_tZGlass::Stamp(FID_t fid, UChar_t eye_bits = 0)
TimeStamp_tZGlass::StampLink()
virtual TimeStamp_tZGlass::StampLink(FID_t fid)
TimeStamp_tZGlass::StampLinkVFID()
virtual voidZGlass::StampReqTring(FID_t fid = FID_t(0,0))
TimeStamp_tZGlass::StampVFID()
voidStdDynamicoPostImport()
voidStdSurfacePostImport()
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
TStringZGlass::StrName() const
TStringZGlass::StrTitle() const
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
voidZGlass::unregister_name_change_cb(ZGlass::NameChangeCB* nccb)
voidZGlass::unregister_ray_absorber(ZGlass::RayAbsorber* ra)
voidZGlass::UpdateAllViews()
voidZGlass::UpdateGlassView()
virtual voidTObject::UseCurrentStyle()
virtual FID_tVFID() const
virtual GledNS::ClassInfo*VGlassInfo() const
Int_tVisitVertices(Int_t vertex, TriMesh::VertexVisitor& vertex_visitor, set<Int_t>& visited_vertices, set<Int_t>& accepted_vertices)
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
voidZGlass::WriteLock()
voidZGlass::WriteUnlock()
protected:
virtual voidZGlass::AdEndarkenment()
virtual voidZGlass::AdEnlightenment()
virtual voidZGlass::AdUnfoldment()
ZMIR*ZGlass::assert_MIR_presence(const Exc_t& header, int what = 0)
ParaSurf*assert_parasurf(const Exc_t& eh)
voidcalculate_surface_and_areas()
voidcolorize_trings_single(UChar_t r, UChar_t g, UChar_t b, UChar_t a)
voidcolorize_trings_std()
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidextrude_triangle(Int_t ti, Float_t h)
voidextrude_triangle(Int_t ti, Float_t x, Float_t y, Float_t z)
TriMesh::EdgeData&find_edge(Int_t v1, Int_t v2)
TriMesh::EdgeData&find_edge(const TriMesh::VertexData& vd, Int_t v1, Int_t v2)
ZMIR*ZGlass::get_MIR()
voidmake_cubus(Int_t vo, Int_t to, Float_t x0, Float_t y0, Float_t z0, Float_t a, Float_t b, Float_t c)
voidmake_tetra(Int_t vo, Int_t to, Float_t l1, Float_t l2, Float_t z, Float_t w, Float_t h)
voidmake_tetra_blade(Int_t vo, Int_t to, const Float_t* org, const Float_t* dir, Float_t w, Float_t h)
voidTObject::MakeZombie()
voidZGlass::queen_check_in(ZGlass* l)
virtual voidZGlass::reference_all()
virtual voidZGlass::reference_links()
virtual Int_tZGlass::remove_references_to(ZGlass* lens)
voidZGlass::set_link_or_die(ZGlass*& link, ZGlass* new_val, FID_t fid)
ZMIR*ZGlass::suggest_MIR_presence(const Exc_t& header, int what = 0)
virtual voidZGlass::unreference_all()
virtual voidZGlass::unreference_links()
voidZGlass::warn_caller(const TString& warning)
private:
void_init()

Data Members

protected:
Bool_tZGlass::bAcceptRefsX{GS} 7 BoolOut()
Bool_tZGlass::bMIRActiveX{GS} 7 BoolOut(-join=>1)
Bool_tZGlass::bUseDispListX{GST} 7 Bool(-join=>1)
Bool_tZGlass::bUseNameStackX{GS} 7 Bool()
HPointFmCOMX{RS} 7 HPointF(-const=>1)
ZLink<ZImage>mDefTextureX{GS} L{}
vector<Int_t>mECursVec! X{R} Cursor array, one entry per vertex.
vector<TriMesh::EdgeData>mEDataVec! X{R}
UShort_tZGlass::mEyeRefCount!
UShort_tZGlass::mFireRefCount! X{G} 7 ValOut(-width=>4)
UInt_tZGlass::mGlassBitsX{g}
ZLink<ZMirFilter>ZGlass::mGuardX{E} L{}
HPointFmJX{RS} 7 HPointF(-const=>1)
Float_tmMX{GS} 7 ValOut(-join=>1)
UShort_tZGlass::mMoonRefCount! X{G} 7 ValOut(-width=>4)
TStringZGlass::mNameX{RGE} 7 Textor()
Opcode::MeshInterface*mOPCMeshIf! X{g}
Opcode::Model*mOPCModel! X{g}
ZLink<ParaSurf>mParaSurfX{GS} L{a}
ZQueen*ZGlass::mQueen! X{g}
GMutexZGlass::mReadMutex!
UShort_tZGlass::mRefCount! X{G} 7 ValOut(-width=>4, -join=>1)
Saturn*ZGlass::mSaturn! X{g}
ID_tZGlass::mSaturnIDX{G} 7 ValOut(-range=>[0,MAX_ID,1], -width=>10)
HPointFmSectionX{RS} 7 HPointF(-const=>1)
TimeStamp_tZGlass::mStampReqTring! X{GS} TimeStamp of last change that requires retriangulation
UShort_tZGlass::mSunRefCount! X{G} 7 ValOut(-width=>4, -join=>1)
Float_tmSurfaceX{GS} 7 ValOut()
TringTvor*mTTvor! X{gs}
TimeStamp_tZGlass::mTimeStamp! X{GS} TimeStamp of last change
TStringZGlass::mTitleX{RGE} 7 Textor()
vector<TriMesh::VertexData>mVDataVec! X{R}
Float_tmVolumeX{GS} 7 ValOut(-join=>1)
Float_tmXYAreaX{GS} 7 ValOut()
set<NameChangeCB*>*ZGlass::pspNameChangeCB!
set<RayAbsorber*>*ZGlass::pspRayAbsorber!
static GledNS::LinkMemberInfo*sap_DefTexture_lmi
static GledNS::LinkMemberInfo*ZGlass::sap_Guard_lmi
static GledNS::LinkMemberInfo*sap_ParaSurf_lmi
static GledNS::ClassInfo*sap_TriMesh_ci
static GledNS::ClassInfo*ZGlass::sap_ZGlass_ci

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

void _init()
~TriMesh()
void AssertVertexColorArray()
UChar_t* GetVertexColorArray()
UChar_t* GetTriangleColorArray()
void ColorArraysModified()
void ResetTTvorDependants()
void SetMassAndSpeculate(Float_t mass, Float_t mass_frac_on_mesh = 0.4)
 Set mass of the mesh and calculate center of mass and Jz (should
 extend for full matrix but let's keep it simple for now) with a
 simple algorithm: distribute mass_frac_on_mesh of mass over the
 triangles of the mesh.

 As J_spehere = 2/5 m*r^2, the default value for mass_frac_on_mesh = 0.4.
void SetMassFromBBox(Float_t sfac, Float_t hfac, Float_t density, Float_t mass_frac_on_mesh = 0.4)
 Estimate XY-area, volume and mass from given parameters and
 bounding-box of tring-tvor.
void StdSurfacePostImport()
void StdDynamicoPostImport()
void BuildOpcStructs()
void AssertOpcStructs()
void CalculateBoundingBox()
 Calculates bounding box of the mesh.
void GenerateVertexNormals()
void GenerateTriangleNormals()
void ImportRectTerrain(RectTerrain* rt, Bool_t colp = true, Bool_t texp = false)
void ImportGTSurf(GTSurf* gts)
void ExportGTSurf(GTSurf* gts)
void ExportPovMesh(const Text_t* fname, Bool_t smoothp = false)
void make_tetra(Int_t vo, Int_t to, Float_t l1, Float_t l2, Float_t z, Float_t w, Float_t h)
void make_tetra_blade(Int_t vo, Int_t to, const Float_t* org, const Float_t* dir, Float_t w, Float_t h)
void make_cubus(Int_t vo, Int_t to, Float_t x0, Float_t y0, Float_t z0, Float_t a, Float_t b, Float_t c)
void extrude_triangle(Int_t ti, Float_t h)
 Extrude triangle with index 'ti' and place apex of the new tetra
 at height 'h' above the triangle's cog.
void extrude_triangle(Int_t ti, Float_t x, Float_t y, Float_t z)
 Extrude triangle with index 'ti' and place apex of the new tetra
 at the given position.
void colorize_trings_std()
 Colorize the triangles in a standard way.
 Downwards - blue, otherwise - green.
 It is assumed that the triangle normals have been calculated.
void colorize_trings_single(UChar_t r, UChar_t g, UChar_t b, UChar_t a)
 Colorize the triangles with given color.
void MakeTetrahedron(Float_t l1 = 0.8, Float_t l2 = 0.2, Float_t w = 0.4, Float_t h = 0.4)
 l1 ~ fwd length; l2 ~ bck length; w ~ width at the end; h ~ height;
void MakeTetraFlyer(Float_t l1 = 0.8, Float_t l2 = 0.2, Float_t w = 0.2, Float_t h = 0.2, Float_t wing_l1 = 0.4, Float_t wing_l2 = 0.1, Float_t wing_z = 0.01, Float_t wing_w = 0.8, Float_t wing_h = 0.02)
 l1 ~ fwd length; l2 ~ bck length; w ~ width at the end; h ~ height;
void MakeTetraChopper(Float_t l1 = 0.3, Float_t l2 = 0, Float_t l3 = 0.2, Float_t l4 = 0.8, Float_t w = 0.2, Float_t h = 0.2, Float_t wing_l1 = 0.4, Float_t wing_l2 = 0.8, Float_t wing_w = 0.12, Float_t wing_h = 0.02)
void MakeTetraMark(Float_t r0 = 0.5, Float_t h0 = 2, Float_t r1 = 3, Float_t w1 = 1, Float_t h1 = 0.05)
void MakeBox(Float_t a = 5, Float_t b = 4, Float_t c = 3)
 Create a box centered on 0 in x and y directions and going from 0
 to c in z.
void BuildVertexConnections()
void AssertVertexConnections()
Bool_t HasVertexConnections()
Bool_t FindPointFromFGH(const Float_t* fgh, Bool_t absolute_h, Float_t* xyz_out, Float_t* h_out = 0, UInt_t* triangle_idx = 0)
 Find world-point corresponding to the passed fgh coordinates and return it
 in the xyz_out array.

 Flag absolute_h determines how the input h-coordinate is interpreted and
 also what will be returned in h_out:
   true  - h is absolute, h_out is relative to the surface;
   false - h is relative to the surface, h_out is absolute h.

 trianlge_idx (optional) is index of the triangle on the surface that was
 hit by the ray used to find the surface point. If you need vertex index as
 well, call 'Int_t FindClosestVertex(xyz_out, triangle_idx)'.

 Returns false if ray-mesh intersection fails.
Bool_t FindPointFromXYZH(const Float_t* xyz_in, Float_t h_in, Float_t* xyz_out, Float_t* h_out = 0, UInt_t* triangle_idx = 0)
 Given world-point xyz_in and relative height h_in, find the
 corresponding point xyz_out at specified height. The point is
 only translated in vertical direction. xyz_in and xyz_out can
 point to the same location.

 h_out (if non-null) is set to relative height of the xyz_in point.

 trianlge_idx (optional) is index of the triangle on the surface that was
 hit by the ray used to find the surface point. If you need vertex index as
 well, call 'Int_t FindClosestVertex(xyz_out, triangle_idx)'.

 Returns false if ray-mesh intersection fails.
Int_t FindClosestVertex(UInt_t triangle, const Float_t* xyz, Float_t* sqr_dist = 0)
 Find vertex of triangle that is closest to point given by xyz.
 If sqr_dist is passed, it is filled with square distance of the returned
 vertex.
 Trianlge index is not checked, neither is tvor's presence.
Bool_t FindTriangleExitPoint(UInt_t triangle, const Float_t* xyz, const Float_t* dir, Float_t* xyz_out, UInt_t* next_triangle = 0)
 Given triangle, position xyz and direction dir, find the exit point from
 the triangle.
 If next_triangle is non-null, the triangle bordering the crossed edge is
 returned there.

 There are very many ways this can go wrong ... still working on the
 interface and the return value.
 1. The direction is orthogonal to triangle normal.
 2. All intersection points are either outside of triangle or at negative
    times.
 3. Next triangle index is -1 - the end of the world is hit.

 Now, a hack was added to also succeed when the triangle edge has just
 been passed: the function is re-entered with the new triangle. Again this
 can go wrong, so a set of triangles that have already been tried is
 cross-checked before re-entry to avoid infinite loop.
Int_t VisitVertices(Int_t vertex, TriMesh::VertexVisitor& vertex_visitor, set<Int_t>& visited_vertices, set<Int_t>& accepted_vertices)
 Visits vertex by calling VertexVisitor::VisitVertex(vertex). If
 this returns true, the neighbouring vertices are visited in order
 specified in the vertex edge-array.

 Set visited_vertices holds already visited vertices, they will
 not be visited twice.

 Set accepted_vertices holds the verices for which the visitor
 returned true.

 Returns the maximum depth of recursion.
void ColorByCoord(RGBAPalette* pal, ZGlass* carr_src_lens = 0, Int_t axis = 2, Float_t fac = 1, Float_t offset = 0)
void ColorByNormal(RGBAPalette* pal, ZGlass* carr_src_lens = 0, Int_t axis = 2, Float_t min = -1, Float_t max = 1)
void ColorByParaSurfCoord(RGBAPalette* pal, ZGlass* carr_src_lens = 0, Int_t axis = 2, Float_t fac = 1, Float_t offset = 0)
void ColorByParaSurfNormal(RGBAPalette* pal, ZGlass* carr_src_lens = 0, Int_t axis = 2, Float_t min = -1, Float_t max = 1)
void ColorByCoordFormula(RGBAPalette* pal, ZGlass* carr_src_lens = 0, const Text_t* formula = "z", Float_t min = 0, Float_t max = 10)
void ColorByNormalFormula(RGBAPalette* pal, ZGlass* carr_src_lens = 0, const Text_t* formula = "sqrt(x*x+y*y)", Float_t min = 0, Float_t max = 1)
void calculate_surface_and_areas()
EdgeData& find_edge(const TriMesh::VertexData& vd, Int_t v1, Int_t v2)
EdgeData& find_edge(Int_t v1, Int_t v2)
TriMesh(const Text_t* n = "TriMesh", const Text_t* t = 0)
{ _init(); }
Opcode::AABB& ref_mesh_bbox()
{ return *(Opcode::AABB*)mTTvor->mCtrExtBox; }
void ExtrudeTriangle(Int_t ti, Float_t h)
void ExtrudeTriangle(Int_t ti, Float_t x, Float_t y, Float_t z)