title: Making eyeball look at/follow cursor movement (C#)
body: <p>I'm stuck here. I want to have the eyes drawn while 'looking' at (the angle of) the cursor. Also, it should be contained within the bigger circle/quadrant (just like an eyeball). Sadly, it just won't draw the eye  for me at the right position/angle and at every mouse movement. The only thing it will do is initially draw an ellipse at (0,0), but that's not what I want.</p>
  
  <p>My idea is to calculate the ratio of the triangles with pythagorean theorem. Then apply the right coordinates (With the correct ratio) in the <code>drawEllipse();</code> method. This should be repeated everytime you move the cursor. </p>
  
  <p>You can check my image for the mathematical reasoning. 
  <img src="https://i.stack.imgur.com/MT2MG.jpg" alt="enter image description here"></p>
  
  <p>Here is my code, note that the panel is made in the designer mode which isn't included in this code, but shouldn't be a big deal:</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;
  using System.Windows.Forms;
  
  namespace oogjes2
  {
      public partial class Form1 : Form
      {
          public int mousex;
          public int mousey;
  
          public Form1()
          {
              InitializeComponent();
              panel1.Paint += paintpanel;
              panel1.MouseMove += panel1_MouseMove;     
          }
  
          //panel1 cover the screen from (0.0) and onwards,
          void panel1_MouseMove(object sender, MouseEventArgs mea)
          {
              int mousex = mea.X;
              int mousey = mea.Y;
          } 
  
          void paintpanel(object obj, PaintEventArgs pea)
          {
              Pen blackpen = new Pen(Color.Black, 3);
  
              // the black outer circle which doesnt move
              pea.Graphics.DrawEllipse(blackpen, -125, -125, 250, 250);
  
              // e = 63. Diagonal distance from (0,0) to starting point drawEllipse
              // factor = multiplication from mea.x and mea.y to the respective ex and ey of the small circle.
              // ey = factor * mousex (mea.X). Same for ex.
  
              float e = (float)Math.Sqrt(45 * 45 + 45 * 45); //=63
              float factor = (e / (float)Math.Sqrt(mousex * mousex + mousey * mousey));
              int ex = mousex * (int)factor;
              int ey = mousey * (int)factor;
  
              //  the eye that should be redrawn at every mousemovement
              pea.Graphics.DrawEllipse(blackpen, ex, ey, 50, 50);
              this.Invalidate();
          }
      }
  }
  </code></pre>