我有2已知點1行:迭代通過垂直於另一條線的N個點
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
我想通過10個像素迭代向左(或右)以1線(在x1,y1)。
紅點是,我想處理的人。例如:
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)
}
如何迭代這些座標?
只是想在這裏拋出這樣的:[Bresenham直線繪製算法的實現(HTTP:/ /ericw.ca/notes/bresenhams-line-algorithm-in-csharp.html)。它非常短,並且爲您提供了一個方便的'IEnumerable'來進行迭代。你可以用下面答案中的結尾符號來提供它。 –
2013-04-11 19:47:24