123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- var canvas;
- const draw = function(ctx, source) {
- const img = new Image();
- img.onload = function() {
- ctx.drawImage(img, 0, 0);
- };
- img.src = source;
- };
- const dotProduct = function(U, V) {
- return U.x * V.x + U.y * V.y;
- };
- const mouseMove = function(e) {
- canvas.mouse.x = e.clientX;
- canvas.mouse.y = e.clientY;
- const AB = { x: canvas.vertex.b.x - canvas.vertex.a.x, y: canvas.vertex.b.y - canvas.vertex.a.y };
- const AM = { x: canvas.mouse.x - canvas.vertex.a.x, y: canvas.mouse.y - canvas.vertex.a.y };
- const BC = { x: canvas.vertex.c.x - canvas.vertex.b.x, y: canvas.vertex.c.y - canvas.vertex.b.y };
- const BM = { x: canvas.mouse.x - canvas.vertex.b.x, y: canvas.mouse.y - canvas.vertex.b.y };
- canvas.mouse.isInside = (0 <= dotProduct(AB, AM) && dotProduct(AB, AM) <= dotProduct(AB, AB))
- && (0 <= dotProduct(BC, BM) && dotProduct(BC, BM) <= dotProduct(BC, BC));
- console.log("Dragging: " + canvas.isDragging);
- console.log("Inside: " + canvas.mouse.isInside);
- }
- const mouseDown = function(e) {
- canvas.isDragging = canvas.mouse.isInside;
- };
- const mouseUp = function(e) {
- canvas.isDragging = false;
- };
- const init = function() {
- canvas = {
- element: document.getElementById("canvas"),
- get context() { return canvas.element.getContext(); },
- isDragging: false,
-
- mouse: {
- isInside: false,
- x: 0,
- y: 0
- },
-
- get boundary() { return canvas.element.getBoundingClientRect(); },
- vertex: {
- get a() { return { x: canvas.boundary.top, y: canvas.boundary.left }; },
- get b() { return { x: canvas.boundary.top, y: canvas.boundary.right }; },
- get c() { return { x: canvas.boundary.bottom, y: canvas.boundary.left }; },
- get d() { return { x: canvas.boundary.bottom, y: canvas.boundary.right }; }
- }
- }
- canvas.element.setAttribute("width", 500);//window.getComputedStyle(document.body).getPropertyValue("width"));
- canvas.element.setAttribute("height", 500);//window.getComputedStyle(document.body).getPropertyValue("height"));
- document.addEventListener("mousemove", mouseMove);
- document.addEventListener("mouseup", mouseUp);
- document.addEventListener("mousedown", mouseDown);
- };
|