Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
void setup() {
  size(400, 400);
  noCursor();  //Removed Cursor so that the viewer will be able to see most of the fairy
}

void draw() {

  //Background
  background(0);  //Black background, setting is a cave with barely any light
  rectMode(CORNERS);  //Set rectangles to be created from dimensions from a pair of corners
  ellipseMode(CORNERS);  //Set ellipses to be created from dimensions from a pair of corners of the ellipse bounding box
  noStroke();  //No strokes for most shapes
  frameRate(60);
  

  
//DRAGON***********************************

  //Left Wing
      //Bottom
        fill(222+mouseY/10,198+mouseY/10,170+mouseY/10);                                                 //Goes from a dark beige to a lighter one with mouse Y value
        triangle(160,200-(mouseY/30),0,(260-(mouseY/20))-(mouseY/30),0,(300-(mouseY/40))-(mouseY/33));   //Triangle shifts to expand with mouse X value. Overlaps with MIDDLE
      //Middle
        fill(202+mouseY/10,178+mouseY/10,150+mouseY/10);                                                 //Goes from a dark beige to a lighter one with mouse Y value
        triangle(160,200-(mouseY/33),0,(240-(mouseY/2))-(mouseY/33),0,(280-(mouseY/10))-(mouseY/33));    //Triangle shifts to expand with mouse X value. Overlaps with TOP
      //Top
        fill(182+mouseY/10,158+mouseY/10,130+mouseY/10);                                                 //Goes from a dark beige to a lighter one with mouse Y value
        triangle(160,200-(mouseY/33),0,(220-(mouseY/2))-(mouseY/33),0,(260-(mouseY/5))-(mouseY/33));     //Triangle shifts to expand with mouse X value. Overlaps with ARM
      //Arm
        fill(78+mouseY/10,58+mouseY/10,34+mouseY/10);                                                    //Goes from a dark brown to a lighter one with mouse Y value
        quad(140,(160-(mouseY/10))-(mouseY/33),160,200-(mouseY/33),0,(240-(mouseY/2))-(mouseY/33),0,(220-(mouseY/2))-(mouseY/33));  //Two coordinates of the quad shift faster than the other two relative to mouse X position to simulate rotation

  //Right Wing
      //Bottom
        fill(222+mouseY/10,198+mouseY/10,170+mouseY/10);                                                    //Goes from a dark beige to a lighter one with mouse Y value
        triangle(240,200-(mouseY/30),400,(260-(mouseY/20))-(mouseY/30),400,(300-(mouseY/40))-(mouseY/33));  //Triangle shifts to expand with mouse X value. Overlaps with MIDDLE
      //Middle
        fill(202+mouseY/10,178+mouseY/10,150+mouseY/10);                                                    //Goes from a dark beige to a lighter one with mouse Y value
        triangle(240,200-(mouseY/33),400,(240-(mouseY/2))-(mouseY/33),400,(280-(mouseY/10))-(mouseY/33));   //Triangle shifts to expand with mouse X value. Overlaps with TOP
      //Top
        fill(182+mouseY/10,158+mouseY/10,130+mouseY/10);                                                    //Goes from a dark beige to a lighter one with mouse Y value
        triangle(240,200-(mouseY/33),400,(220-(mouseY/2))-(mouseY/33),400,(260-(mouseY/5))-(mouseY/33));    //Triangle shifts to expand with mouse X value. Overlaps with ARM
      //Arm
        fill(78+mouseY/10,58+mouseY/10,34+mouseY/10);                                                       //Goes from a dark brown to a lighter one with mouse Y value
        quad(260,(160-(mouseY/10))-(mouseY/33),400,(220-(mouseY/2))-(mouseY/33),400,(240-(mouseY/2))-(mouseY/33),240,200-(mouseY/33));  //Two coordinates of the quad shift faster than the other two relative to mouse Y position to simulate rotation
        
/*
All shape coordinates with multiple pairs of brackets are kep seperate to keep
simulated camera movement consistent with other shape changes. In otherwords, although
it would reduce the line length to combine (160+(mouseY/20))+(mouseY/20) into 160+(mouseY/10),
I keep them seperate since the first one would control how the character itself reacts to the 
mouse X value while the second reacts to the simulated camera tilt. I kept them seperate in the 
case that I might have to change one of them later on.
*/

  //Left Leg (the calf of the dragon's leg)
    fill(39+mouseY/10,20+mouseY/10,0+mouseY/10);                           //Goes from a dark brown to a lighter one with mouse Y value
    quad(130,340-(mouseY/33),150,350-(mouseY/33),140,400,130,400);         //Quad shifts to change slightly with mouse Y value 
  //left Thigh
    fill(78+mouseY/10,58+mouseY/10,34+mouseY/10);                          //Goes from a dark brown to a lighter one with mouse Y value
    quad(140+(mouseY/40),(250+(mouseY/30))-(mouseY/33),170+(mouseY/40),(300+(mouseY/30))-(mouseY/33),120+(mouseY/40),(370+(mouseY/30))-(mouseY/33),100,(300+(mouseY/30))-(mouseY/33));  //Quad shifts to change slightly (simulated rotation outwards) with mouse Y value. Overlaps LEFT LEG 


  //Right Leg
      fill(39+mouseY/10,20+mouseY/10,0+mouseY/10);                        //Goes from a dark brown to a lighter one with mouse Y value
      quad(270,340-(mouseY/33),250,350-(mouseY/33),260,400,270,400);      //Quad shifts to change slightly with mouse Y value 
  //Right Thigh
      fill(78+mouseY/10,58+mouseY/10,34+mouseY/10);                       //Goes from a dark brown to a lighter one with mouse Y value
      quad(260-(mouseY/40),(250+(mouseY/30))-(mouseY/33),230-(mouseY/40),(300+(mouseY/30))-(mouseY/33),280-(mouseY/40),(370+(mouseY/30))-(mouseY/33),300,(300+(mouseY/30))-(mouseY/33)); //Quad shifts to change slightly (simulated rotation outwards) with mouse Y value. Overlaps LEFT LEG 

  //Tail
      fill(78,58,34);                                                                              //Goes from a dark brown to a lighter one with mouse X value
      quad(150,(220-(mouseY/10))-(mouseY/33),250,(220-(mouseY/10))-(mouseY/33),220,400,180,400);   //Quad shifts to thin slightly with mouse X value 

  //Body
  //The body of the Dragon. As mouseY value increases, it translates upwards and thins slightly. Its colour becomes lighter as mouseY increases.
      fill(108+mouseY/10,98+mouseY/10,64+mouseY/10);
      quad(200,(30-(mouseY/40))-(mouseY/33),270,(170-(mouseY/40))-(mouseY/33),200,(350-(mouseY/10))-(mouseY/33),130,(170-(mouseY/40))-(mouseY/33));

  //Neck
  //The neck of the dragon. As mouseY increases, each neck segment translates upward, each going up at a different rate. each segment becomes a lighter shade as mouse Y value increases
    //Neck Top. As mouseY value increases, it translates upwards. Its colour becomes lighter as mouseY increases. Overlaps NECK MID
    //Moves up at the quickest rate
        fill(108+mouseY/10,88+mouseY/10,64+mouseY/10);
        quad(200,(10+(mouseY/20))-(mouseY/33),230,(100+(mouseY/20))-(mouseY/33),200,(180+(mouseY/20))-(mouseY/33),170,(100+(mouseY/20))-(mouseY/33));
    //Neck Mid. As mouseY value increases, it translates upwards. Its colour becomes lighter as mouseY increases. Overlaps NECK BOTTOM
    //Moves up at the second quickest rate
        fill(78+mouseY/10,58+mouseY/10,34+mouseY/10);
        quad(200,(30-(mouseY/20))-(mouseY/33),240,(120-(mouseY/20))-(mouseY/33),200,(200-(mouseY/20))-(mouseY/33),160,(120-(mouseY/20))-(mouseY/33));
    //Neck Bottom. As mouseY value increases, it translates upwards. Its colour becomes lighter as mouseY increases. Overlaps BODY
    //Moves up at the slowest rate
        fill(58+mouseY/10,38+mouseY/10,14+mouseY/10);
        quad(200,(50-(mouseY/15))-(mouseY/33),240,(140-(mouseY/15))-(mouseY/33),200,(220-(mouseY/15))-(mouseY/33),160,(140-(mouseY/15))-(mouseY/33));

  //Horns
  //As mouse Y increases, the horns are translated upwards. Each horn is made up of an overlapping triangle or quad, each with coordinates that shift to give off the impression of them being viewed at a different angle
  //As Mouse Y increases, the colour of the horns lighten
      fill(10+mouseY/10);
    //Top Left
        triangle(180+(mouseY/40),((50+(mouseY/13))-(mouseY/7))-(mouseY/33),150-(mouseY/40),((80+(mouseY/40))-(mouseY/7))-(mouseY/33),160+(mouseY/40),((90+(mouseY/40))-(mouseY/7))-(mouseY/33));
        quad(170,((70+(mouseY/20))-(mouseY/7))-(mouseY/33),150-(mouseY/40),((80+(mouseY/40))-(mouseY/7))-(mouseY/33),170,((120+(mouseY/40))-(mouseY/7))-(mouseY/33),190,((90+(mouseY/40))-(mouseY/7))-(mouseY/33));
    //Bottom Left
        triangle(120+(mouseY/40),((80+(mouseY/40))-(mouseY/7))-(mouseY/33),130,((110)-(mouseY/7))-(mouseY/33),150+(mouseY/40),((110+(mouseY/40))-(mouseY/7))-(mouseY/33));
        quad(140+(mouseY/40),((100+(mouseY/40))-(mouseY/7))-(mouseY/33),130,(110-(mouseY/7))-(mouseY/33),150,(140-(mouseY/7))-(mouseY/33),170+(mouseY/40),(120-(mouseY/7))-(mouseY/33));
    //Top Right
        triangle(220-(mouseY/40),((50+(mouseY/13))-(mouseY/7))-(mouseY/33),240-(mouseY/40),((90+(mouseY/40))-(mouseY/7))-(mouseY/33),250+(mouseY/40),((80+(mouseY/40))-(mouseY/7))-(mouseY/33));
        quad(230,((70+(mouseY/20))-(mouseY/7))-(mouseY/33),210,((90+(mouseY/40))-(mouseY/7))-(mouseY/33),230,((120+(mouseY/40))-(mouseY/7))-(mouseY/33),250+(mouseY/40),((80+(mouseY/40))-(mouseY/7))-(mouseY/33));
    //Bottom Right
        triangle(280-(mouseY/40),((80+(mouseY/40))-(mouseY/7))-(mouseY/33),250-(mouseY/40),((110+(mouseY/40))-(mouseY/7))-(mouseY/33),270,(110-(mouseY/7))-(mouseY/33));
        quad(260-(mouseY/40),((100+(mouseY/40))-(mouseY/7))-(mouseY/33),270,(110-(mouseY/7))-(mouseY/33),250,(140-(mouseY/7))-(mouseY/33),230-(mouseY/40),(120-(mouseY/7))-(mouseY/33));

  //Jaw
  //As mouse Y increases, the Jaw gets longer and the bottom two points of its shape become closer. This simulates it rotating away from the screen.
  //As Mouse Y increases, the colour of the jaw lighten
      fill(39+mouseY/10,20+mouseY/10,0+mouseY/10);
      quad(200,(130-(mouseY/7))-(mouseY/33),240-(mouseY/80),(190-(mouseY/7))-(mouseY/33),200,(230-(mouseY/7))-(mouseY/33),160+(mouseY/80),(190-(mouseY/7))-(mouseY/33));
      quad(180,(210-(mouseY/7))-(mouseY/33),220,(210-(mouseY/7))-(mouseY/33),220-(mouseY/40),((260+(mouseY/40))-(mouseY/7))-(mouseY/33),180+(mouseY/40),((260+(mouseY/40))-(mouseY/7))-(mouseY/33));
      triangle(180+(mouseY/40),((260+(mouseY/40))-(mouseY/7))-(mouseY/33),220-(mouseY/40),((260+(mouseY/40))-(mouseY/7))-(mouseY/33),200,(270-(mouseY/7))-(mouseY/33));
      triangle(190,(260-(mouseY/7))-(mouseY/33),210,(260-(mouseY/7))-(mouseY/33),200,((280-(mouseY/60))-(mouseY/7))-(mouseY/33));

  //Fire
  /*The fire is composed of two overlapping quads, expanding from a straight line hidden under UPPERHEAD. 
  This makes the flame shoot come out smoothly from the corners of the dragons mouth. Each coordinate between 
  the two quads of each stream of flame is moving through a sin function being inputted with the fram count.
  To make it look less uniform, I made each matching coordinate move at a different rate and with a different 
  amplitude by moddifying the input and output of each sin function.
  */
    //Right
        fill(226,147,54);
        quad(220,180-(mouseY/7),(220+(mouseY/20))+sin(2+frameCount/5),((180)+sin(2+frameCount/5))-(mouseY/7),(220+(mouseY/13))+sin(3+frameCount/5),((190)+sin(3+frameCount/5))-(mouseY/7),220,210-(mouseY/7));
        quad((220+(mouseY/20))+sin(2+frameCount/5),(180+sin(2+frameCount/5))-(mouseY/7),(220+(mouseY/10))+sin(3+frameCount/5),((180-(mouseY/20))+sin(3+frameCount/5))-(mouseY/7),(220+(mouseY/13))+sin(2+frameCount/5),(190+sin(2+frameCount/5))-(mouseY/7),220,200-(mouseY/7));
    //left
        fill(226,147,54);
        quad(180,180-(mouseY/7),(180-(mouseY/20))+sin(3+frameCount/5),((180)+sin(3+frameCount*.2))-(mouseY/7),(180-(mouseY/13))+sin(2+frameCount/5),((190)+sin(2+frameCount/5))-(mouseY/7),180,210-(mouseY/7));
        quad((180-(mouseY/20))+sin(frameCount/5),(180+sin(3+frameCount/5))-(mouseY/7),(180-(mouseY/10))+sin(3+frameCount/5),((180-(mouseY/20))+sin(frameCount/5))-(mouseY/7),(180-(mouseY/13))+sin(2+frameCount/5),(190+sin(2+frameCount/5))-(mouseY/7),180,200-(mouseY/7));

  //Inside Jaw
  //As mouse Y increases, the inside of the jaw gets longer and the bottom two points of its shape become closer. This simulates it rotating away from the screen.
  //As Mouse Y increases, the colour of the inside of the jaw lighten
      fill(85+mouseY/10,68+mouseY/10,100+mouseY/10);
      quad(180,(200-(mouseY/7))-(mouseY/33),218,(210-(mouseY/7))-(mouseY/33),217-(mouseY/40),((243+(mouseY/20))-(mouseY/7))-(mouseY/33),183+(mouseY/40),((243+(mouseY/20))-(mouseY/7))-(mouseY/33));

  //Eyeplaces
  //As mouse Y value increases, triangles shift and translate upwards.
   //As Mouse Y increases, the colour of the eye places lighten
      fill(182+mouseY/10,158+mouseY/10,130+mouseY/10);
      quad(150,(140-(mouseY/7))-(mouseY/33),180-(mouseY/40),((210-(mouseY/40))-(mouseY/7))-(mouseY/33),220+(mouseY/40),((210-(mouseY/40))-(mouseY/7))-(mouseY/33),250,(140-(mouseY/7))-(mouseY/33));
    //Left
        triangle(150,(140-(mouseY/7))-(mouseY/33),150,(160-(mouseY/7))-(mouseY/33),170,(180-(mouseY/7))-(mouseY/33));
    //Right
        triangle(250,(140-(mouseY/7))-(mouseY/33),250,(160-(mouseY/7))-(mouseY/33),230,(180-(mouseY/7))-(mouseY/33));

  //Darkness
  // //As Mouse Y increases, the colour of the black becomes more transparent
  //This is behind the EYES and the UPPERHEAD so that I can make the eyes visible even when the screen is fully black
      fill(0,400-mouseY);
      rect(0,0,400,400);

  //Eyes
   //As Mouse Y increases, the eyes translate upwards
      fill(200+mouseY/7,0,0);
    //Left
        triangle(155,((140-(mouseY/70))-(mouseY/7))-(mouseY/33),160,((160-(mouseY/70))-(mouseY/7))-(mouseY/33),180,((170-(mouseY/70))-(mouseY/7))-(mouseY/33));
    //Right
        triangle(245,((140-(mouseY/70))-(mouseY/7))-(mouseY/33),240,((160-(mouseY/70))-(mouseY/7))-(mouseY/33),220,((170-(mouseY/70))-(mouseY/7))-(mouseY/33));

  //UpperHead
  //As Mouse Y increases, the head translate upwards, and each rect coordinates shift to make it look as if its rotating toward the screen
  //fades in to brown from black so that while the screen is black from DARKNESS, it can still be in front of it and maintain the illusion that the eyes are the only things visible in front of the DARKNESS
      fill(mouseY/5,mouseY/6,mouseY/11);
      triangle(200,((80+(mouseY/27))-(mouseY/7))-(mouseY/33),180+(mouseY/40),((91+(mouseY/40))-(mouseY/7))-(mouseY/33),220-(mouseY/40),((91+(mouseY/40))-(mouseY/7))-(mouseY/33));
      quad(180+(mouseY/40),((90+(mouseY/40))-(mouseY/7))-(mouseY/33),220-(mouseY/40),((90+(mouseY/40))-(mouseY/7))-(mouseY/33),250,(141-(mouseY/7))-(mouseY/33),150,(141-(mouseY/7))-(mouseY/33));
      quad(150,(140-(mouseY/7))-(mouseY/33),250,(140-(mouseY/7))-(mouseY/33),230,((171-(mouseY/40))-(mouseY/7))-(mouseY/33),170,((171-(mouseY/40))-(mouseY/7))-(mouseY/33));
      quad(170,((170-(mouseY/40))-(mouseY/7))-(mouseY/33),230,((170-(mouseY/40))-(mouseY/7))-(mouseY/33),220+(mouseY/40),((241-(mouseY/20))-(mouseY/7))-(mouseY/33),180-(mouseY/40),((241-(mouseY/20))-(mouseY/7))-(mouseY/33));
      triangle(180-(mouseY/40),((240-(mouseY/20))-(mouseY/7))-(mouseY/33),220+(mouseY/40),((240-(mouseY/20))-(mouseY/7))-(mouseY/33),200,((260-(mouseY/18))-(mouseY/7))-(mouseY/33));  

  //Nostrils
  //Translates upwards with mouse Y value and outwards from the middle of the screen
    fill(0);
    triangle(185-(mouseY/40),((235-(mouseY/15))-(mouseY/7))-(mouseY/33),195-(mouseY/40),((240-(mouseY/15))-(mouseY/7))-(mouseY/33),195-(mouseY/40),((245-(mouseY/15))-(mouseY/7))-(mouseY/33));
    triangle(215+(mouseY/40),((235-(mouseY/15))-(mouseY/7))-(mouseY/33),205+(mouseY/40),((240-(mouseY/15))-(mouseY/7))-(mouseY/33),205+(mouseY/40),((245-(mouseY/15))-(mouseY/7))-(mouseY/33));


  
  

//KNIGHT***********************************

  //Head
  //Triangles and rect shift with mouse Y value to give illusion that the head slowly looks upwards
  //HEAD translates upwards as Mouse Y increases
      fill(175-(mouseY/10));
      ellipse(180, 210+(mouseY/10), 220, 250+(mouseY/10));
      rect(180, 210+(mouseY/10), 220, 230+(mouseY/10));
      fill(200-(mouseY/10));
      rect(180, 210+(mouseY/10), 220, (216+(mouseY/80)+(mouseY/10)));
      triangle(200, (205-(mouseY/80))+(mouseY/10), 180, 211+(mouseY/10), 220, 211+(mouseY/10));
      triangle(200, (220+(mouseY/40))+(mouseY/10), 180, (215+(mouseY/80))+(mouseY/10), 220, (215+(mouseY/80))+(mouseY/10));

  //Neck
   //NECK translates upwards as Mouse Y increases
      stroke(25-(mouseY/16));
      strokeWeight(11);
      line(200, 240+(mouseY/8), 200, 270+(mouseY/10));
      line(199, 240+(mouseY/8), 199, 270+(mouseY/10));
      noStroke();

  //Sword
   //SWORD translates upwards as Mouse Y increases
    //SWORD translates outwards from the middle as Mouse Y increases
      //Handguard
          fill(170-(mouseY/10));
          rect(135-(mouseY/22), 350+(mouseY/80), 175-(mouseY/22), 360+(mouseY/80));
          fill(180-(mouseY/10));
          rect(135-(mouseY/22), 350+(mouseY/80), 175-(mouseY/22), 357+(mouseY/80));         
      //Blade
          fill(200-(mouseY/10));
          rect(145-(mouseY/22), 260+(mouseY/80), 165-(mouseY/22), 350+(mouseY/80));
          fill(210-(mouseY/10));
          quad(155-(mouseY/22), 250+(mouseY/80), 165-(mouseY/22), 260+(mouseY/80), 155-(mouseY/22), 270+(mouseY/80), 145-(mouseY/22), 260+(mouseY/80));
          fill(185-(mouseY/10));
          quad(165-(mouseY/22), 260+(mouseY/80), 155-(mouseY/22), 270+(mouseY/80), 155-(mouseY/22), 350+(mouseY/80), 165-(mouseY/22), 350+(mouseY/80));
      //Handle
          stroke(30-(mouseY/16));
          strokeWeight(5);
          line(155-(mouseY/22), 360+(mouseY/80), 155-(mouseY/22), 385+(mouseY/80));
          noStroke();           
      //Shine
       //SHINE shifts upwards Mouse Y increases
          fill(240-(mouseY/10), 100);
          quad(145-(mouseY/22), 290+(mouseY/30), 165-(mouseY/22), 280+(mouseY/30), 165-(mouseY/22), 295+(mouseY/40), 145-(mouseY/22), 305+(mouseY/40));           
      
      //Shield
      //As Mouse Y increases the coordinates of SHIELD shift simulating rotation
      //SHIELD translates upwards as Mouse Y increases
      //SHIELD translates outwards from the middle as Mouse Y increases
          fill(70-(mouseY/10));
          quad((225+(mouseY/20))+(mouseY/22), (330-(mouseY/40))+(mouseY/80), (265+(mouseY/40))+(mouseY/22), (340+(mouseY/40))+(mouseY/80), (285-(mouseY/10))+(mouseY/22), (410+(mouseY/20))+(mouseY/80), 215+(mouseY/22), (370-(mouseY/20)+(mouseY/80)));

   //Hands
   //HANDS shift outwards relative to mouse Y position
   //ARMS are just thick lines so that I can control the angle with by moving one set of coordinates
       fill(200-(mouseY/10));
    //Left
        ellipse(145-(mouseY/22), 355+(mouseY/80), 165-(mouseY/22), 375+(mouseY/80));
    //Right
        ellipse(235+(mouseY/22), 355+(mouseY/80), 255+(mouseY/22), 375+(mouseY/80));

    //Forearms
        fill(150-(mouseY/10));
    //Left
        ellipse(140-(mouseY/27), 320+(mouseY/15), 160-(mouseY/27), 370+(mouseY/57));
        //Darker Part
            fill(125-(mouseY/10));
            ellipse(140-(mouseY/27), 320+(mouseY/15), 160-(mouseY/27), 340+(mouseY/15));
    //Right
        fill(150-(mouseY/10));
        ellipse(240+(mouseY/27), 320+(mouseY/15), 260+(mouseY/27), 370+(mouseY/57));
        //Darker Part
            fill(125-(mouseY/10));
            ellipse(240+(mouseY/27), 320+(mouseY/15), 260+(mouseY/27), 340+(mouseY/15));

    //Arms
        stroke(25-(mouseY/16));
        strokeWeight(11);
        //Left
            line(160, 270+(mouseY/10), 150-(mouseY/26), (330-(mouseY/30))+(mouseY/10));
        //Right
            line(240, 270+(mouseY/10), 250+(mouseY/26), (330-(mouseY/30))+(mouseY/10));

        noStroke();

    //Knight Neckguard
    //Shifts relative to mouse Y value simulating angle change
    //Translates upwards with mouse Y
        fill(150-(mouseY/10));
        triangle(200, (240+(mouseY/40))+(mouseY/10), 170, 270+(mouseY/10), 230, 270+(mouseY/10));

    //Knight Torso
     //Shifts relative to mouse Y value simulating angle change
      //Translates upwards with mouse Y
        //Dark
            fill(150-(mouseY/10));
            triangle(200, (365+(mouseY/80))+(mouseY/10), 160, 270+(mouseY/10), 240, 270+(mouseY/10));
        //Light
            fill(175-(mouseY/10));
            triangle(200, (250+(mouseY/30))+(mouseY/10), 160, 271+(mouseY/10), 240, 271+(mouseY/10));
            triangle(200, (280+(mouseY/30))+(mouseY/10), 160, 270+(mouseY/10), 240, 270+(mouseY/10));


    //Legs
    //LEGS are just thick lines so that I can control the angle with by moving one set of coordinates
        //Left
            stroke(25-(mouseY/16));
            strokeWeight(11);
            line(190, 370+(mouseY/10), 180-(mouseY/40), 400+(mouseY/10));
        //Right
            line(210, 370+(mouseY/10), 220+(mouseY/40), 400+(mouseY/10));
        noStroke();

    //Knight Skirt
      //Shifts relative to mouse Y value simulating angle change
      //Translates upwards with mouse Y
        fill(150-(mouseY/10));
        triangle(200, (340+(mouseY/40))+(mouseY/10), 170, (370+(mouseY/133))+(mouseY/10), 230, (370+(mouseY/133))+(mouseY/10));
        triangle(200, (380+(mouseY/30))+(mouseY/10), 170, (369+(mouseY/133))+(mouseY/10), 230, (369+(mouseY/133))+(mouseY/10));

    //Knight Waist
      //Shifts relative to mouse Y value simulating angle change
      //Translates upwards with mouse Y
        fill(175-(mouseY/10));
        triangle(200, (335+(mouseY/45))+(mouseY/10), 190, (340+(mouseY/100))+(mouseY/10), 210, (340+(mouseY/100))+(mouseY/10));
        rect(190, (339+(mouseY/100))+(mouseY/10), 210, (351+(mouseY/57))+(mouseY/10));
        triangle(200, (350+(mouseY/30))+(mouseY/10), 190, (350+(mouseY/57))+(mouseY/10), 210, (350+(mouseY/57))+(mouseY/10));

    //Shoulders
      //Shifts relative to mouse Y value simulating angle change, the lighter portion of the SHOULDERS do this as well but at a different rate, enhancing the effect
      //Translates upwards with mouse Y
        //Left
            fill(175-(mouseY/10));
            ellipse(140, 260+(mouseY/9), 180, (280+(mouseY/100))+(mouseY/9));
            //Top Left
                fill(200-(mouseY/10));
                ellipse(150, 260+(mouseY/9), 170, (267+(mouseY/100))+(mouseY/9));
        //Right
            fill(175-(mouseY/10));
            ellipse(220, 260+(mouseY/9), 260, (280+(mouseY/100))+(mouseY/9));
            //Top Right
                fill(200-(mouseY/10));
                ellipse(230, 260+(mouseY/9), 250, (267+(mouseY/100))+(mouseY/9));
                

                
//Fairy
//Fairy follows cursor
//FAIRY's glow uses pmouse in order to give its GLOW some lag
//GLOW is transparent
    ellipseMode(CENTER);
    fill(127,210,252);
    ellipse(mouseX,mouseY,20,20);

  //Glow 1
    fill(127,210,252,125);
    ellipse(pmouseX,pmouseY, 40 + sin(frameCount * .08) * 5, 40 + sin(frameCount * .08) * 5);

  //Glow 2
    fill(127,210,252,60);
    ellipse(pmouseX,pmouseY, 60 + cos(frameCount * .08) * 5, 60 + cos(frameCount * .08) * 5);

//Wings
//wings use sin functions and framCount to flap
  //Right
      fill(255);
      triangle(10+mouseX,-1+mouseY,35+pmouseX,(-11+pmouseY)+2*sin(frameCount/3),25+pmouseX,(2+pmouseY)+2*sin(frameCount/3));
  //Left
      fill(255);
      triangle(-10+mouseX,-1+mouseY,-35+pmouseX,(-11+pmouseY)+2*sin(frameCount/3),-25+pmouseX,(2+pmouseY)+2*sin(frameCount/3));

}