Несимметричный ЦДА на С#

Нужно реализовать несимметричный ЦДА в приложении 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 соответственно

→ Ссылка