void
change_tape(Actor *actor, AWallpaperPlugin *desktop_plugin)
{
- gint x, y,
- speed[4] = {7, 10, 5, 14},
- i;
+ gint x, y, i;
Actor *a;
- double angle = 0;
+ if (!desktop_plugin->priv->rich_animation) return;
char * accel_filename = "/sys/class/i2c-adapter/i2c-3/3-001d/coord";
//char * accel_filename = "/home/tanya/coord";
}
//fprintf(stderr, "change obj %i %i %i angle rad=%f, deg=%f\n", ax, ay, az, atan2(ax, -ay), atan2(ax, -ay)*180/M_PI);
- angle = atan2(ay, ax);
+ int ang = (int)floor(atan2(ay, ax)*180/M_PI);
+ if (ang < 0) ang = 360+ang;
if (!desktop_plugin->priv->rich_animation) return;
- for (i=0; i<24; i++){
+ for (i=0; i<16; i++){
a = g_ptr_array_index(actor->child, i);
- //x = a->x - cos(angle*M_PI/180)*a->z;
- //y = a->y - sin(angle*M_PI/180)*a->z;
- x = a->x - cos(angle)*a->z;
- y = a->y - sin(angle)*a->z;
- if (x <= -a->width)
- x = 800;
- if (y <= -a->width)
- y = 480;
- if (x > 800+a->width)
+ if (a->scale == 100) a->scale = ang;
+ if (abs(a->scale - ang) > 10){
+ if (a->scale > ang){
+ if ((a->scale - ang) < (ang + (360-a->scale))) a->scale--;
+ else a->scale++;
+ }
+ if (a->scale < ang) {
+ if (ang - a->scale < (a->scale+(360-ang))) a->scale++;
+ else a->scale--;
+ }
+ if (a->scale > 360) a->scale = 0;
+ if (a->scale < 0) a->scale = 360;
+ }
+
+ x = a->x - (float)cos(a->scale*M_PI/180)*a->z;
+ y = a->y - (float)sin(a->scale*M_PI/180)*a->z;
+ //x = round(a->x - (float)cos(a->scale*M_PI/180)*a->z);
+ //y = round(a->y - (float)sin(a->scale*M_PI/180)*a->z);
+ //x = a->x - cos(angle)*a->z;
+ //y = a->y - sin(angle)*a->z;
+ if ((a->scale > 270 || a->scale < 90) && x < -a->width*cos(a->scale*M_PI/180)){
+ x = 800;
+ y = fast_rnd(480);
+ }
+ if ((a->scale > 90 && a->scale < 270) && x > 800 - a->width*cos(a->scale*M_PI/180)){
x = 0;
- if (y > 480+a->width)
+ y = fast_rnd(480);
+ }
+ if (a->scale > 0 && a->scale < 180 && y < -a->width*sin(a->scale*M_PI/180)){
+ y = 480;
+ x = fast_rnd(800);
+ }
+ if (a->scale < 360 && a->scale > 180 && y > 480 - a->width*sin(a->scale*M_PI/180)){
y = 0;
- set_actor_rotation(a, HILDON_AA_Z_AXIS, angle*180/M_PI, 0, 0, 0);
+ x = fast_rnd(800);
+ }
+ //if (i ==0) fprintf(stderr, "x=%d y=%d ang=%d speed=%d\n", x, y, a->scale, a->z);
+ set_actor_rotation(a, HILDON_AA_Z_AXIS, a->scale, 0, 0, 0);
set_actor_position(a, x, y, a->z, desktop_plugin);
a->x = x;
a->y = y;