Library for googly eyes
Revision 2:9dd81fc2623f, committed 2016-04-12
- Comitter:
- electromotivated
- Date:
- Tue Apr 12 02:30:40 2016 +0000
- Parent:
- 1:0791bb5735b4
- Commit message:
- Added new method look_there(theta, dist) allowing finer control of direction and distance to look;
Changed in this revision
Eyes.cpp | Show annotated file Show diff for this revision Revisions of this file |
Eyes.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/Eyes.cpp Tue Dec 15 00:42:09 2015 +0000 +++ b/Eyes.cpp Tue Apr 12 02:30:40 2016 +0000 @@ -25,6 +25,16 @@ } } +void Eyes::look_there(int theta, float dist){ + theta = theta % 361; // Clamp theta to 0 to 360 degrees + if(dist > 1.0) dist = 1.0; // Clamp dist to 1.0 max + if(dist < 0.0) dist = 0.0; // Clamp dist to 0.0 min + + int radius(eye_radius - iris_radius); + eye_direction_offset.x = (int)(dist*radius*cos(theta*3.14/180.0)); + eye_direction_offset.y = (int)(dist*radius*sin(theta*3.14/180.0)); +} + void Eyes::express(EXPRESSION expression){} void Eyes::gesture(GESTURE gesture){ @@ -56,13 +66,16 @@ LGREY); lcd.line(left_eye_center.x - eye_radius, left_eye_center.y, left_eye_center.x + eye_radius, left_eye_center.y, - LGREY); + LGREY); + break; + + case SHAKE: + break; } } void Eyes::draw(){ - /* TODO: Draw over last eye in black to "erase" before drawing - new eye */ + //Draw over last eye in black to "erase" before drawing new eye lcd.filled_circle(right_eye_center.x, right_eye_center.y, eye_radius, BLACK);
--- a/Eyes.h Tue Dec 15 00:42:09 2015 +0000 +++ b/Eyes.h Tue Apr 12 02:30:40 2016 +0000 @@ -21,7 +21,7 @@ enum EXPRESSION{NORMAL, SUPRISED, SCARED, ANGRY}; enum DIRECTION{U = 270, D = 90, L = 0, R = 180, C, UL= 315, UR= 225,DL= 45, DR = 135}; - enum GESTURE{BLINK, CLOSE}; + enum GESTURE{BLINK, CLOSE, SHAKE}; typedef struct{int x; int y;}Coord_t; /* @@ -36,6 +36,16 @@ void look(DIRECTION direction); /* + Change the distance and direction the eyes look. + @param theta The angle to look in degrees + @param dist The normalized distance to look in given theta, i.e + 0 keeps eyes centered and 1 looks fully in given theta + in between values give make eyes look more or less in + theta. + */ + void look_there(int theta, float dist); + + /* Display a gesture. BLINK is random ~100 to ~400ms. For user defined blink duration