19 #ifndef PERSPECTIVE_DEF_H 20 #define PERSPECTIVE_DEF_H 28 #include <type_traits> 33 #endif // PSYS_CXX_ICC 36 #define PI 3.141592653589793238462643 39 #ifndef PIi // (1. / PI) 40 #define PIi 0.3183098861837907 43 #ifndef RAD // (180. / PI) : 360/RAD = PI2 44 #define RAD 57.29577951308232 47 #ifndef DTOR // (1. / RAD) : 360*DTOR = PI2 48 #define DTOR 0.017453292519943295 51 #define DEG_RAD(x) (x*DTOR) 52 #define RAD_DEG(x) (x*RAD) 54 #ifndef pfloat // Type pour les nombres flottants 56 #if !defined(TYPE_PFLOAT_DOUBLE) && !defined(TYPE_PFLOAT_FLOAT) 57 #define TYPE_PFLOAT_DOUBLE 59 #endif // TYPE_PFLOAT_DOUBLE || TYPE_PFLOAT_FLOAT 61 #ifdef TYPE_PFLOAT_DOUBLE 64 #define EPSILON_FIXE 0.0001 65 #endif // EPSILON_FIXE 66 #ifndef EPSILON_FIXE_LARGE 67 #define EPSILON_FIXE_LARGE 0.001 68 #endif // EPSILON_FIXE_LARGE 76 #define RCUBIQUE(X) (pow(X, 1.0/3.0)) 115 #define PFLOAT_MAX DBL_MAX 118 #define PFLOAT_MIN -DBL_MAX 121 #ifdef TYPE_PFLOAT_FLOAT 124 #define EPSILON_FIXE 0.001 125 #endif // EPSILON_FIXE 126 #ifndef EPSILON_FIXE_LARGE 127 #define EPSILON_FIXE_LARGE 0.005 128 #endif // EPSILON_FIXE_LARGE 130 #define MODULOF fmodf 133 #define RCARREF sqrtf 136 #define RCUBIQUE(X) (powf(X, 1.0f/3.0f)) 139 #define HYPOTF hypotf 142 #define POSITIFD fabsf 166 #define ATAN2F atan2f 169 #define FLOORF floorf 175 #define PFLOAT_MAX FLT_MAX 178 #define PFLOAT_MIN -FLT_MAX 181 #error "Impossible de définir un type pour les nombres flottants !" 182 #endif // TYPE_PFLOAT_FLOAT 183 #endif // TYPE_PFLOAT_DOUBLE 186 #define pfloatc const pfloat 197 #define POW2(X) ((X)*(X)) 200 #ifdef PSYS_WIN_MSVC // Compatibilitée MSVC 202 static const unsigned long __nan[2] = {0xffffffff, 0x7fffffff};
203 #define NAN (*(const float *) __nan) 205 #endif // PSYS_WIN_MSVC 211 #if defined(PSYS_CXX_ICC) 212 #define PISNAN(x) (isnan(x)) 213 #elif defined(PSYS_CXX_MSVC) 214 #define PISNAN(x) (_isnan(x)) 216 #define PISNAN(x) (std::isnan(x)) 217 #endif // PSYS_CXX_ICC 219 #define PISNAN(x) (x!=x) 223 #if defined(PSYS_CXX_ICC) 224 #define PISINF(x) isinf(x) 225 #elif defined(PSYS_CXX_MSVC) 226 #define PISINF(x) (!_finite(x)) 229 #define PISINF(x) std::isinf(x) 230 #endif // PSYS_CXX_ICC 232 #define PISINF(x) (fabs(x) > PFLOAT_MAX) 235 #define FPU_ERROR(x) (PISINF(x) || PISNAN(x)) 237 #define IDNUL pint(-1) 238 #define IDERR pint(INT32_MAX) // 2147483647 241 #define COORDNUL PFLOAT_MIN 242 #define COORDNULP PFLOAT_MAX 244 #define VUE_EXTRUSION Perspective3D::vues2D_t::VUEHAUT 245 #define VUE_REVOLUTION Perspective3D::vues2D_t::VUECOTE 248 #define COULEUR_POINTS 125, 180, 220 249 #define COULEUR_POINTS_F 0.488f, 0.703f, 0.859f 251 #define COULEUR_SELECT_POINTS 28, 115, 176 252 #define COULEUR_SELECT_POINTS_F 0.101f, 0.449f, 0.687f 254 #define COULEUR_SELECT_LIGNES 70, 70, 70 255 #define COULEUR_SELECT_LIGNES_F 0.274f, 0.274f, 0.274f 257 #define COULEUR_LIGNES 130, 130, 130 258 #define COULEUR_LIGNES_F 0.508f, 0.508f, 0.508f 263 #define COULEUR_ARRETES 120, 120, 120 264 #define COULEUR_ARRETES_F 0.469f, 0.469f, 0.469f 266 #define COULEUR_REP_SURFACES 130, 40, 200 267 #define COULEUR_REP_SURFACES_F 0.508f, 0.156f, 0.781f 272 namespace TolerancesP3D
307 static void *
operator new(std::size_t taille);
308 static void *
operator new[](std::size_t taille);
309 static void operator delete(
void *p);
310 static void operator delete[](
void *p);
316 #define CompareX(a, b, c) (POSITIFD((a-b)) < c) 321 #define CompareE(a, b) (CompareX(a, b, EPSILON_FIXE)) 324 #define CompareED(a, b) (CompareX(a, b, EPSILON_FIXE_LARGE)) 327 #define CompareN(a, b) (CompareX(a, b, TolerancesP3D::ToleranceCoords)) 331 #define PENUM_DECL_OPS(NOM) \ 332 F_INLINE NOM operator| (NOM c1, NOM c2) { return static_cast<NOM>(static_cast<std::underlying_type<NOM>::type>(c1) | static_cast<std::underlying_type<NOM>::type>(c2)); } \ 333 F_INLINE NOM operator|= (NOM &c1, NOM c2) { c1 = static_cast<NOM>(static_cast<std::underlying_type<NOM>::type>(c1) | static_cast<std::underlying_type<NOM>::type>(c2)); return c1; } \ 334 F_INLINE NOM operator&= (NOM &c1, NOM c2) { c1 = static_cast<NOM>(static_cast<std::underlying_type<NOM>::type>(c1) & static_cast<std::underlying_type<NOM>::type>(c2)); return c1; } \ 335 F_INLINE unsigned int operator& (NOM c1, NOM c2) { return (static_cast<unsigned int>(c1) & static_cast<unsigned int>(c2)); } \ 336 F_INLINE bool operator== (NOM c1, NOM c2) { return (static_cast<std::underlying_type<NOM>::type>(c1) == static_cast<std::underlying_type<NOM>::type>(c2)); } \ 337 F_INLINE NOM operator^ (NOM c1, NOM c2) { return static_cast<NOM>(static_cast<std::underlying_type<NOM>::type>(c1) ^ static_cast<std::underlying_type<NOM>::type>(c2)); } \ 338 F_INLINE NOM operator^= (NOM &c1, NOM c2) { c1 = static_cast<NOM>(static_cast<std::underlying_type<NOM>::type>(c1) ^ static_cast<std::underlying_type<NOM>::type>(c2)); return c1; } 341 #define PENUM_CAST_INT(VAL) static_cast<puint>(VAL) 343 #endif // PERSPECTIVE_DEF_H PSYS_TLS pfloat ToleranceCoords
Espace de nom de l'API 3D.
Definition: perspective_api.h:101
PSYS_TLS pfloat ToleranceCoords_Z
#define DLL_API
Attribut de classe ou méthode exportée par l'API (GCC, Clang ou MSVC). Donc importé côté client...
Definition: perspective_sys.h:524
PSYS_TLS pfloat ToleranceCoords_Y
#define PSYS_TLS
Qualificatif variable locale à un thread (GCC, Clang ou MSVC).
Definition: perspective_sys.h:396
PSYS_TLS pfloat ToleranceCoords_X
double pfloat
Definition: perspective_def.h:62
Definition: perspective_def.h:301
PSYS_TLS pfloat ToleranceCoordsLarge
Détection de la plateforme.
void Init(pfloat t_xyz)
Definition: perspective_def.h:291
PSYS_TLS pfloat EpsilonCoords
PSYS_TLS pfloat EpsilonVecteurs
PSYS_TLS pfloat EpsilonAngles