User Tag List

Страница 1 из 5 12345 ПоследняяПоследняя
Показано с 1 по 10 из 52

Тема: В общем-то про линию

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,821
    Спасибо Благодарностей отдано 
    273
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию В общем-то про линию

    "Святой отец, они сделали меня грешником!" (копирихт) кино "Код Да Винчи" (слабенькая экранизация одного из оргазмов Дена Брауна, вот уж у кого нашим-бы лунонавтам поучится...)

    Итак, Метод средней точки оказался очень производительным (на те времена оказывается), насколько-же неприменим в чистом первозданном виде, это и сбило меня с толку на нехилых 10 лет, просил помощи на форуме но так внятно и не объяснил НИКТО, хотя пытались, у меня не хватило подготовки понять.
    Статья в Повере - выдержала кучу перепечаток, но всё-таки нашлась та самая дема (у ААА на сайте) которая и пролила свет - о чём там бредят, ибо код почти не рабочий приведён, пришлось тоже восстанавливать...
    Но тоже не то... Барахло...
    Наконец-то научился вращать "сразу всю вселенную" (ну аллюзия на заявленое "Основная суть данного метода состоит в том, что вращается не каждая точка в отдельности, а сразу целая плоскость")
    Очень хочется надеятся что не знал я потому-что форумчане тоже не знали, или почему молчали?
    Ладно, сейчас интересней линия, на данный момент 0 октант рисуется матрицей описаной в том-же Spectrum Expert #01, самый что ни на есть Брезенхем-Хорн, но только со стеком, ибо скорость сравнима вполне (с заявленым методом) а объёмы в разы меньше, но только в 0 и 3 октантах.

    Код:
    ;[ октант 0
    ;кв 0 bc=line_start, de=line_end
    	ld (l_end+1),sp
    	; установка ловушки (по X конца)
    quad0	ld sp,jp_q0:ld l,e,h,0:add hl,hl:add hl,sp:ld sp,hl
    	pop hl,hl:ld (trap+1),hl:ld hl,trap:push hl
    
    	; установка точки входа (по X начала)
    	ld sp,jp_q0:ld l,c,h,0:add hl,hl:add hl,sp:ld sp,hl
    	
    	ld a,d:sub b:ld d,a	; дельта Y
    	ld a,e:sub c:ld e,a	; X
    
    	LD L,B,H,high DOT_TAB,A,(HL):INC H
    	LD b,(HL):INC H:LD L,C
    	ADD A,(HL):LD l,A	;:INC H:LD A,(DE):XOR (HL):LD (DE),A
    	ld h,b
    	ld a,e:srl a
    	ld b,7	; это чтоб сэкономить на and после inc h
    	ret	; переход к отрисовке первой точки
    
    q0_p7	set 7,(hl):sub d:ret nc:add a,e:inc h:ld c,a:ld a,h:and b:ld a,c:ret nz:ld a,l:sub #e0:ld l,a:sbc a,a:and #f8:add a,h:ld h,a:ld a,c:ret
    q0_p6	set 6,(hl):sub d:ret nc:add a,e:inc h:ld c,a:ld a,h:and b:ld a,c:ret nz:ld a,l:sub #e0:ld l,a:sbc a,a:and #f8:add a,h:ld h,a:ld a,c:ret
    q0_p5	set 5,(hl):sub d:ret nc:add a,e:inc h:ld c,a:ld a,h:and b:ld a,c:ret nz:ld a,l:sub #e0:ld l,a:sbc a,a:and #f8:add a,h:ld h,a:ld a,c:ret
    q0_p4	set 4,(hl):sub d:ret nc:add a,e:inc h:ld c,a:ld a,h:and b:ld a,c:ret nz:ld a,l:sub #e0:ld l,a:sbc a,a:and #f8:add a,h:ld h,a:ld a,c:ret
    q0_p3	set 3,(hl):sub d:ret nc:add a,e:inc h:ld c,a:ld a,h:and b:ld a,c:ret nz:ld a,l:sub #e0:ld l,a:sbc a,a:and #f8:add a,h:ld h,a:ld a,c:ret
    q0_p2	set 2,(hl):sub d:ret nc:add a,e:inc h:ld c,a:ld a,h:and b:ld a,c:ret nz:ld a,l:sub #e0:ld l,a:sbc a,a:and #f8:add a,h:ld h,a:ld a,c:ret
    q0_p1	set 1,(hl):sub d:ret nc:add a,e:inc h:ld c,a:ld a,h:and b:ld a,c:ret nz:ld a,l:sub #e0:ld l,a:sbc a,a:and #f8:add a,h:ld h,a:ld a,c:ret
    q0_p0	set 0,(hl):inc l:sub d:ret nc:add a,e:inc h:ld c,a:ld a,h:and b:ld a,c:ret nz:ld a,l:sub #e0:ld l,a:sbc a,a:and #f8:add a,h:ld h,a:ld a,c:ret
    
    trap	ld hl,0:push hl
    l_end	ld sp,0:ret
    
    jp_q0	; стек для ретов, октант 0, сюда надо правильно войти и правильно поставить ловушку
    	dup 32
    		dw q0_p7, q0_p6, q0_p5, q0_p4, q0_p3, q0_p2, q0_p1, q0_p0
    	edup
    ;]
    Как бы сделать так-же для вертикального перемещения? (для 1 и 2 октантов)
    Последний раз редактировалось Destr; 24.04.2019 в 13:16.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,450
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    162
    Поблагодарили
    119 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если копаешься в демах, то посмотри на код в Quantum gardening Crack Intro и Paranoia Megademo
    Рисование на экране сожрет массу времени - переходы по линиям и очистка экрана, удобнее использовать буфер, рисовать в нем и стирать после вывода на экран. И на сладкое

  4. #3

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,821
    Спасибо Благодарностей отдано 
    273
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    NEO, братка, при таком подходе исчезает необходимость что-либо считать, спек этого не умеет (но чтоб осознать этот факт - потребовались труды-усилья Инфоркома, newart, и даже KSA)
    Алоний-кодер - самый наш лучший астрофизик (ну спек-математик, ладно поясню) - глубокоуважаемый и почитаемый авторитет почему-то заинтересовался моим подходом, что делает мою работу осмысленой и не намерен прерывать, но спек оказался тем электроном который "Ибо он неисчерпаем!" (с) ВИЛ (а так-же примнкнувшие к этому Шепиловы...)
    А математика оказалась куда как проще чем 1+0
    Восхищён и давай подумаем как это правильно прикрутить, ну тест-модель спека очень даже подходит!
    (тут где-то был SamStyle - очень грамотный спец в этой области, давайте ребята обучатся, чтоб ALKO не плодил такой ереси, раз умеем и знаем как можно сделать грамотней и аккуратней...)

    - - - Добавлено - - -

    Спасибо, Шин, ты остался коньюктурщиком, ты наша база знаний, ты всё делаешь как надо, спасибо (нет под твоей авой кнопки "Поблагодарить" - Почему? ХЗ)

    - - - Добавлено - - -

    Интересен код, да, в "Программа исследования неверных подходов" - очень показателтьно, да, хорошо Спасибо ребятам чтоб мы так не делали, не считали в "в лоб"

    - - - Добавлено - - -

    Любая метка, пусть даже временный .loop - вообще неприемлема!
    (и это ни разу не значит что если надо сделать GO TO - оно будет сделано...)

    - - - Добавлено - - -

    Конечно, функциональщики...!!!!

  5. #4

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,450
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    162
    Поблагодарили
    119 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а с поворотом будет самое веселое

  6. #5

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    во-1, нафига еще один самостоятельный тред про линию? их уже как минимум было два:
    https://zx-pk.ru/threads/11661-o-ris...-pryamykh.html
    https://zx-pk.ru/threads/5905-line(x1-y1-x2-y2).html

    во-2, цель была какая? размеры, скорость? и какие результаты В ЦИФРАХ, а не словами про "сравнимое" что-то с чем-то
    Прихожу без разрешения, сею смерть и разрушение...

  7. #6

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,821
    Спасибо Благодарностей отдано 
    273
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    во-1, нафига еще один самостоятельный тред про линию? их уже как минимум было два:
    https://zx-pk.ru/threads/11661-o-ris...-pryamykh.html
    https://zx-pk.ru/threads/5905-line(x1-y1-x2-y2).html
    во-2, цель была какая? размеры, скорость? и какие результаты В ЦИФРАХ, а не словами про "сравнимое" что-то с чем-то
    Сделать одним тредом мне отказали, ибо у нас тут не база знаний а просто трёп оказывается, а цель - во фрейм (всё-таки 3D мир, всё достижимо вполне кроме врагов, спрайты не уложить в честный фрейм, ну всё-равно спрайт, у которого пиксель разворачивается в размер экрана - ну никак не отобразить вовремя, разные люди решали это разными хитростями, я просто решил что такое ВООБЩЕ отрисовывать не нужно, но об этом потом)
    Цифры-размеры-скорость?
    Для простоты берём устройство Z80 и ориентируемся под его функционал, вполне хватит...

    - - - Добавлено - - -

    Цитата Сообщение от Shiny Посмотреть сообщение
    а с поворотом будет самое веселое
    Не будет, оказалось что при разрядности в 8 бит - все повороты (а так-же пересечения, клиппирования и проецирования) прекрасно предпросчитываются, больше не надо боятся таблички размерностью в килобайт, это очень немного оказывается
    Последний раз редактировалось Destr; 25.04.2019 в 02:55.

  8. #7

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Destr, ты всё пытаешься 3д рисовать линиями? ты Вольфа хочешь или дум линиями?
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  9. #8

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,821
    Спасибо Благодарностей отдано 
    273
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    Destr, ты всё пытаешься 3д рисовать линиями? ты Вольфа хочешь или дум линиями?
    Дум (не такой), а другой, по мотивам (но ни-разу не по картинке, которая там в деме)
    Только точки прекрасно и шустро клиппируются
    ("Святой отец, они сделали меня математиком!")

    - - - Добавлено - - -

    Вообще фишка линии приведёной - прыжки по стеку (из ret состоящие кусочки эти, и заранее сформированый стек, кстати была идея рисовать объект по заранее просчитаному стеку, ну чтоб в конечном виде свелось всё к классическому LD HL,#NNNN:PUSH HL, но оказалось что проще вообще хранить все состояния спек-экрана, массив мерностью в #1800, без атрибутов если, и вовремя подпихивать картинку пользователю, который там жмёт кнопки и не догадывается даже что вся математика давно кончилась и идёт просто видеоигра, интерактивная).
    Конечно никаких объёмов памяти-диска-hdd или стриммера на такое не хватит, но у нас не слишком-то большое число комбинаций (6144 байта - это конечное и вполне исчислимое, не число Грэма, слава Аллаху)
    И оказалось что 64 - вполне себе руль, тот самый ZX-константа, но вообще рулит 128, в такой блок можно упаковать что угодно, вот извлечь порой проблема, да
    Вот с вертикальным шагом по экрану плоховато, да...

    - - - Добавлено - - -

    Блин, спалил все секреты игроделов, а демо-мейкеры теперь мне плюнут в рожу...

    - - - Добавлено - - -

    А вообще в 128кб-модели любой код сводится просто к куче OUT
    Ну вот так и лежит в памяти OUT адрес, байт...
    Так и оказывается работает любой процессор...

    Чёрт, вместо обменивания идеями мой пост превратился в статью из научно-популярного издания...

    Не, речь о другом - как шагать по-вертикали в условиях адресного пространства отображаемой видеопамяти ZX-совместимых платформ?

    Почему вопрос возник снова?
    Программируя PLC достославной фирмы Siemens (Step7, WinCC, TIA_Portal и примнкнувший к ним InTouch) - столкнулся с проблемой отрисовки линии.
    Распотрошив всё и вся оборудование на лабораторном столе обнаружил генетическое сходство (ну да, прям как спектрум!) - значит решение всех проблем лежит на инженерном уровне...
    Так, задача ясна, быстренько прокачиваемся до инженера, изучаем математику, физику, чуток химии (паять ведь придётся, и немало!)...
    И общаемся с форумчанами, они это уже проходили...

    Все эти усилия только для одного - очень хочется поиграть ещё раз в тот 3D-шутер на спеке, который увидел однажды во сне, в 1997 году, векторный, пока ещё без атрибутов...
    Последний раз редактировалось Destr; 25.04.2019 в 04:48.

  10. #9

    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,450
    Записей в дневнике
    42
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    162
    Поблагодарили
    119 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Не будет, оказалось что при разрядности в 8 бит - все повороты (а так-же пересечения, клиппирования и проецирования) прекрасно предпросчитываются, больше не надо боятся таблички размерностью в килобайт, это очень немного оказывается
    я в Disney MD извращался по-другому, места не хватало. Интересен этот тред

  11. #10

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Сделать одним тредом мне отказали, ибо у нас тут не база знаний а просто трёп оказывается,
    ага, многое оказывается трёпом, если не читают старые темы
    "база знаний" всё-таки не "свалка велосипедов"

    Цитата Сообщение от Destr Посмотреть сообщение
    а цель - во фрейм
    ЧТО "во фрейм"? сколько и каких объектов, куда рисуем? в теневой экран или в буфер каких размеров?
    между прочим, одна только лишь очистка неактивного экрана сожрёт полфрейма

    Цитата Сообщение от Destr Посмотреть сообщение
    Цифры-размеры-скорость?
    Для простоты берём устройство Z80 и ориентируемся под его функционал, вполне хватит...
    лирика какая-то ни о чём
    первое, что надо делать - это считать

    - - - Добавлено - - -

    а по поводу кода, вот здесь вижу лишние три команды, зачем эти переброски между регистрами?
    Цитата Сообщение от Destr Посмотреть сообщение
    :inc h:ld c,a:ld a,h:and b:ld a,c:ret nz:
    когда можно просто в b декрементить счётчик от 8 до 0 или инкрементить от f8 до 0
    потом ниже тоже, может быть, получится сократить
    Прихожу без разрешения, сею смерть и разрушение...

Страница 1 из 5 12345 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Всякое про эмуляторы (из темы про EmuZWin hack)
    от Shiny в разделе Эмуляторы
    Ответов: 15
    Последнее: 20.09.2017, 00:40
  2. Ответов: 5
    Последнее: 22.03.2011, 13:00

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •