ENDIF()
ENDIF()
+# Check for sinf/cosf/sqrtf
+# CHECK_FUNCTION_EXISTS doesn't work because check requires <math.h>
+#CHECK_FUNCTION_EXISTS(sinf HAVE_SINF)
+#CHECK_FUNCTION_EXISTS(cosf HAVE_COSF)
+#CHECK_FUNCTION_EXISTS(sqrtf HAVE_SQRTF)
+INCLUDE(CheckCSourceCompiles)
+CHECK_C_SOURCE_COMPILES("
+ #include <math.h>
+ int main(){sinf(0); return 0;}
+ " HAVE_SINF
+)
+CHECK_C_SOURCE_COMPILES("
+ #include <math.h>
+ int main(){cosf(0); return 0;}
+ " HAVE_COSF
+)
+CHECK_C_SOURCE_COMPILES("
+ #include <math.h>
+ int main(){sqrtf(0); return 0;}
+ " HAVE_SQRTF
+)
# The generated config.h is placed in the project's build directory, just to
# ensure that all CMake-generated files are kept away from the main source tree.
#cmakedefine HAVE_GETTIMEOFDAY
#cmakedefine HAVE_VFPRINTF
#cmakedefine HAVE_DOPRNT
+#cmakedefine HAVE_SINF
+#cmakedefine HAVE_COSF
+#cmakedefine HAVE_SQRTF
#cmakedefine NEED_XPARSEGEOMETRY_IMPL
#cmakedefine HAVE_STDINT_H
#cmakedefine HAVE_INTTYPES_H
* Need more types of polyhedra? See CPolyhedron in MRPT
*/
+/* VC++6 in C mode doesn't have C99's sinf/cos/sqrtf */
+#ifndef HAVE_SINF
+#define sinf(x) (float)sin((double)(x))
+#endif
+#ifndef HAVE_COSF
+#define cosf(x) (float)cos((double)(x))
+#endif
+#ifndef HAVE_SQRTF
+#define sqrtf(x) (float)sqrt((double)(x))
+#endif
/* General functions for drawing geometry
* Solids are drawn by glDrawArrays if composed of triangles, or by
for (i=1; i<size; i++)
{
-#ifdef __cplusplus
(*sint)[i] = sinf(angle*i);
(*cost)[i] = cosf(angle*i);
-#else
- (*sint)[i] = (float)sin((double)(angle*i));
- (*cost)[i] = (float)cos((double)(angle*i));
-#endif /* __cplusplus */
}
const GLfloat rStep = (GLfloat)base / ( ( stacks > 0 ) ? stacks : 1 );
/* Scaling factors for vertex normals */
-#ifdef __cplusplus
const GLfloat cosn = ( (GLfloat)height / sqrtf( height * height + base * base ));
const GLfloat sinn = ( (GLfloat)base / sqrtf( height * height + base * base ));
-#else
- const GLfloat cosn = ( (GLfloat)height / (GLfloat)sqrt( (double)(height * height + base * base) ));
- const GLfloat sinn = ( (GLfloat)base / (GLfloat)sqrt( (double)(height * height + base * base) ));
-#endif /* __cplusplus */