Несимметричный ЦДА на С#
Нужно реализовать несимметричный ЦДА в приложении Windows Forms. Сделал это таким образом:
private void PutPixel(float x, float y)
{
g.DrawRectangle(myPen, x, y, 1, 1);
}
private void asymmetricalCDA(float xn, float yn, float xk, float yk)
{
float Px = xk - xn;
float Py = yk - yn;
float X1 = xn;
float Y1 = yn;
PutPixel(X1, Y1);
while (X1 < xk)
{
X1 = X1 + 1.0f;
Y1 = Y1 + Py / Px;
PutPixel(X1, Y1);
}
}
Основная проблема заключается в попытках нарисовать вертикальные отрезки. При попытке нарисовать отрезвок сверху-вниз или снизу-вверх, отрезок генерируется некорректно - получаются пунктиры или отрезок вообще не генерируется. Хз если что-то не уточнил, напишите пж.
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Ну на ноль же нельзя делить...
Сначала выбирайте, по какой координате больше абсолютная разница, и именно по ней делайте +1.0f
, а по второй +Py/Px
или +Px/Py
соответственно