mirror of
https://github.com/brl/mutter.git
synced 2024-12-22 19:12:04 +00:00
fixed fixed point clutter_sine_func
This commit is contained in:
parent
9661bd50b8
commit
271e877593
@ -1,3 +1,10 @@
|
|||||||
|
2007-01-30 Tomas Frydrych <tf@openedhand.com>
|
||||||
|
* clutter/clutter-alpha.c:
|
||||||
|
(sincx1024_func):
|
||||||
|
(clutter_sine_func):
|
||||||
|
(clutter_sine_inc_func):
|
||||||
|
fixed the fixed point math.
|
||||||
|
|
||||||
2007-01-30 Emmanuele Bassi <ebassi@openedhand.com>
|
2007-01-30 Emmanuele Bassi <ebassi@openedhand.com>
|
||||||
|
|
||||||
* clutter/clutter-alpha.h:
|
* clutter/clutter-alpha.h:
|
||||||
|
@ -499,7 +499,7 @@ sincx1024_func (ClutterAlpha *alpha,
|
|||||||
ClutterTimeline *timeline;
|
ClutterTimeline *timeline;
|
||||||
gint current_frame_num, n_frames;
|
gint current_frame_num, n_frames;
|
||||||
ClutterAngle x;
|
ClutterAngle x;
|
||||||
ClutterFixed sine;
|
unsigned int sine;
|
||||||
|
|
||||||
timeline = clutter_alpha_get_timeline (alpha);
|
timeline = clutter_alpha_get_timeline (alpha);
|
||||||
|
|
||||||
@ -508,16 +508,13 @@ sincx1024_func (ClutterAlpha *alpha,
|
|||||||
|
|
||||||
x = angle * current_frame_num / n_frames;
|
x = angle * current_frame_num / n_frames;
|
||||||
|
|
||||||
/*
|
x -= (512 * 512 / angle);
|
||||||
* x = x*PI - PI/angle
|
|
||||||
*/
|
|
||||||
x = (x << 9) - (512 / angle);
|
|
||||||
|
|
||||||
sine = (clutter_sini (x) + offset)/2;
|
sine = ((clutter_sini (x) + offset)/2) * CLUTTER_ALPHA_MAX_ALPHA;
|
||||||
|
|
||||||
CLUTTER_NOTE (ALPHA, "sine: %2f\n", CLUTTER_FIXED_TO_DOUBLE (sine));
|
sine = sine >> CFX_Q;
|
||||||
|
|
||||||
return CLUTTER_FIXED_INT (sine * CLUTTER_ALPHA_MAX_ALPHA);
|
return sine;
|
||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
/*
|
/*
|
||||||
@ -548,6 +545,9 @@ sincx_func (ClutterAlpha *alpha,
|
|||||||
return CLUTTER_FIXED_INT (sine * CLUTTER_ALPHA_MAX_ALPHA);
|
return CLUTTER_FIXED_INT (sine * CLUTTER_ALPHA_MAX_ALPHA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* NB: angle is not in radians but in muliples of PI, i.e., 2.0
|
||||||
|
* represents full circle.
|
||||||
|
*/
|
||||||
static guint32
|
static guint32
|
||||||
sinc_func (ClutterAlpha *alpha,
|
sinc_func (ClutterAlpha *alpha,
|
||||||
float angle,
|
float angle,
|
||||||
@ -567,7 +567,7 @@ sinc_func (ClutterAlpha *alpha,
|
|||||||
x = (gdouble) (current_frame_num * angle * M_PI) / n_frames ;
|
x = (gdouble) (current_frame_num * angle * M_PI) / n_frames ;
|
||||||
sine = (sin (x - (M_PI / angle)) + offset) * 0.5f;
|
sine = (sin (x - (M_PI / angle)) + offset) * 0.5f;
|
||||||
|
|
||||||
CLUTTER_NOTE (ALPHA, "sine: %2f\n", sine);
|
CLUTTER_NOTE (ALPHA, "sine: %2f\n",sine);
|
||||||
|
|
||||||
return CLUTTER_FLOAT_TO_INT ((sine * (gdouble) CLUTTER_ALPHA_MAX_ALPHA));
|
return CLUTTER_FLOAT_TO_INT ((sine * (gdouble) CLUTTER_ALPHA_MAX_ALPHA));
|
||||||
}
|
}
|
||||||
@ -590,13 +590,10 @@ clutter_sine_func (ClutterAlpha *alpha,
|
|||||||
gpointer dummy)
|
gpointer dummy)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
return sinc_func (alpha, 2.0, 1.0);
|
return sinc_func (alpha, 2.0, 1.0);
|
||||||
#else
|
#else
|
||||||
/* Conversion to ClutterAngle:
|
/* 2.0 above represents full circle */
|
||||||
*
|
return sincx1024_func (alpha, 1024, CFX_ONE);
|
||||||
* 2.0 rad -> 1024*2.0/(2*PI) = 325.949
|
|
||||||
*/
|
|
||||||
return sincx1024_func (alpha, 326, CFX_ONE);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -619,11 +616,7 @@ clutter_sine_inc_func (ClutterAlpha *alpha,
|
|||||||
#if 0
|
#if 0
|
||||||
return sinc_func (alpha, 0.5, 1.0);
|
return sinc_func (alpha, 0.5, 1.0);
|
||||||
#else
|
#else
|
||||||
/* Conversion to ClutterAngle:
|
return sincx1024_func (alpha, 256, CFX_ONE);
|
||||||
*
|
|
||||||
* 0.5 rad -> 1024*0.5/(2*PI) = 81.487
|
|
||||||
*/
|
|
||||||
return sincx1024_func (alpha, 81, CFX_ONE);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user