81 lines
1.8 KiB
JavaScript
81 lines
1.8 KiB
JavaScript
// circle_xy_list = [[circle_x, circle_y, clicked?], ......]
|
|
let circle_xy_list = [];
|
|
|
|
function setup() {
|
|
createCanvas(400, 400);
|
|
}
|
|
|
|
function draw() {
|
|
background(220);
|
|
noFill();
|
|
|
|
let c_list_length = circle_xy_list.length;
|
|
for (let i = 0; i < c_list_length; i++) {
|
|
circle_x = circle_xy_list[i][0];
|
|
circle_y = circle_xy_list[i][1];
|
|
circle(circle_x, circle_y, 30);
|
|
}
|
|
|
|
fill("red");
|
|
if (c_list_length > 2) {
|
|
beginShape();
|
|
for (let i = 0; i < c_list_length; i++) {
|
|
vertex(circle_xy_list[i][0], circle_xy_list[i][1]);
|
|
}
|
|
vertex(circle_xy_list[0][0], circle_xy_list[0][1]);
|
|
endShape();
|
|
}
|
|
}
|
|
|
|
function mouseDragged() {
|
|
mouse_drag_end_xy = [mouseX, mouseY];
|
|
mouse_released = false;
|
|
|
|
for (let i = 0; i < circle_xy_list.length; i++) {
|
|
if (circle_xy_list[i][2] == true) {
|
|
circle_xy_list[i][0] = mouseX;
|
|
circle_xy_list[i][1] = mouseY;
|
|
}
|
|
}
|
|
// prevent default
|
|
return false;
|
|
}
|
|
|
|
function mouseReleased() {
|
|
mouse_drag_end_xy = [mouseX, mouseY];
|
|
mouse_dragging = false;
|
|
mouse_released = true;
|
|
|
|
for (let i = 0; i < circle_xy_list.length; i++) {
|
|
circle_xy_list[i][2] = false;
|
|
}
|
|
}
|
|
|
|
function pythTheorem(a, b) {
|
|
return Math.pow(Math.pow(a, 2) + Math.pow(b, 2), 0.5);
|
|
}
|
|
|
|
function mousePressed() {
|
|
mouse_drag_start_xy = [mouseX, mouseY];
|
|
mouse_dragging = true;
|
|
mouse_released = false;
|
|
|
|
if (circle_xy_list.length > 0) {
|
|
circle_found = false;
|
|
for (let i = 0; i < circle_xy_list.length; i++) {
|
|
[circle_x, circle_y] = circle_xy_list[i];
|
|
if (pythTheorem(circle_x - mouseX, circle_y - mouseY) < 30) {
|
|
circle_xy_list[i][2] = true;
|
|
circle_found = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (circle_found == false) {
|
|
circle_xy_list.push([mouseX, mouseY, false]);
|
|
}
|
|
} else {
|
|
circle_xy_list.push([mouseX, mouseY, false]);
|
|
}
|
|
}
|