В следующей настройке, как я могу нарисовать "бесконечную" линию, которая проходит через две точки?
var context = document.getElementById("canvas").getContext("2d");
var point1 = {
x : 120,
y : 100,
};
var point2 = {
x : 250,
y : 300,
};
// mark points in the canvas
context.fillStyle = "red";
context.beginPath();
context.arc(point1.x + 0.5, point1.y + 0.5, 2, 0, 2 * Math.PI);
context.fill();
context.beginPath();
context.arc(point2.x + 0.5, point2.y + 0.5, 2, 0, 2 * Math.PI);
context.fill();
// draw a line between two points
context.beginPath();
context.moveTo(point1.x, point1.y);
context.lineTo(point2.x, point2.y);
context.stroke();
// draw an "infinite" line that passes through two points
// ??
body {
font-family: sans-serif;
box-sizing: border-box;
background-color: hsl(0, 0%, 90%);
}
canvas {
display: block;
margin: 20px;
background: white;
box-shadow: 0 0 1px rgba(0,0,0,.2),
0 0 3px rgba(0,0,0,.15),
0 1px 2px rgba(0,0,0,.15);
}
<canvas id="canvas" width="400" height="400"></canvas>
Я знаю, что мне нужно вычислить новые координаты, которые находятся на том же пути, но находятся за пределами вида (холст), и нарисовать линиюмежду ними, чтобы подделать бесконечную линию.
Эти новые координаты не обязательно должны быть по краям холста.Я думаю, что это потребует дополнительных расчетов.Поэтому я думаю что-то вроде
current position ± canvas diagonal (max distance in canvas)
, чтобы убедиться, что новые координаты всегда находятся за пределами холста, и пропустить избыточные вычисления.
Как рассчитать эти новые координаты?