|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.12.2014, 11:14 | #1 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Эллипс в DOS (masm, tasm, fasm)
Давайте устроим мини-компо - 65 тысяч раз выводим на экран эллипс, замеряем тики в начале цикла и в конце, у кого изящнее и быстрее - тот и победил
Последний раз редактировалось Mikl___; 12.12.2014 в 13:07. |
12.12.2014, 13:07 | #2 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Это чтобы было от чего оттолкнуться
Код:
|
12.12.2014, 13:18 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Mikl___, а что, кто-то будет с Вами соревноваться?!
я лично - нет! |
12.12.2014, 13:42 | #4 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Serge_Bliznykov,
попробуйте - истина рождается в споре, текст в #2 это нижняя планка, подсказываю - основные тормоза это FPU-вычисления и по-точечный вывод на экран |
12.12.2014, 14:54 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Ничего удивительного.
I'm learning to live...
|
|
12.12.2014, 18:30 | #6 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Попытка номер два
строим эллипс инкрементируя Х от –b до 0, а для получения Y используем уравнение эллипса X^2/A^2+Y^2/B^2=1 откуда Y=B√(1–X^2/A^2), для скорости и используя симметрию выводим на экран через Set4Pixels сразу по четыре точки, все лишнее из цикла убрано, и так как умножение, по-любому, быстрее деления заменяем деление на A^2 умножением на 1/A^2. При построении смотрим не получился ли разрыв между точками и если Y(X) – Y(X-1) > 1, тогда строим линию с координатами (X-1, Y(X-1)) и (X-1, Y(X)). Код:
Последний раз редактировалось Mikl___; 12.12.2014 в 18:38. |
12.12.2014, 18:36 | #7 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Заменяем вещественную арифметику на целочисленную. Строим эллипс по алгоритму Брезенхейма.
Код:
|
12.12.2014, 18:45 | #8 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
немного упростим реализацию алгоритма Брезенхейма
Код:
|
13.12.2014, 08:36 | #9 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Еще упростим алгоритм Брезенхейма
Код:
Код:
Последний раз редактировалось Mikl___; 13.12.2014 в 08:49. |
13.12.2014, 08:41 | #10 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Отделим мух от котлет
алгоритм Брезенхейма на каждом шаге вычисляет положение точки, затем происходит вывод этой точки на экран и вычисление координат продолжается. Разделим создание эллипса на два этапа. Вычисление координат и рисование эллипса. Кроме того, если присмотреться, точки эллипса образуют набор вертикальных и горизонтальных линий разной длины смещенных относительно друг друга на один пиксель. Вычисляем длину каждой линии, которую потом поместим в массив ArrayX для горизонтальных и ArrayY для вертикальных линий, значения из массивов из-за симметрии будем читать или от начала к концу или от конца к началу. При этом явно задаются координаты только первой точки (в этом примере x=0 y=a) Код:
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Fasm и Masm | Arsenx777 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 27.06.2011 12:26 |
Из masm в fasm ( К среде ) | Sobaka_ru | Помощь студентам | 0 | 12.12.2010 15:43 |
tasm>>fasm | better | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 11 | 09.02.2009 19:34 |
Обьясните различия между - FASM, WASM, VASM, MASM, TASM | Amancha | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 9 | 17.01.2009 15:38 |
Чем отличается Tasm от Masm | veter_s_morya | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 17 | 21.07.2008 16:55 |