|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Алгоритм Люка(растровая графика) |
|
|
.NET - Алгоритм Люка(растровая графика)
|
|
Новый участник Сообщения: 6 |
Здравствуйте! Хотел бы разобраться в логике работы алгоритма Люка, имеется в методичке псевдокод, отображающий его работу. и описано краткое описание: Генерация отрезка производится в первом октанте. На каждом шаге выполняется перемещение вдоль оси Х, оценивается возникающая ошибка по ординате Y, которая накапливается. Для ее минимизации модифицируется у (добавляется 1), когда ошибка достигнет или превысит единицу. Вот сам псевдокод алгоритма:
#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);
}
}
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);
}
}
}
}
private void button1_Click(object sender, EventArgs e)
{
Graphics g = pictureBox1.CreateGraphics();
LukLine(g, Color.Black, 80, 200, 245, 100);
}
Подскажите,пожалуйста,возможно я неверно использую алгоритм,что неверно? |
|
|
Отправлено: 11:37, 28-12-2019 |
|
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 12:40, 28-12-2019 | #2 |
|
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата vladis3494:
|
|
|
Отправлено: 13:59, 28-12-2019 | #3 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Интегрированная графика | Метла | Процесcоры | 2 | 25-03-2014 23:59 | |
| 2010 - Автоматическое изменение графика при переносе данных, формулы и графика на другой лис | Invincible | Microsoft Office (Word, Excel, Outlook и т.д.) | 2 | 07-06-2013 22:13 | |
| Драйвер - Тормозит графика.... | djsova | Microsoft Windows 2000/XP | 6 | 20-11-2007 10:09 | |
| Алгоритм | pauluss | Программирование и базы данных | 1 | 06-10-2006 10:53 | |
| Графика в С++ | mask | Программирование и базы данных | 15 | 04-06-2003 19:51 | |
|