Tôi có 1 dòng với 2 điểm được biết đến:Duyệt qua N điểm đó vuông góc với dòng khác
PointF p2_1 = new PointF();
p2_1.X = 100; // x1
p2_1.Y = 150; // y1
PointF p2_2 = new PointF();
p2_2.X = 800; // x2
p2_2.Y = 500; // y2
float dx = p2_2.X - p2_1.X;
float dy = p2_2.Y- p2_1.Y;
float slope = dy/dx; // slope m
float intercept = p2_1.Y - slope * p2_1.X; // intercept c
// y = mx + c
Tôi muốn lặp qua 10 pixel bên trái (hoặc bên phải) để 1 dòng (tại x1, y1).
Các chấm đỏ là những người mà tôi muốn quá trình. Ví dụ:
for (int i = 10; i > 0; i--)
{
// start with distant coordinates
PointF new_point = new Point(); // (grab x,y, coords accordingly)
// repeat until I'm at (x1, y1)
}
Làm cách nào để lặp qua các coords này?
Chỉ muốn ném điều này vào đây: [Thực hiện thuật toán vẽ đường nét của Bresenham] (http://ericw.ca/notes/bresenhams-line-algorithm-in-csharp.html). Nó khá ngắn, và cung cấp cho bạn một 'IEnumerable 'tiện dụng để lặp lại với. Bạn có thể ăn nó với các coords cuối cùng từ các câu trả lời dưới đây. –