mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-12 09:06:55 -04:00
Use Math_CosF/SinF in all cases
This commit is contained in:
parent
6be13e0951
commit
483c7b6b07
@ -761,9 +761,6 @@
|
||||
<ClCompile Include="Queue.c">
|
||||
<Filter>Source Files\Utils</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Window_Terminal.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Platform_MacClassic.c">
|
||||
<Filter>Source Files\Platform</Filter>
|
||||
</ClCompile>
|
||||
@ -776,6 +773,9 @@
|
||||
<ClCompile Include="Platform_BeOS.cpp">
|
||||
<Filter>Source Files\Platform</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Window_Terminal.c">
|
||||
<Filter>Source Files\Window</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="..\misc\windows\CCicon.rc">
|
||||
|
@ -42,9 +42,6 @@ float sqrtf(float x) {
|
||||
float Math_Mod1(float x) { return x - (int)x; /* fmodf(x, 1); */ }
|
||||
int Math_AbsI(int x) { return abs(x); /* MSVC intrinsic */ }
|
||||
|
||||
float Math_SinF(float x) { return (float)Math_Sin(x); }
|
||||
float Math_CosF(float x) { return (float)Math_Cos(x); }
|
||||
|
||||
int Math_Floor(float value) {
|
||||
int valueI = (int)value;
|
||||
return valueI > value ? valueI - 1 : valueI;
|
||||
@ -156,8 +153,8 @@ float Random_Float(RNGState* seed) {
|
||||
/* TODO: Properly investigate this issue */
|
||||
/* double make_dreamcast_build_compile(void) { fabs(4); } */
|
||||
|
||||
double Math_Sin(double x) { return sinf(x); }
|
||||
double Math_Cos(double x) { return cosf(x); }
|
||||
float Math_SinF(float x) { return sinf(x); }
|
||||
float Math_CosF(float x) { return cosf(x); }
|
||||
double Math_Exp2(double x) { return exp2(x); }
|
||||
double Math_Log2(double x) { return log2(x); }
|
||||
#else
|
||||
@ -270,11 +267,11 @@ static double SinStage3(double x) {
|
||||
* Associated math function: sin(x)
|
||||
* Allowed input range: anything
|
||||
*/
|
||||
double Math_Sin(double x) {
|
||||
float Math_SinF(float x) {
|
||||
double x_div_pi;
|
||||
|
||||
x_div_pi = x * DIV_2_PI;
|
||||
return SinStage3(x_div_pi - Floord(x_div_pi));
|
||||
return (float)SinStage3(x_div_pi - Floord(x_div_pi));
|
||||
}
|
||||
|
||||
/************
|
||||
@ -287,11 +284,11 @@ double Math_Sin(double x) {
|
||||
* Associated math function: cos(x)
|
||||
* Allowed input range: anything
|
||||
*/
|
||||
double Math_Cos(double x) {
|
||||
float Math_CosF(float x) {
|
||||
double x_div_pi_shifted;
|
||||
|
||||
x_div_pi_shifted = x * DIV_2_PI + 0.25;
|
||||
return SinStage3(x_div_pi_shifted - Floord(x_div_pi_shifted));
|
||||
return (float)SinStage3(x_div_pi_shifted - Floord(x_div_pi_shifted));
|
||||
}
|
||||
|
||||
/************
|
||||
|
@ -27,10 +27,8 @@ float Math_SqrtF(float x);
|
||||
float Math_Mod1(float x);
|
||||
int Math_AbsI(int x);
|
||||
|
||||
CC_API double Math_Sin(double x);
|
||||
CC_API double Math_Cos(double x);
|
||||
float Math_SinF(float x);
|
||||
float Math_CosF(float x);
|
||||
CC_API float Math_SinF(float x);
|
||||
CC_API float Math_CosF(float x);
|
||||
/* Computes atan2(y, x), intended primarily for angle calculation*/
|
||||
/* Note that accuracy is only up to around 4 decimal places */
|
||||
float Math_Atan2f(float x, float y);
|
||||
|
@ -62,13 +62,13 @@ static void InitPalette(PackedCol* palette, float shaded, PackedCol ambientColor
|
||||
else {
|
||||
curLerp = lampLevel / (float)(FANCY_LIGHTING_LEVELS - 1);
|
||||
curLerp *= (MATH_PI / 2);
|
||||
curLerp = Math_Cos(curLerp);
|
||||
curLerp = Math_CosF(curLerp);
|
||||
lampColor = PackedCol_Lerp(0, Env.LampLightCol, 1 - curLerp);
|
||||
}
|
||||
|
||||
curLerp = lavaLevel / (float)(FANCY_LIGHTING_LEVELS - 1);
|
||||
curLerp *= (MATH_PI / 2);
|
||||
curLerp = Math_Cos(curLerp);
|
||||
curLerp = Math_CosF(curLerp);
|
||||
|
||||
lavaColor = PackedCol_Lerp(0, Env.LavaLightCol, 1 - curLerp);
|
||||
|
||||
|
23
src/Model.c
23
src/Model.c
@ -139,8 +139,8 @@ void Model_SetupState(struct Model* model, struct Entity* e) {
|
||||
Models.Cols[5] = Models.Cols[4];
|
||||
yawDelta = e->Yaw - e->RotY;
|
||||
|
||||
Models.cosHead = (float)Math_Cos(yawDelta * MATH_DEG2RAD);
|
||||
Models.sinHead = (float)Math_Sin(yawDelta * MATH_DEG2RAD);
|
||||
Models.cosHead = Math_CosF(yawDelta * MATH_DEG2RAD);
|
||||
Models.sinHead = Math_SinF(yawDelta * MATH_DEG2RAD);
|
||||
Models.Active = model;
|
||||
}
|
||||
|
||||
@ -233,9 +233,9 @@ void Model_DrawRotate(float angleX, float angleY, float angleZ, struct ModelPart
|
||||
struct ModelVertex* src = &model->vertices[part->offset];
|
||||
struct VertexTextured* dst = &Models.Vertices[model->index];
|
||||
|
||||
float cosX = (float)Math_Cos(-angleX), sinX = (float)Math_Sin(-angleX);
|
||||
float cosY = (float)Math_Cos(-angleY), sinY = (float)Math_Sin(-angleY);
|
||||
float cosZ = (float)Math_Cos(-angleZ), sinZ = (float)Math_Sin(-angleZ);
|
||||
float cosX = Math_CosF(-angleX), sinX = Math_SinF(-angleX);
|
||||
float cosY = Math_CosF(-angleY), sinY = Math_SinF(-angleY);
|
||||
float cosZ = Math_CosF(-angleZ), sinZ = Math_SinF(-angleZ);
|
||||
float t, x = part->rotX, y = part->rotY, z = part->rotZ;
|
||||
|
||||
struct ModelVertex v;
|
||||
@ -1938,9 +1938,9 @@ static void SpiderModel_Draw(struct Entity* e) {
|
||||
Model_DrawPart(&spider_link);
|
||||
Model_DrawPart(&spider_end);
|
||||
|
||||
rotX = (float)Math_Sin(e->Anim.WalkTime) * e->Anim.Swing * MATH_PI;
|
||||
rotZ = (float)Math_Cos(e->Anim.WalkTime * 2) * e->Anim.Swing * MATH_PI / 16.0f;
|
||||
rotY = (float)Math_Sin(e->Anim.WalkTime * 2) * e->Anim.Swing * MATH_PI / 32.0f;
|
||||
rotX = Math_SinF(e->Anim.WalkTime) * e->Anim.Swing * MATH_PI;
|
||||
rotZ = Math_CosF(e->Anim.WalkTime * 2) * e->Anim.Swing * MATH_PI / 16.0f;
|
||||
rotY = Math_SinF(e->Anim.WalkTime * 2) * e->Anim.Swing * MATH_PI / 32.0f;
|
||||
Models.Rotation = ROTATE_ORDER_XZY;
|
||||
|
||||
Model_DrawRotate(rotX, quarterPi + rotY, eighthPi + rotZ, &spider_leftLeg, false);
|
||||
@ -2312,12 +2312,11 @@ static void DrawBlockTransform(struct Entity* e, float dispX, float dispY, float
|
||||
}
|
||||
|
||||
static void HoldModel_Draw(struct Entity* e) {
|
||||
static float handBob;
|
||||
static float handIdle;
|
||||
|
||||
float handBob;
|
||||
float handIdle;
|
||||
RecalcProperties(e);
|
||||
|
||||
handBob = (float)Math_Sin(e->Anim.WalkTime * 2.0f) * e->Anim.Swing * MATH_PI / 16.0f;
|
||||
handBob = Math_SinF(e->Anim.WalkTime * 2.0f) * e->Anim.Swing * MATH_PI / 16.0f;
|
||||
handIdle = e->Anim.RightArmX * (1.0f - e->Anim.Swing);
|
||||
|
||||
e->Anim.RightArmX = 0.5f + handBob + handIdle;
|
||||
|
@ -37,26 +37,26 @@ void Vec3_TransformY(Vec3* result, float y, const struct Matrix* mat) {
|
||||
}
|
||||
|
||||
Vec3 Vec3_RotateX(Vec3 v, float angle) {
|
||||
float cosA = (float)Math_Cos(angle);
|
||||
float sinA = (float)Math_Sin(angle);
|
||||
float cosA = Math_CosF(angle);
|
||||
float sinA = Math_SinF(angle);
|
||||
return Vec3_Create3(v.x, cosA * v.y + sinA * v.z, -sinA * v.y + cosA * v.z);
|
||||
}
|
||||
|
||||
Vec3 Vec3_RotateY(Vec3 v, float angle) {
|
||||
float cosA = (float)Math_Cos(angle);
|
||||
float sinA = (float)Math_Sin(angle);
|
||||
float cosA = Math_CosF(angle);
|
||||
float sinA = Math_SinF(angle);
|
||||
return Vec3_Create3(cosA * v.x - sinA * v.z, v.y, sinA * v.x + cosA * v.z);
|
||||
}
|
||||
|
||||
Vec3 Vec3_RotateY3(float x, float y, float z, float angle) {
|
||||
float cosA = (float)Math_Cos(angle);
|
||||
float sinA = (float)Math_Sin(angle);
|
||||
float cosA = Math_CosF(angle);
|
||||
float sinA = Math_SinF(angle);
|
||||
return Vec3_Create3(cosA * x - sinA * z, y, sinA * x + cosA * z);
|
||||
}
|
||||
|
||||
Vec3 Vec3_RotateZ(Vec3 v, float angle) {
|
||||
float cosA = (float)Math_Cos(angle);
|
||||
float sinA = (float)Math_Sin(angle);
|
||||
float cosA = Math_CosF(angle);
|
||||
float sinA = Math_SinF(angle);
|
||||
return Vec3_Create3(cosA * v.x + sinA * v.y, -sinA * v.x + cosA * v.y, v.z);
|
||||
}
|
||||
|
||||
@ -96,8 +96,8 @@ const struct Matrix Matrix_Identity = Matrix_IdentityValue;
|
||||
/* Transposed, source https://open.gl/transformations */
|
||||
|
||||
void Matrix_RotateX(struct Matrix* result, float angle) {
|
||||
float cosA = (float)Math_Cos(angle);
|
||||
float sinA = (float)Math_Sin(angle);
|
||||
float cosA = Math_CosF(angle);
|
||||
float sinA = Math_SinF(angle);
|
||||
*result = Matrix_Identity;
|
||||
|
||||
result->row2.y = cosA; result->row2.z = sinA;
|
||||
@ -105,8 +105,8 @@ void Matrix_RotateX(struct Matrix* result, float angle) {
|
||||
}
|
||||
|
||||
void Matrix_RotateY(struct Matrix* result, float angle) {
|
||||
float cosA = (float)Math_Cos(angle);
|
||||
float sinA = (float)Math_Sin(angle);
|
||||
float cosA = Math_CosF(angle);
|
||||
float sinA = Math_SinF(angle);
|
||||
*result = Matrix_Identity;
|
||||
|
||||
result->row1.x = cosA; result->row1.z = -sinA;
|
||||
@ -114,8 +114,8 @@ void Matrix_RotateY(struct Matrix* result, float angle) {
|
||||
}
|
||||
|
||||
void Matrix_RotateZ(struct Matrix* result, float angle) {
|
||||
float cosA = (float)Math_Cos(angle);
|
||||
float sinA = (float)Math_Sin(angle);
|
||||
float cosA = Math_CosF(angle);
|
||||
float sinA = Math_SinF(angle);
|
||||
*result = Matrix_Identity;
|
||||
|
||||
result->row1.x = cosA; result->row1.y = sinA;
|
||||
|
20
src/Vorbis.c
20
src/Vorbis.c
@ -1079,15 +1079,15 @@ void imdct_init(struct imdct_state* state, int n) {
|
||||
/* setup twiddle factors */
|
||||
for (k = 0, k2 = 0; k < n4; k++, k2 += 2)
|
||||
{
|
||||
A[k2] = (float)Math_Cos((4*k * PI) / n);
|
||||
A[k2+1] = -(float)Math_Sin((4*k * PI) / n);
|
||||
B[k2] = (float)Math_Cos(((k2+1) * PI) / (2*n));
|
||||
B[k2+1] = (float)Math_Sin(((k2+1) * PI) / (2*n));
|
||||
A[k2] = Math_CosF((4*k * PI) / n);
|
||||
A[k2+1] = -Math_SinF((4*k * PI) / n);
|
||||
B[k2] = Math_CosF(((k2+1) * PI) / (2*n));
|
||||
B[k2+1] = Math_SinF(((k2+1) * PI) / (2*n));
|
||||
}
|
||||
for (k = 0, k2 = 0; k < n8; k++, k2 += 2)
|
||||
{
|
||||
C[k2] = (float)Math_Cos(((k2+1) * (2*PI)) / n);
|
||||
C[k2+1] = -(float)Math_Sin(((k2+1) * (2*PI)) / n);
|
||||
C[k2] = Math_CosF(((k2+1) * (2*PI)) / n);
|
||||
C[k2+1] = -Math_SinF(((k2+1) * (2*PI)) / n);
|
||||
}
|
||||
|
||||
for (k = 0; k < n8; k++)
|
||||
@ -1219,13 +1219,13 @@ static void Vorbis_CalcWindow(struct VorbisWindow* window, int blockSize) {
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
inner = Math_Sin((i + 0.5) / n * (PI/2));
|
||||
cur_window[i] = Math_Sin((PI/2) * inner * inner);
|
||||
inner = Math_SinF((i + 0.5f) / n * (PI/2));
|
||||
cur_window[i] = Math_SinF((PI/2) * inner * inner);
|
||||
}
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
inner = Math_Sin((i + 0.5) / n * (PI/2) + (PI/2));
|
||||
prev_window[i] = Math_Sin((PI/2) * inner * inner);
|
||||
inner = Math_SinF((i + 0.5f) / n * (PI/2) + (PI/2));
|
||||
prev_window[i] = Math_SinF((PI/2) * inner * inner);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2760,7 +2760,7 @@ static void ThumbstickWidget_BuildMesh(void* widget, struct VertexTextured** ver
|
||||
|
||||
static int ThumbstickWidget_CalcDirs(struct ThumbstickWidget* w) {
|
||||
int i, dx, dy, dirs = 0;
|
||||
double angle;
|
||||
float angle;
|
||||
|
||||
for (i = 0; i < INPUT_MAX_POINTERS; i++) {
|
||||
if (!(w->active & (1 << i))) continue;
|
||||
|
Loading…
x
Reference in New Issue
Block a user