00001 /* 00002 * Copyright (C) 2008 00003 * Robert Bosch LLC 00004 * Research and Technology Center North America 00005 * Palo Alto, California 00006 * 00007 * All rights reserved. 00008 * 00009 *------------------------------------------------------------------------------ 00010 * project ....: PUMA: Probablistic Unsupervised Model Acquisition 00011 * file .......: Face3D.h 00012 * authors ....: Zhexi Wang 00013 * organization: Robert Bosch LLC 00014 * creation ...: 03/28/2008 00015 * modified ...: $Date:2008-03-03 10:26:02 -0800 (Mon, 03 Mar 2008) $ 00016 * changed by .: $Author:benjaminpitzer $ 00017 * revision ...: $Revision:141 $ 00018 */ 00019 #ifndef FACE3D_H_ 00020 #define FACE3D_H_ 00021 00022 //== INCLUDES ================================================================== 00023 #include <rtc/rtcBase.h> 00024 #include <rtc/rtcVec3.h> 00025 00026 //== NAMESPACES ================================================================ 00027 namespace rtc { 00028 00029 //== FORWARD DECLARATIONS ====================================================== 00030 class Mesh3D; 00031 00032 //== CLASS DEFINITION ========================================================== 00033 class Face3D 00034 { 00035 public: 00036 // standard c'tor and d'tor 00037 Face3D(Mesh3D* mesh, int v0, int v1, int v2); 00038 virtual ~Face3D(); 00039 // copy c'tor 00040 Face3D(const Face3D& other); 00041 00042 // calculate face normal 00043 void update(); 00044 00045 // ASCII stream IO 00046 virtual bool write(OutputHandler &oh) const; 00047 virtual bool read(InputHandler &ih); 00048 void write(FILE *fp) const; 00049 void read(FILE *fp); 00050 00051 // flags 00052 void setFlag(int flags, bool value); 00053 bool getFlag(int flags) const; 00054 bool boundary() const; 00055 void setBoundary(bool boundary); 00056 bool hidden() const; 00057 void setHidden(bool hidden); 00058 00059 // internal data 00060 Mesh3D* mesh; 00061 // face vertices 00062 Vec3i v; 00063 // face normal 00064 Vec3f n; 00065 // multi purpose flags 00066 int flags; 00067 }; 00068 00069 //============================================================================== 00070 } // NAMESPACE rtc 00071 //============================================================================== 00072 #endif // FACE3D_H_ defined 00073 //==============================================================================