Bearbeiten: Die folgende Lösung gilt nur aus einer geometrischen Sicht. Das Zeichnen auf einem Bildschirm ist anders als die theoretische Geometrie, Sie sollten den Leuten zuhören, die den Bresenham-Algorithmus vorschlagen.
gegeben, zwei Punkte, und zu wissen, dass die Gleichung der Linie y = m*x + b
ist, wo m
die Steigung und b
der Schnittpunkt, Sie m
und b
und wenden Sie dann die Gleichung für alle Werte der X-Achse berechnen zwischen deinen A- und B-Punkten:
var A = [10, 5];
var B = [15, 90];
function slope(a, b) {
if (a[0] == b[0]) {
return null;
}
return (b[1] - a[1])/(b[0] - a[0]);
}
function intercept(point, slope) {
if (slope === null) {
// vertical line
return point[0];
}
return point[1] - slope * point[0];
}
var m = slope(A, B);
var b = intercept(A, m);
var coordinates = [];
for (var x = A[0]; x <= B[0]; x++) {
var y = m * x + b;
coordinates.push([x, y]);
}
console.log(coordinates); // [[10, 5], [11, 22], [12, 39], [13, 56], [14, 73], [15, 90]]
Das vor einer Weile unterrichten sie mich in der Schule über Sine, Cosine und Tangent. http://www.mathsisfun.com/sine-cosine-tangent.html –
Dupe - Siehe: http://stackoverflow.com/questions/4672279/bresenham-algorithm-in-javascript –
Sie suchen nach http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm – Alnitak