33 float r = 255.0f, g = 67.0f, b = 133.0f;
58 TYRectangle(
TYPoint(0, 1, 0.5),
TYPoint(1, 1, 0.5),
TYPoint(1, -1, 0.5),
TYPoint(0, -1, 0.5));
63 TYRectangle(
TYPoint(0, -1, -0.5),
TYPoint(1, -1, -0.5),
TYPoint(1, 1, -0.5),
TYPoint(0, 1, -0.5));
108 if (TYAcousticVolume::operator!=(other))
166 return "TYAcousticSemiCylinder";
185 bool semiCircTopFound =
false;
186 bool semiCircBottomFound =
false;
187 bool enveloppeFound =
false;
191 QDomNodeList childs = domElement.childNodes();
192 for (
unsigned int i = 0; i < childs.length(); i++)
194 elemCur = childs.item(i).toElement();
201 if (!semiCircTopFound)
205 else if (!semiCircBottomFound)
225 for (j = 0; j < nbRegMachine - 1; j++)
231 bool statusFrom =
true;
232 bool statusTo =
true;
238 if (!statusFrom || !statusTo)
243 regimeTo.
deepCopy(®imeFrom,
false);
346 tab.insert(tab.end(), tabTmp.begin(), tabTmp.end());
349 tab.insert(tab.end(), tabTmp.begin(), tabTmp.end());
352 tab.insert(tab.end(), tabTmp.begin(), tabTmp.end());
355 tab.insert(tab.end(), tabTmp.begin(), tabTmp.end());
454 nbSrcs = (nbSrcs == 0) ? 1 : nbSrcs;
456 const double anglePortion =
M_PI / (nbSrcs + 1);
461 int nbCercle = (int)(hauteurCyl / distHauteur);
465 distHauteur = hauteurCyl / 2;
468 const double HResiduel = (hauteurCyl - (distHauteur * nbCercle)) / 2.0;
469 if ((nbCercle > 1) && ((HResiduel < (distHauteur / 2.0))))
475 double base = (hauteurCyl - (nbCercle - 1) * distHauteur) / 2.0;
479 double hauteur = base;
481 const double demiPi =
M_PI / 2.0;
487 double specificSize = sqrt(diag * diag + (diag / 2) * (diag / 2));
490 if (anglePortion > 0.0)
493 for (
int i = 0; i < nbCercle; i++)
496 angle = anglePortion - demiPi;
499 for (
int j = 0; j < nbSrcs; j++)
502 pt.
_x = cos(angle) * rayon;
503 pt.
_y = sin(angle) * rayon;
504 pt.
_z = hauteurOffset + hauteur;
525 angle += anglePortion;
529 hauteur += distHauteur;
629 for (
unsigned int i = 0; i < tabRect.size(); i++)
631 tab.push_back(tabRect[i].normal());
642 tab.reserve(tabRect.size() * 4);
645 for (
unsigned int i = 0; i < tabRect.size(); i++)
648 for (
int j = 0; j < 4; j++)
651 tab.push_back(tabRect[i]._pts[j]);
663 for (
unsigned int i = 0; i < enveloppe.size(); i++)
665 tab.push_back(enveloppe[i].toPolygon());
717 if ((pt.
_x * ptBis.
_x) + (pt.
_y * ptBis.
_y) <= (rayon * rayon))
758 for (
unsigned int i = 0; i < enveloppe.size() - 1; i++)
766 *pEnvElt->
getShape() = enveloppe[i];
831 vecTop = vecTop * (((hauteur / 2.0) / vecTop.
norme()) - 1.0);
835 vecBottom = vecBottom * (((hauteur / 2.0) / vecBottom.
norme()) - 1.0);
838 for (
int i = 0; i < 4; i++)
884 n =
ROUND(n / 2 * 2);
902 for (
int i = 0; i < nbFaces; i++)
904 TYRectangle rect(tabPtTop[(i + 1) % nbFaces], tabPtTop[i], tabPtBottom[nbFaces - i - 1],
905 tabPtBottom[(nbFaces - 1) - ((i + 1) % nbFaces)]);
989 double residu =
ABS(10 * log10(LWg.
sigma()) - 10 * log10(LWc.
sigma()));
992 ret = residu < 1 ? true :
false;
1030 for (
unsigned int i = 0; i < 6; i++)
1034 for (
unsigned int j = 0; j < tabFaces.size(); j++)
1040 tabSubFaces.push_back(pSurface);
1082 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 1/2 cylindre acoustique (fichier header)
TY_EXT_GRAPHIC_INST(TYAcousticSemiCylinder)
TY_EXTENSION_INST(TYAcousticSemiCylinder)
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)
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.
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.
virtual void propagateAtt(LPTYAttenuateur pAtt)
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 DOM_Element toXML(DOM_Element &domElement)
virtual void distriSrcs()
virtual double surface() const
virtual bool deepCopy(const TYElement *pOther, bool copyId=true, bool pUseCopyTag=false)
virtual TYTabSourcePonctuelleGeoNode getSrcs() const
double getDiameter() const
virtual double surface() const
virtual TYTabSourcePonctuelleGeoNode getSrcs() const
virtual DOM_Element toXML(DOM_Element &domElement)
void setDiameter(double diameter)
virtual bool deepCopy(const TYElement *pOther, bool copyId=true, bool pUseCopyTag=false)
virtual void distriSrcs()
virtual TYTabPoint getContour(int n=-1) const
TYPoint getCenter() const
virtual int fromXML(DOM_Element domElement)
virtual double surface() const
virtual TYSourcePonctuelle srcPonctEquiv() const
virtual void setRegime(TYSpectre &Spectre, int regime=-1, bool recursif=false)
double getHauteur() const
TYTabRectangle getEnveloppe(int n=-1) const
virtual void setNextRegimeNb(const int &next)
bool operator!=(const TYAcousticSemiCylinder &other) const
Operateur !=.
virtual TYTabPoint sommets() const
virtual double activeSurface() const
virtual DOM_Element toXML(DOM_Element &domElement)
virtual TYTabAcousticSurfaceGeoNode acousticFaces()
virtual void setCurRegime(int regime)
TYTabLPAcousticSurface getSubFace()
virtual void setRegimeName(const QString &name)
virtual void getChilds(LPTYElementArray &childs, bool recursif=true)
virtual void setDensiteSrcsV(double densite, bool recursif=true)
virtual TYPoint centreGravite() const
virtual bool remRegime(int regime)
virtual int isInside(const TYPoint &pt) const
virtual void setDensiteSrcsH(double densite, bool recursif=true)
virtual TYBox volEnglob() const
virtual int intersects(const OSegment3D &seg, TYTabPoint &ptList) const
virtual void loadRegime(int regimeNb=-1)
bool updateAcoustic(const bool &force=false)
LPTYAcousticRectangle _pAccRect
Surface laterale.
void updateSurfEnveloppe()
virtual TYTabVector normals() const
virtual void distriSrcs()
virtual void remAllSrcs()
LPTYAcousticSemiCircle _pSemiCircBottom
Surface de dessous.
virtual void exportCSV(std::ofstream &ofs)
Export au format csv sur un flux transmis.
void setHauteur(double hauteur)
LPTYAcousticSemiCircle _pSemiCircTop
Surface de dessus.
double getDiameter() const
virtual void propagateAtt(LPTYAttenuateur pAtt)
void setDiameter(double diameter)
virtual double volume() const
TYPoint getCenter() const
TYAcousticSemiCylinder & operator=(const TYAcousticSemiCylinder &other)
Operateur =.
virtual bool deepCopy(const TYElement *pOther, bool copyId=true, bool pUseCopyTag=false)
virtual std::string toString() const
virtual void setIsRayonnant(bool rayonnant=true, bool recursif=true)
virtual bool findAcousticSurface(const TYAcousticSurface *pAccSurf, OMatrix *pMatrix=0)
virtual TYTabLPPolygon faces() const
LPTYAcousticSurface _pEnveloppe
Enveloppe.
virtual TYTabSourcePonctuelleGeoNode getSrcs() const
virtual ~TYAcousticSemiCylinder()
bool operator==(const TYAcousticSemiCylinder &other) const
Operateur ==.
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()
void setSrcSurf(const LPTYSourceSurfacic pSrcSurf)
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 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()