34 float r = 255.0f, g = 67.0f, b = 133.0f;
60 TYRectangle(
TYPoint(-1, 1, 0.5),
TYPoint(1, 1, 0.5),
TYPoint(1, -1, 0.5),
TYPoint(-1, -1, 0.5));
65 TYRectangle(
TYPoint(-1, -1, -0.5),
TYPoint(1, -1, -0.5),
TYPoint(1, 1, -0.5),
TYPoint(-1, 1, -0.5));
103 if (TYAcousticVolume::operator!=(other))
154 return "TYAcousticCylinder";
172 bool circTopFound =
false;
173 bool circBottomFound =
false;
174 bool enveloppeFound =
false;
178 QDomNodeList childs = domElement.childNodes();
179 for (
unsigned int i = 0; i < childs.length(); i++)
181 elemCur = childs.item(i).toElement();
192 else if (!circBottomFound)
210 for (j = 0; j < nbRegMachine - 1; j++)
216 bool statusFrom =
true;
217 bool statusTo =
true;
223 if (!statusFrom || !statusTo)
228 regimeTo.
deepCopy(®imeFrom,
false);
332 tab.insert(tab.end(), tabTmp.begin(), tabTmp.end());
335 tab.insert(tab.end(), tabTmp.begin(), tabTmp.end());
338 tab.insert(tab.end(), tabTmp.begin(), tabTmp.end());
424 nbSrcs = nbSrcs < 4 ? 4 : nbSrcs;
425 const double anglePortion =
M_2PI / nbSrcs;
432 int nbCercle = (int)(hauteurCyl / distHauteur);
436 distHauteur = hauteurCyl / 2.0;
440 const double HResiduel = (hauteurCyl - (distHauteur * nbCercle)) / 2.0;
441 if ((nbCercle > 1) && (HResiduel < (distHauteur / 2.0)))
447 double base = (hauteurCyl - (nbCercle - 1) * distHauteur) / 2.0;
453 double hauteur = base;
463 if (anglePortion > 0.0)
466 for (
int i = 0; i < nbCercle; i++)
472 while ((angle <
M_2PI))
476 pt.
_x = cos(angle) * rayon;
477 pt.
_y = sin(angle) * rayon;
478 pt.
_z = hauteurOffset + hauteur;
502 angle += anglePortion;
506 hauteur += distHauteur;
591 for (
unsigned int i = 0; i < tabRect.size(); i++)
593 tab.push_back(tabRect[i].normal());
604 tab.reserve(tabRect.size() * 4);
607 for (
unsigned int i = 0; i < tabRect.size(); i++)
610 for (
int j = 0; j < 4; j++)
613 tab.push_back(tabRect[i]._pts[j]);
625 for (
unsigned int i = 0; i < enveloppe.size(); i++)
627 tab.push_back(enveloppe[i].toPolygon());
676 if ((ptCopy.
_x * ptCopy.
_x) + (ptCopy.
_y * ptCopy.
_y) <= (rayon * rayon))
714 for (
unsigned int i = 0; i < enveloppe.size(); i++)
722 *pEnvElt->
getShape() = enveloppe[i];
788 vecTop = vecTop * (((hauteur / 2.0) / vecTop.
norme()) - 1.0);
792 vecBottom = vecBottom * (((hauteur / 2.0) / vecBottom.
norme()) - 1.0);
795 for (
int i = 0; i < 4; i++)
827 n =
ROUND(n / 4 * 4);
841 for (
int i = 0; i < n; i++)
843 TYRectangle rect(tabPtTop[(i + 1) % n], tabPtTop[i], tabPtBottom[(n - i) % n],
844 tabPtBottom[n - i - 1]);
918 double residu =
ABS(10 * log10(LWg.
sigma()) - 10 * log10(LWc.
sigma()));
921 ret = residu < 1 ? true :
false;
962 for (
unsigned int j = 0; j < tabFaces.size(); j++)
1011 ofs <<
getName().toLatin1().data() <<
'\n';
int ROUND(double a)
Compute the rounded value of a number.
#define INTERS_OUI
The intersection exists.
double ABS(double a)
Return the absolute value.
#define INTERS_NULLE
No intersection.
Representation graphique d'un cylindre accoustique (fichier header)
TY_EXTENSION_INST(TYAcousticCylinder)
TY_EXT_GRAPHIC_INST(TYAcousticCylinder)
TYGeometryNode TYAcousticSurfaceGeoNode
Noeud geometrique de type TYAcousticSurface.
std::vector< LPTYAcousticSurface > TYTabLPAcousticSurface
Tableau de TYAcousticSurfaces.
std::vector< LPTYAcousticSurfaceGeoNode > TYTabAcousticSurfaceGeoNode
Collection de noeuds geometriques de type TYAcousticSurface.
std::vector< TYRectangle > TYTabRectangle
Collection de TYRectangle.
std::vector< TYPoint > TYTabPoint
Collection de TYPoint.
#define TYDEFAULTRESOLUTIONIONCIRCLE
Resolution par defaut pour la representation des cercles par des segments.
#define TYPRECISIONCIRCLE
Precision pour la representation des cercles par des segments.
std::vector< OVector3D > TYTabVector
Collection de OVector3D.
std::vector< LPTYPolygon > TYTabLPPolygon
Collection de pointeurs de TYPolygon.
std::vector< LPTYElement > LPTYElementArray
#define TYDIRPREFERENCEMANAGER
std::vector< LPTYSourcePonctuelleGeoNode > TYTabSourcePonctuelleGeoNode
Collection de noeuds geometriques de type TYSourcePonctuelle.
double _y
y coordinate of OCoord3D
double _z
z coordinate of OCoord3D
double _x
x coordinate of OCoord3D
virtual const char * getClassName() const
static OPrototype * safeDownCast(OPrototype *pObject)
bool isA(const char *className) const
3D frame with a point and 3 vectors.
OPoint3D _origin
The origin point.
OMatrix asMatrix() const
return the transformation matrix from unity to this pose such as this = transform * unity
Class to define a segment.
OSpectreAbstract & sum(const OSpectreAbstract &spectre) const
Arithmetic sum of two spectrums in one-third Octave.
OSpectreAbstract & toGPhy() const
Converts to physical quantity.
void setType(TYSpectreType type)
Set the spectrum type.
double sigma()
Sum the values of the spectrum.
OSpectreAbstract & toDB() const
Converts to dB.
static OSpectre getEmptyLinSpectre(const double &valInit=1.0E-20)
Create a physical quantity spectrum.
double norme() const
Computes the length of this vector.
void normalize()
Normalizes this vector.
T * _pObj
The real pointer, must derived IRefCount.
virtual double surface() const
virtual TYTabSourcePonctuelleGeoNode getSrcs() const
void setDiameter(double diameter)
TYPoint getCenter() const
virtual void distriSrcs()
virtual DOM_Element toXML(DOM_Element &domElement)
virtual TYTabPoint getContour(int n=-1) const
double getDiameter() const
virtual bool deepCopy(const TYElement *pOther, bool copyId=true, bool pUseCopyTag=false)
virtual TYTabPoint sommets() const
void updateSurfEnveloppe()
bool operator==(const TYAcousticCylinder &other) const
Operateur ==.
virtual void getChilds(LPTYElementArray &childs, bool recursif=true)
TYTabLPAcousticSurface getSubFace()
virtual bool deepCopy(const TYElement *pOther, bool copyId=true, bool pUseCopyTag=false)
virtual int isInside(const TYPoint &pt) const
virtual std::string toString() const
virtual void remAllSrcs()
LPTYAcousticCircle _pCircBottom
Surface de dessous.
bool operator!=(const TYAcousticCylinder &other) const
Operateur !=.
virtual void distriSrcs()
virtual void setDensiteSrcsV(double densite, bool recursif=true)
virtual TYPoint getCenter() const
virtual double surface() const
virtual bool remRegime(int regime)
virtual void setCurRegime(int regime)
virtual TYTabVector normals() const
virtual void setIsRayonnant(bool rayonnant=true, bool recursif=true)
virtual int intersects(const OSegment3D &seg, TYTabPoint &ptList) const
virtual TYSourcePonctuelle srcPonctEquiv() const
void setHauteur(double hauteur)
virtual TYPoint centreGravite() const
virtual int fromXML(DOM_Element domElement)
virtual void setDensiteSrcsH(double densite, bool recursif=true)
virtual void setRegime(TYSpectre &Spectre, int regime=-1, bool recursif=false)
virtual void exportCSV(std::ofstream &ofs)
Export au format csv sur un flux transmis.
LPTYAcousticSurface _pEnveloppe
Enveloppe.
virtual void propagateAtt(LPTYAttenuateur pAtt)
virtual TYTabLPPolygon faces() const
void setDiameter(double diameter)
virtual void loadRegime(int regimeNb=-1)
virtual void setNextRegimeNb(const int &next)
virtual ~TYAcousticCylinder()
virtual TYTabRectangle getEnveloppe(int n=-1) const
virtual double volume() const
virtual double activeSurface() const
bool updateAcoustic(const bool &force=false)
double getDiameter() const
virtual DOM_Element toXML(DOM_Element &domElement)
virtual bool findAcousticSurface(const TYAcousticSurface *pAccSurf, OMatrix *pMatrix=0)
virtual void setRegimeName(const QString &name)
virtual TYTabAcousticSurfaceGeoNode acousticFaces()
LPTYAcousticCircle _pCircTop
Surface de dessus.
double getHauteur() const
virtual TYBox volEnglob() const
TYAcousticCylinder & operator=(const TYAcousticCylinder &other)
Operateur =.
virtual TYTabSourcePonctuelleGeoNode getSrcs() const
double _densiteSrcsV
Densite verticale de sources.
double getDensiteSrcsH() const
virtual void setDensiteSrcsH(double densite, bool recursif=true)
virtual void setNextRegimeNb(const int &next)
TYRegime & getRegimeNb(const int &nb, bool &status)
size_t getNbRegimes() const
double getDensiteSrcsV() const
int _typeDistribution
Indique le type de distribution a utiliser. pour l'etat courant.
double _offsetSources
Offset de decalage des sources ponctuelles sur les surfaces.
virtual void loadRegime(int regimeNb=-1)
TYSpectre & getCurrentSpectre()
virtual int addRegime(const TYRegime ®ime)
virtual void setDensiteSrcsV(double densite, bool recursif=true)
virtual void exportCSV(std::ofstream &ofs)
Export au format csv sur un flux transmis.
virtual void setRegime(TYSpectre &Spectre, int regime=-1, bool recursif=false)
virtual void setCurRegime(int regimeNumber)
int _nextRegime
Numero d'ordre du regime suivant.
double _densiteSrcsH
Densite horizontale de sources.
virtual bool remRegime(int regime)
virtual void setRegimeName(const QString &name)
bool _isRayonnant
Etat courant de l'element (rayonnant ou non rayonnant)
virtual void setDensiteSrcsV(double densite, bool recursif=true)
virtual void remAllSrcs()
virtual void setCurRegime(int regime)
virtual double surface() const
virtual bool deepCopy(const TYElement *pOther, bool copyId=true, bool pUseCopyTag=false)
virtual void propagateAtt(LPTYAttenuateur pAtt)
virtual TYTabSourcePonctuelleGeoNode getSrcs() const
virtual void exportCSV(std::ofstream &ofs)
Export au format csv sur un flux transmis.
TYSpectre setGlobalLW(const TYSpectre &spectre, const double &surfGlobale, const int ®ime=-1)
LPTYSourceSurfacic getSrcSurf()
virtual void setDensiteSrcsH(double densite, bool recursif=true)
TYRectangle * getBoundingRect()
virtual DOM_Element toXML(DOM_Element &domElement)
TYAcousticVolume & operator=(const TYAcousticVolume &other)
Operateur =.
virtual DOM_Element toXML(DOM_Element &domElement)
virtual int fromXML(DOM_Element domElement)
virtual bool deepCopy(const TYElement *pOther, bool copyId=true, bool pUseCopyTag=false)
virtual void propagateAtt(LPTYAttenuateur pAtt)
virtual void setIsAcousticModified(bool isModified)
virtual void setIsRayonnant(bool rayonnant=true, bool recursif=true)
int isInside(const TYPoint &pt) const
virtual void setColor(const OColor &color)
TYElement * getParent() const
virtual bool isInCurrentCalcul()
QString _name
Nom courant de l'element.
bool callFromXMLIfEqual(DOM_Element &domElement, int *pRetVal=NULL)
virtual QString getName() const
TYElement * _pParent
Reference sur l'element parent.
virtual void setInCurrentCalcul(bool state, bool recurschild=true, bool recursparent=true)
virtual void getChilds(LPTYElementArray &childs, bool recursif=true)
void setParent(TYElement *pParent)
virtual void setIsGeometryModified(bool isModified)
QString generateName(const char *classname)
Retourne le nom de la classe associe a un nombre.
static TYNameManager * get()
Retourne l'instance singleton.
ORepere3D getORepere3D() const
void setDimension(float lon, float haut)
TYPolygon * toPolygon() const
virtual OVector3D normal() const
virtual bool deepCopy(const TYElement *pOther, bool copyId=true, bool pUseCopyTag=false)
void setDirectivity(TYDirectivity *directivity_)
: Get/Set directivity to source
void setTypeRaynt(TYTypeRaynt type)
double getDensiteSrcsH() const
bool addSrc(LPTYSourcePonctuelle pSrcPonct)
double getDensiteSrcsV() const
virtual int intersects(const OSegment3D &seg, TYTabPoint &ptList) const
virtual TYBox volEnglob() const
void calculRayonSphere(const TYBox &volEnglob)
virtual void calculCentreGravite()