Inner Coordinates

by Joshua Salwen

HTML

<div>
Hi
</div>

JavaScript

function inCanvas(x, y, width, height, offsetX = 0, offsetY = 0)
{
    var newX = x - offsetX;
    var newY = y - offsetY;
    var inCanvas = newX >= 0 && newY >= 0 && newX <= width && newY <= height;
    //console.log(x, y, inCanvas);
}

function trimOverflow(point, max)
{
   if (point < 0) {
     return 0;
   }
   if (point > max) {
     return max;
   }
}

function yDiff(b, alpha) {

}

function innerCoordinates(startX, startY, endX, endY, width, height, offsetX, offsetY)
{
    var innerStartX = startX - offsetX;
    var innerStartY = startY - offsetY;
    var innerEndX = endX - offsetX;    
    var innerEndY = endY - offsetY;
    console.log('start', `${innerStartX}, ${innerStartY}`);
    console.log('end', `${innerEndX}, ${innerEndY}`);
    
    var startIsIn = inCanvas(innerStartX, innerStartY, width, height);
    var endIsIn = inCanvas(innerStartX, innerStartY, width, height);

		if (startIsIn && endIsIn) {
        // already insdie inner
    		return {
            begin: {
                x: innerStartX,
                y: innerStartY,
            },
            end: {
                x: innerEndX,
                y: innerEndY
            }
        };
    }
    
    var triangleA = Math.abs(startY - endY);
    var triangleB = Math.abs(startX - endX);
    // get the alpha angle
    var alphaAngle = Math.atan(triangleA / triangleB);
    var betaAngle = 90 - alphaAngle;
    var slope = (innerEndY - innerStartY)/(innerEndX - innerStartX);
    //console.log(`slope: ${slope}`);
    
    if (startX === endX)
    {
        // straight vert line
        innerStartY = trimOverflow(innerStartY, height);
        innerEndY = trimOverflow(innerEndY, height);
    }
    else if (startY === endY)
    {
        // straight horz line
        innerStartX = trimOverflow(innerStartX, width);
        innerEndX = trimOverflow(innerEndX, width);
    }
    else if (startX < endX && startY < endY)
    {
      // lower left to upper right
      if (!startIsIn) {
        innerStartY...