Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2010, 15:54   #1
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию Алгоритм рисования линии

Добрый день всем.

Нужен алгоритм рисования линии, с тем учетом, что можно использовать только переменные типа BYTE. То есть интеджер нельзя использовать.

Смотрел и Брезенхама и DDA, но все они строятся на дельте (разнице), которая может быть отрицательна. А отрицательных чисел у нас быть не может, ибо Byte. Как же быть???

Спасибо.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 11.08.2010, 16:04   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
которая может быть отрицательна.
Бери модуль, он положителен!
Abs(число) если не ошибаюсь
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 11.08.2010, 16:59   #3
Stepler
Форумчанин
 
Аватар для Stepler
 
Регистрация: 03.02.2008
Сообщений: 213
По умолчанию

Ну тогда появляется еше одна проблема, область для рисования ограничена 255х255, в таком случае без длинной арифметики не обойтись!

Цитата:
Смотрел и Брезенхама и DDA, но все они строятся на дельте (разнице), которая может быть отрицательна. А отрицательных чисел у нас быть не может, ибо Byte. Как же быть???
Вы где именно смотрели? На википедии есть пример такой функции там явно используется модуль разници двух значений.
Пишу программы на заказ, контакты под аватаром!
Отзывы тут
Stepler вне форума Ответить с цитированием
Старый 11.08.2010, 19:53   #4
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Цитата:
Сообщение от Stepler Посмотреть сообщение
Ну тогда появляется еше одна проблема, область для рисования ограничена 255х255, в таком случае без длинной арифметики не обойтись!
255x255 мне даже многовато )) Максимум нужно 128x64. Такой вот экранчик..

Цитата:
Вы где именно смотрели? На википедии есть пример такой функции там явно используется модуль разници двух значений.
Дык там и смотрел... Сейчас пойду еще раз вникну, но если не затруднит, ткните пальцем. И вы говорите модуль двух значений.. Но ведь сама процедура ABS оперирует с отрицательными числами внутри себя.. Представьте, что у меня такой функции (abs) нету. Совсем нету. И паскаль не знает что такое другие типы, кроме как Byte.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 11.08.2010, 21:11   #5
Stepler
Форумчанин
 
Аватар для Stepler
 
Регистрация: 03.02.2008
Сообщений: 213
По умолчанию

Цитата:
255x255 мне даже многовато )) Максимум нужно 128x64. Такой вот экранчик..
Хочу огорчить, минимальное разширение которое можно установить в паскаале 320x200 для драйверов CGA, MCGA, ATT400, для остальных драйверов еще выше. Так откуда взялся нужный вам максимум?) Разве если разсматривать часть экрана в допустимых чертах!

Цитата:
Дык там и смотрел... Сейчас пойду еще раз вникну, но если не затруднит, ткните пальцем.
Код:
 int deltax := abs(x1 - x0)
 int deltay := abs(y1 - y0)
Цитата:
И вы говорите модуль двух значений.. Но ведь сама процедура ABS оперирует с отрицательными числами внутри себя..
Оперирует с любыми числами, но результат всегда положительний!
Цитата:
Представьте, что у меня такой функции (abs) нету. Совсем нету. И паскаль не знает что такое другие типы, кроме как Byte.
Зачем настолько усложнять себе жизнь?)
Ну тогда действуем так
Код:
if a > b then rez := a - b
else rez := b - a;
Пишу программы на заказ, контакты под аватаром!
Отзывы тут
Stepler вне форума Ответить с цитированием
Старый 11.08.2010, 21:27   #6
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Цитата:
Сообщение от Stepler Посмотреть сообщение
Хочу огорчить, минимальное разширение которое можно установить в паскаале 320x200 для драйверов CGA, MCGA, ATT400, для остальных драйверов еще выше. Так откуда взялся нужный вам максимум?) Разве если разсматривать часть экрана в допустимых чертах!


Код:
 int deltax := abs(x1 - x0)
 int deltay := abs(y1 - y0)
Оперирует с любыми числами, но результат всегда положительний!

Зачем настолько усложнять себе жизнь?)
Ну тогда действуем так
Код:
if a > b then rez := a - b
else rez := b - a;
Ну считайте, что я пишу не под турбо паскаль а под свой собственный паскаль ) Мой компилятор пока не поддерживает другие типы, кроме как Byte. Реализовать их несколько затруднительно, потому как компилируемый код выполняется на совсем простеньком 8-битном процессоре (или даже скорее микроконтроллере). Памяти для программы всего 3,5 Kb. Стека нет (использую программную эмуляцию), деления/умножения нет (уже реализовал программно). А линию хочу рисовать - ну просто сделать демку небольшую, которая рисует треугольник Серпинского (кажется так ?). За вот это:
Код:
if a > b then rez := a - b
else rez := b - a;
спасибо, видимо у меня уже мозг залипает на токенах, лексическом анализаторе и генераторе кода ))) Попробуем как-нибуть так реализовать.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 12.08.2010, 00:28   #7
Stepler
Форумчанин
 
Аватар для Stepler
 
Регистрация: 03.02.2008
Сообщений: 213
По умолчанию

Зачем настолько насиловать себе мозг?) Почему на таком "пылесосе" не программируете на асм под архитектуру 8080, чтобы как говорится получить удовольствие по это самое....
Пишу программы на заказ, контакты под аватаром!
Отзывы тут
Stepler вне форума Ответить с цитированием
Старый 12.08.2010, 21:31   #8
Alm3n
 
Регистрация: 19.11.2009
Сообщений: 3
По умолчанию

а если использовать формулу для рисования линии.формулу можно при помощи интерполяции построить.но это вольное предположение,просто хотел опробовать такой метод построения прямых.не пинайте сильно
God is real,unless it's declared as integer;
Alm3n вне форума Ответить с цитированием
Старый 19.08.2010, 18:44   #9
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Цитата:
Сообщение от Stepler Посмотреть сообщение
Зачем настолько насиловать себе мозг?) Почему на таком "пылесосе" не программируете на асм под архитектуру 8080, чтобы как говорится получить удовольствие по это самое....
В том то весь и смысл, что сейчас я захотел написать свой первый в жизни компилятор. Раньше мне казалось, что это нереально сложно, но почитав немного Креншоу, решил попробовать. Насчет процессора я немного преувеличил, я создаю компилятор для CHIP-8. Это такой как-бы интерпретируемый язык, что-то типа современного джава байт-кода, только из 70-х годов. 16 восьмибитных регистров, основные логические операции, все совсем просто. Сначала я написал эмулятор для CHIP-8 (тоже первый эмулятор который я написал), а сейчас вот решил попробовать компилятор. Не менее кстати интересно, чем писать эмулятор, а может быть даже и более.

А на линии забил в итоге Нарисовал Серпинского простым xor'ом построчно.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 19.08.2010, 19:53   #10
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Эмулятор нереально глючит и тормозит, ну тормоза - ладно, но вот то, что он в 75% случаев стартует с пустым экраном и ничего не делает - полное безобразие
Изображения
Тип файла: png Untitled-1.png (4.7 Кб, 26 просмотров)
пыщь
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм Брезенхема для рисования эллипса vedro-compota Общие вопросы Delphi 4 24.05.2010 20:35
Средства для рисования LOST94 Общие вопросы C/C++ 2 07.05.2010 21:23
Порядок рисования объектов ? HWork Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 13.03.2010 07:47
Алгоритм построения линии по координатам. Alex Cones Свободное общение 6 15.11.2009 22:53
Скорость рисования графиков Master07 Общие вопросы C/C++ 3 16.07.2009 21:45