I would like to detect whether or not the cursor is within the area of a mobile circle/disk. I've attempted to solve the problem with the code below. The if
statement seems to be "functioning", as it does not report an error, but the else
condition is the only output ever printed, even when the cursor is moved within the area of the circle, across its circumference, or through its center.
I am obviously missing something with regard to defining the appropriate area to detect the mouse within, but I cannot figure what. I assumed (ignorantly) that the best option would be to use the vertex coordinates defined within the glVertex2f()
, but that is either obviously inaccurate or I have executed it improperly. Any assistance or guidance would be appreciated.
glBegin(GL_TRIANGLE_FAN);
glColor3f(1, 0, 0);
int j[5] = {100,80,60,55,50};
int z = 1;
float radius = j[z];
int xoffset = radius - (2 * radius);
int yoffset = 384;
double x1 = xoffset + radius;
double y1 = yoffset + radius * (sin(iteration));
void cursor_position_callback(GLFWwindow* w, double x, double y)
{
FILE *f = fopen("data.txt", "a");
if (cursor_x == (x1 + radius * cos(i)) && cursor_y == (y1 + radius * sin(i))){
fprintf(f,"+++%0.3f: Cursor position: %f %f (%+f %+f)\n",
glfwGetTime(),
x, y, x - cursor_x, y - cursor_y);
}
else{
fprintf(f,"---%0.3f: Cursor position: %f %f (%+f %+f)\n",
glfwGetTime(),
x, y, x - cursor_x, y - cursor_y);
}
cursor_x = x;
cursor_y = y;
fclose(f);
}
for (double i = 0; i < 2 * M_PI; i = i + ((2 * M_PI) / a))
{
glVertex2f(x1 + radius * cos(i), y1 + radius * sin(i));
glfwSetCursorPosCallback(w, cursor_position_callback);
}
iteration += 0.01;
glEnd();
glTranslatef(1.0f,0.0f,0.0f);