Chỉnh sửa: Giải pháp dưới đây chỉ áp dụng từ quan điểm hình học. Vẽ trên màn hình khác với hình học lý thuyết, bạn nên lắng nghe những người đề xuất thuật toán của Bresenham.
Given, hai điểm, và biết rằng phương trình của dòng là y = m*x + b
, nơi m
là độ dốc và b
đánh chặn, bạn có thể tính toán m
và b
và sau đó áp dụng các phương trình cho tất cả các giá trị của trục X giữa các điểm A và B của bạn:
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]]
Nguồn
2012-11-21 11:04:41
Cách đây một thời gian, họ dạy tôi ở trường về Sine, Cosine và Tangent. http://www.mathsisfun.com/sine-cosine-tangent.html –
Đuổi - Xem: http://stackoverflow.com/questions/4672279/bresenham-algorithm-in-javascript –
bạn đang tìm kiếm http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm – Alnitak