/** * to see * By Raphael Rouvinov-Kats * * Quick thang for pie point inter6tion **/ var player_x = 200, player_y = 200; var object_x = 300, object_y = 300; var player_r = 5, object_r = 5; var inertia = 0.99; // [0,1] tendency to stay at place var viewing_dist = 125; var viewing_angle = 20; var player_orientation = 0; var draw = function() { // draw bg background(255, 255, 255); // draw orientation stroke(0, 0, 0, 0100); fill(255, 234, 0); arc(player_x, player_y, viewing_dist*2, viewing_dist*2, -viewing_angle/2 + player_orientation, viewing_angle/2 + player_orientation); // draw player stroke(0, 0, 0); fill(58, 135, 74); ellipse(player_x, player_y, player_r*2, player_r*2); // draw object, show stroke only if in viewing angle and distance var object_visible = false; var d = dist(player_x, player_y, object_x, object_y) - object_r; var a = atan2(object_y - player_y, object_x - player_x); if (d < viewing_dist) { if (abs(a - player_orientation) < viewing_angle/2 + atan(object_r/dist(player_x, player_y, object_x, object_y))) { object_visible = true; } } stroke(0, 0, 0, object_visible ? 255 : 0); fill(255, 0, 0); ellipse(object_x, object_y, object_r*2, object_r*2); // move player to mouse if mouse isn't already where player is if (dist(player_x, player_y, mouseX, mouseY) > player_r) { var old_player_x = player_x; var old_player_y = player_y; player_x = player_x*inertia + mouseX*(1-inertia); player_y = player_y*inertia + mouseY*(1-inertia); // update orientation player_orientation = atan2(player_y-old_player_y, player_x-old_player_x); } };