User Tag List

Страница 9 из 11 ПерваяПервая ... 567891011 ПоследняяПоследняя
Показано с 81 по 90 из 106

Тема: Line(x1,y1,x2,y2)

  1. #81
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    365
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    для случая dx>dy
    Код:
      for n=1 to var1 ;выделяем 4 итерации для алгоритма брезенхейма
        inc(x)
        err = err+dy
        if err >= dx then
          err=err-dx
          inc(y)
          end if
        next n
      result x0+x,y0+y
    но это только для одной четрерти )) - для остальных четвертей нужно одну из координат увеличивать а другую уменьшать - ну и в пределах каждой четверти у алгоритма две ветки.

    Цитата Сообщение от Destr Посмотреть сообщение
    Но если var1=1 (т.е нужно сделать один шаг) то лажает.
    var1 и не нужно делать 1 - собственно ради этого всё и затевалось )
    Последний раз редактировалось shurik-ua; 20.09.2015 в 21:38.

  2. #82
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,804
    Спасибо Благодарностей отдано 
    253
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shurik-ua Посмотреть сообщение
    но это только для одной четрерти )) - для остальных четвертей нужно одну из координат увеличивать а другую уменьшать - ну и в пределах каждой четверти у алгоритма две ветки.
    Да знаю я, писал линию.
    Цитата Сообщение от shurik-ua Посмотреть сообщение
    var1 и не нужно делать 1 - собственно ради этого всё и затевалось )
    Нужно чтоб шаг можно было делать 1 пиксель.
    Т.е не 4 итерации а 1.
    Но для брезенхема нужно сохранять err иначе лажа.
    Значит не подходит.
    Как ещё можно высчитать этот чёртов шаг?

  3. #83
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    365
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Как ещё можно высчитать этот чёртов шаг?
    никак - потому что за 1 приращение Y ты нигде не сохранишь 0.5 приращения к Х.
    объясни лучше зачем стремиться чтоб var1 был 1 - он при значениях 2-8 будет проявлять себя практически одинаково. при больших значениях 20-50 уже будет видна ступенчатость в движении.

  4. #84
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,804
    Спасибо Благодарностей отдано 
    253
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shurik-ua Посмотреть сообщение
    объясни лучше зачем стремиться чтоб var1 был 1
    Потому что на основе этой процедуры (стремление к целевой точке) будет не только метла двигатся (которая ещё туда-сюда сойдёт если по 2-3 пиксела шаг), но и ещё куча других действий (не столь явных, но там уже надо шаг - по пикселу. Или один пиксел по x или один по y или и то и другое - т.е. диагональ)
    Надо что-то придумать, согласен даже на всякие деления-умножения, но процедура возможна (если бы знал как - то не спрашивал бы, поэтому и надеюсь что кто-нибудь подкованый в математике подскажет что надо на что поделить чтоб получить этот самый k и как его интерпретировать чтоб сдвинуть в нужную сторону)

  5. #85
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,804
    Спасибо Благодарностей отдано 
    253
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    Ну и еще придется хранить дробную часть в координате.
    Дробные части у координат есть.
    Цитата Сообщение от krt17 Посмотреть сообщение
    Если хочется побыстрее то можно составить округленную, скажем до 8, табличку с единичными смещениями. Все зависит от количества тактов свободных, на крайняк можно и по 8 направления двигаться.
    Так расскажи как это?
    Тактов как всегда мало, но не думаю что тут надо что-то запредельное... Тысчонок 2-3 я думаю хватит за глаза и за уши.

  6. #86
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,804
    Спасибо Благодарностей отдано 
    253
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Вроде как стремится бежать куда надо, но как-то криво.
    Или это я лажанулся?
    Исходник тоже в архиве, но если лень смотреть то кусок кода который вычисляет приращение:
    Код:
    STEP	EQU 4
    	LD BC,(COOR1),DE,(COOR2):CALL VECTOR
    	LD H,STEP:CALL MULS	; dY
    	PUSH HL
    	LD H,STEP,E,C:CALL MULS	; dX
    	LD BC,(COOR1)
    	LD A,B:ADD A,H:LD B,A
    	POP HL
    	LD A,C:ADD A,H:LD C,A
    	LD (COOR1),BC
    .....
    MULS    ; HL=H*E (+-)
    	LD L,0,D,L,A,H:XOR E:EXA
    	LD A,H:NEG:JP M,$+4:LD H,A
    	LD A,E:NEG:JP M,$+4:LD E,A
    	DUP 8:ADD HL,HL:JR NC,$+3:ADD HL,DE:EDUP
    	EXA:RET P:EX DE,HL:LD L,H
    	SBC HL,DE:RET
    Вложения Вложения

  7. #87
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,758
    Спасибо Благодарностей отдано 
    285
    Спасибо Благодарностей получено 
    293
    Поблагодарили
    220 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Destr, у тебя если dx или dy = 0 то улетает не туда
    С уважением,
    Jerri / Red Triangle.

  8. #88
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,804
    Спасибо Благодарностей отдано 
    253
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    Destr, у тебя если dx или dy = 0 то улетает не туда
    Ну дык...
    Как это пофиксить?
    Или может неправильно табличка генерится (я-то sjasm компилю, а писано изначально на чём-то другом вроде. a80 было расширение).

    ---------- Post added at 11:28 ---------- Previous post was at 10:13 ----------

    Тэкс, процедуру krt17, вроде заставил работать (забыл поначалу учитывать дробную часть).
    Премного благодарен!

  9. #89
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,804
    Спасибо Благодарностей отдано 
    253
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    Там sjasm только, я других не знаю в которых ула встроена. Улетало не туда потому как 128 это не -128 для этого есть старший байт он только для знака добавлен. Можно уменьшить точность до 64, либо учитывать оба байта.
    Ну я уже прикрутил как есть.
    Вроде работает (во вложении кот и метла, управление курсором)
    Вложения Вложения

  10. #90
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    365
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    Ну я уже прикрутил как есть.
    фиолетовый бордер - это процедура от krt17 ?

Страница 9 из 11 ПерваяПервая ... 567891011 ПоследняяПоследняя

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

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

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

Ваши права

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