96 lines
3 KiB
C
96 lines
3 KiB
C
/*
|
|
* JoeyLib 3D
|
|
* Copyright (C) 2019 Scott Duensing <scott@kangaroopunch.com>
|
|
*
|
|
* This software is provided 'as-is', without any express or implied
|
|
* warranty. In no event will the authors be held liable for any damages
|
|
* arising from the use of this software.
|
|
*
|
|
* Permission is granted to anyone to use this software for any purpose,
|
|
* including commercial applications, and to alter it and redistribute it
|
|
* freely, subject to the following restrictions:
|
|
*
|
|
* 1. The origin of this software must not be misrepresented; you must not
|
|
* claim that you wrote the original software. If you use this software
|
|
* in a product, an acknowledgment in the product documentation would be
|
|
* appreciated but is not required.
|
|
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
* misrepresented as being the original software.
|
|
* 3. This notice may not be removed or altered from any source distribution.
|
|
*/
|
|
|
|
|
|
#include <stdio.h>
|
|
#include <math.h>
|
|
|
|
|
|
#define J3D_M_PI 3.1415926
|
|
|
|
|
|
int main(void) {
|
|
int pass;
|
|
int count;
|
|
int euler;
|
|
float radian;
|
|
FILE *out;
|
|
|
|
out = fopen("j3dtbls.h", "wt");
|
|
if (!out) {
|
|
printf("Unable to create output file!\n");
|
|
return 1;
|
|
}
|
|
|
|
fprintf(out, \
|
|
"/*\n"
|
|
" * JoeyLib 3D\n"
|
|
" * Copyright (C) 2019 Scott Duensing <scott@kangaroopunch.com>\n"
|
|
" *\n"
|
|
" * This software is provided 'as-is', without any express or implied\n"
|
|
" * warranty. In no event will the authors be held liable for any damages\n"
|
|
" * arising from the use of this software.\n"
|
|
" *\n"
|
|
" * Permission is granted to anyone to use this software for any purpose,\n"
|
|
" * including commercial applications, and to alter it and redistribute it\n"
|
|
" * freely, subject to the following restrictions:\n"
|
|
" *\n"
|
|
" * 1. The origin of this software must not be misrepresented; you must not\n"
|
|
" * claim that you wrote the original software. If you use this software\n"
|
|
" * in a product, an acknowledgment in the product documentation would be\n"
|
|
" * appreciated but is not required.\n"
|
|
" * 2. Altered source versions must be plainly marked as such, and must not be\n"
|
|
" * misrepresented as being the original software.\n"
|
|
" * 3. This notice may not be removed or altered from any source distribution.\n"
|
|
"*/\n\n\n"
|
|
"#ifndef H_J3DTBLS_\n"
|
|
"#define H_J3DTBLS_\n\n"
|
|
"#include \"j3d.h\"\n\n"
|
|
"static jreal sinTable[] = {\n\t"
|
|
);
|
|
|
|
// Build look-up tables for speed later
|
|
for (pass=0; pass<2; pass++) {
|
|
count = 0;
|
|
for (euler=0; euler<361; euler++) {
|
|
radian = ((float)J3D_M_PI * (float)euler / (float)180);
|
|
if (euler != 0) {
|
|
fprintf(out, ", ");
|
|
}
|
|
if (count > 5) {
|
|
count = 0;
|
|
fprintf(out, "\n\t");
|
|
}
|
|
fprintf(out, "%10.7f", pass == 0 ? sin((double)radian) : cos((double)radian));
|
|
count++;
|
|
}
|
|
fprintf(out, "\n};\n\n");
|
|
if (pass == 0) {
|
|
fprintf(out, "static jreal cosTable[] = {\n\t");
|
|
}
|
|
}
|
|
|
|
fprintf(out, "\n#endif // H_J3DTBLS_\n");
|
|
|
|
fclose(out);
|
|
|
|
return 0;
|
|
}
|