powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Алгоритм Люка(растровая графика)
2 сообщений из 2, страница 1 из 1
Алгоритм Люка(растровая графика)
    #39909389
vladis234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые форумчане, прошу вас помочь разобраться с методом Люка генерации отрезков. В методичке есть описание метода - Генерация отрезка производится в первом октанте. На каждом шаге выполняется перемещение вдоль оси Х, оценивается возникающая ошибка по ординате Y, которая накапливается. Для ее минимизации модифицируется у (добавляется 1), когда ошибка достигнет или превысит единицу. И есть псевдокод. Я должен метод запрограммировать на языке С#,но я не очень понял его логику, на язык С#, я то его перевел, но только он не работает...
Вот псевдокод алгоритма:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
#define  Xd 80
#define  Yd 245
#define  Xf 200
#define  Yf 100

int Dx,Dy,Cumul;
int Xinc,Yinc,X,Y;
int col;

{
  int Dx,Dy,Cumul;
  int Xinc,Yinc,X,Y;
  int col;
  int i;

  X = Xd; Y = Yd;  col = 4;
  putpixel(X,Y,col);
  if (Xd < Xf) Xinc = 1; else Xinc = -1;
  if (Yd < Yf) Yinc = 1; else Yinc = -1;
  Dx = abs (Xd - Xf);
  Dy = abs (Yd - Yf);

  if (Dx > Dy)
         {
         Cumul = Dx/2;
         for (i=0; i < Dx; i++)
                {
                X = X + Xinc;
                Cumul = Cumul + Dy;
                if ( Cumul >= Dx)
                  {
                  Cumul = Cumul - Dx;
                                Y = Y + Yinc;
                  }
                putpixel(X,Y,col);  
                }
         }
  else
         {
         Cumul = Dy/2;
         for (i=0; i < Dy; i++)
                {
                Y = Y + Yinc;
                Cumul = Cumul + Dx;
                if ( Cumul >= Dy)
                  {
                  Cumul = Cumul - Dy;
                                X = X + Xinc;
                putpixel(X,Y,col); 
                }
         }


И вот мой код на С#:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
static public void LukLine(Graphics g, Color clr, int Xd, int Xf, int Yd, int Yf)
        {
            int Dx, Dy, Cumul;
            int Xinc, Yinc, X, Y;
            int col;
            int i;
            //int Xd = 80; int Yd = 245; int Xf = 200; int Yf = 100;

            X = Xd; Y = Yd; col = 4;
            PutPixel(g, clr, X, Y, col);
            if (Xd < Xf) Xinc = 1; else Xinc = -1;
            if (Yd < Yf) Yinc = 1; else Yinc = -1;
            Dx = Math.Abs(Xd - Xf);
            Dy = Math.Abs(Yd - Yf);
            if (Dx > Dy)
            {
                Cumul = Dx / 2;
                for (i = 0; i < Dx; i++)
                {
                    X = X + Xinc;
                    Cumul = Cumul + Dy;
                    if (Cumul >= Dx)
                    {
                        Cumul = Cumul - Dx;
                        Y = Y + Yinc;
                    }
                   PutPixel(g, clr, X, Y, col);
                }
            }
            else
            {
                Cumul = Dy / 2;
                for (i = 0; i < Dy; i++)
                {
                    Y = Y + Yinc;
                    Cumul = Cumul + Dx;
                    if (Cumul >= Dy)
                    {
                        Cumul = Cumul - Dy;
                        X = X + Xinc;
                        PutPixel(g, clr, X, Y, col);
                    }
                }
            }
        }



Код: c#
1.
LukLine(g, Color.Black, 80, 200, 245, 100);
...
Рейтинг: 0 / 0
Алгоритм Люка(растровая графика)
    #39909713
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Инициализация процедуры наводящих и уточняющих вопросов...
Что значит не работает?
  • выдает не тот результат, который ожидается
  • выдается Excepton
Завершение процедуры наводящих и уточняющих вопросов...
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Алгоритм Люка(растровая графика)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]