User Tag List

Страница 30 из 113 ПерваяПервая ... 262728293031323334 ... ПоследняяПоследняя
Показано с 291 по 300 из 1128

Тема: ЭТЮДЫ

  1. #291

    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от zebest Посмотреть сообщение
    выходит 16128 тактов твоя процедура жрет.
    проще подготовить 6 фаз и кидать на экран по очереди.

  2. #292

    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ну да.

  3. #293

    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попалось мне быстрое умножение:
    Код:
    Fast multiply: don't blink or you'll miss it.
    
    Let f(x) = x^2 / 4.  Then
    
    		a*b = f(a+b) - f(a-b)
    
    Thus with a table of squares you can do integer multiplies very quickly.
    To see an implementation of this algorithm, see C=Hacking.
    вот только я никак не соображу, как реализовать это.

  4. #294

    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SoftLight, приятно, что понял, о чем я говорю.
    по идее, можно сделать два лукапа:
    256 байт - это младший байт x*x/4
    256 байт - это старший байт x*x/4

    и потом выходит полный трэшак, если реализовать такое быстрое умножение..


    а на потом есть еще один интересный алгоритм, на котором я залип

  5. #295

    Регистрация
    15.01.2005
    Адрес
    Novomoskovsk
    Сообщений
    182
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    Попалось мне быстрое умножение:
    Код:
    Fast multiply: don't blink or you'll miss it.
    
    Let f(x) = x^2 / 4.  Then
    
    		a*b = f(a+b) - f(a-b)
    
    Thus with a table of squares you can do integer multiplies very quickly.
    To see an implementation of this algorithm, see C=Hacking.
    Я тут вспомнил про свою статью для Demo or Die 2000 года

    Код:
    Табличное умножение 8*8 с учетом знака.
    ------------------------------------------
    
    Умножение производится на основе одной из
    формул сокращенного умножения,в частности:
    
     (a-b)(a+b)=a^2-b^2
    
    Пусть:   ┌──
             │ X=a-b
             │ Y=a+b
             └──
    
    Решая эту систему уравнений получим:
    
            a=(X+Y)/2
            b=(Y-X)/2
    
     Тогда произведение X и Y будет определять
    ся из выражения:
    
          X*Y=a^2-b^2=((X+Y)^2 - (Y-X)^2) / 4
    
     Это может выглядеть например так:
    
     IMUL_HL=D*E
    ;----------------------------------
    ;  IN: H=TB_XX/256
    ;      D=X[-128,127]
    ;      E=Y[-128,127]
    ;      BC-NoT USED
    ;  OUT:HL=D*E
    ;      A=0 !
    ;----------------------------------
    imul
    ;----------------------------------
       ld h,tb_xx[
    ;----------------------------------
       ld a,e
       sub d               ; y-x
       ld l,a
       ld a,e              ; y
       add a,d             ; x+y
       ld e,(hl)
       inc h
       ld d,(hl)           ; (y-x)^2
       ld l,a
       ld a,(hl)
       dec h
       ld l,(hl)
       ld h,a              ; (x+y)^2
       xor a ;... может кому пригодится? :)
       sbc hl,de
    ;----------------------------------
       ret
    
    min/max=83 tps (без учета RET)
    
     Структура    таблицы    TB_XX    (таблица
    квадратов чисел от -128 до 127) аналогична
    структуре  таблицs  описанной  в  Spectrum
    Expert#1  -  имеет  рaзмер  256*16  бит, с
    учетом  знaкa числa. Единственное отличие,
    в   таблице  хранятся  квадраты  чисел/4
    Тaблицa  оргaнизовaнa  следующим  образом:
    млaдшие  бaйты  лежaт  в первом сегменте,a
    стaршие в следующем (т.е. по смещению 256)
    
    
     Процедура генерации несколько отличается
    от приведенной в SE#1.(Процедура крайне не
    оптимизирована, но все же более компактна и
    быстродейственна)
    
    ;gen_table x*x   x=(-128;127)
    ;--------------------------------
    gen_xx  ld hl,tb_xx
            ld d,l,e,l
            ld bc,de
    lp1     ld (hl),e
            inc h
            ld (hl),d
            dec h
            ex de,hl
            inc bc
            add hl,bc
            inc bc
            ex de,hl
            inc l
            jp p,lp1
            ld de,hl
    lp2     ld a,(hl)
            ld (de),a
            inc d,h
            ld a,(hl)
            ld (de),a
            dec d,h
            inc e
            dec l
            jr nz,lp2
            ret
    ----------------------------
    37b


    ---------- Post added at 09:48 ---------- Previous post was at 09:31 ----------

    Это была вторая часть статьи, а начало статьи было примерно таким.
    Код:
         Вычисление площади треугольника
                матричным методом
    ──────────────────────────────────────────
    (c) raid`00
    
    
     Пусть A(x1,y1),B(x2,y2),C(x3,y3)-вершины
    треугольника,площадь которого определяется
    из выражения:
    
                ┌              ┐
                │ x1-x3  y1-y3 │
         S=+-1/2│              │ (1)
                │ x2-x3  y2-y3 │
                └              ┘
    
        Выражение,находящиеся  в  правой части
    уравнения  представляет собой определитель
    второго порядка.
    Тем,   кто   еще  не  знаком  с  матричной
    алгеброй  (или  по  каким-то  причинам уже
    успел  забыть  ;)  напомню,  что  решением
    уравнения (1), будет выражение:
    
    S=+-(1/2)*((x1-x3)*(y2-y3)-(y1-y3)*(x2-x3))
    
        Минус перед 1/2 берется в случаи,когда
    получившийся   определитель  имеет  отрица
    тельное значение, в противном случаи плюс.
    
    ;----------------------------------
    ;  IN:  H=COORD_TAB[
    ;  Формат таблицы:
    ;       x1,x2,x3,y1,y2,3:[-128,127]
    ;  OUT: HL-площадь треугольника
    ;       в кв.пикселах :)
    ;----------------------------------
            ld a,(hl):inc l         ;*
            ld b,(hl):inc l         ;*
            ld c,(hl):inc l         ;*
            sub c                   ;*
            ld d,a                  ;*
            ld a,b                  ;*
            sub c                   ;*
            ld c,a                  ;*
            ld b,(hl):inc l         ;*
            ld a,(hl):inc l         ;*
            ld l,(hl)               ;*
            sub l                   ;*
            ld e,a                  ;*
            ld a,b                  ;*
            sub c                   ;*
            ld b,a                  ;*
            call IMUL  ; см.ниже
            ld de,bc
            ld bc,hl
            call IMUL
            ld de,bc
            or a:sbc hl,de
            inc h
            dec h
            jp p,loop1
            ex de,hl
            ld h,a     ;обнуляется в IMUL!!!
            ld l,a
            or a:sbc hl,de
    loop1   srl h:rr l
            ret
    
      Возможен случай,когда координаты вершин
    получаются в результате вычислений, при
    этом  координаты  задаются   через  регис
    тры. Для этого,участок отмеченный звездоч
    ками  нужно заменить на следующий:
    
    ;---------------------------------
    ;  IN: A-X1   D-Y1
    ;      B-X2   H-Y2
    ;      C-X3   L-Y3
    ;---------------------------------
            sub c
            ld e,a
            ld a,b
            sub c
            ld c,a
            ld a,d
            sub l
            ld b,a
            ld a,h
            sub l
            ld d,a
    Последний раз редактировалось rajdee; 21.04.2014 в 11:38.

  6. #296

    Регистрация
    28.02.2005
    Адрес
    Москва
    Сообщений
    2,246
    Спасибо Благодарностей отдано 
    995
    Спасибо Благодарностей получено 
    620
    Поблагодарили
    336 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Засунул генерилку таблицы gen_table в ужасм и потестил, и вот что-то она мне возвращает таблицу длиной 96 чисел только вместо 256 ( а стоп, надо просто tb_xx задать началом параграфа, типа $c000 ))
    Последний раз редактировалось SoftLight; 21.04.2014 в 11:57.

  7. #297

    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Наткнулся на вот такое:
    Retro Programming: Plotting the Mandelbrot Set on the ZX Spectrum

    это достойно, я считаю.

  8. #298

    Регистрация
    06.04.2005
    Адрес
    Земля, Москва, Марьино
    Сообщений
    21,509
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от denpopov Посмотреть сообщение
    Наткнулся на вот такое:
    Retro Programming: Plotting the Mandelbrot Set on the ZX Spectrum

    это достойно, я считаю.
    А этот сперматазойд может постоянно менятся ка каледоскоп в реалтайме?

  9. #299

    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от AAA Посмотреть сообщение
    А этот сперматазойд может постоянно менятся ка каледоскоп в реалтайме?
    у тебя есть архив дем, ищи знакомую картинку по тегу fractals,mandelzoom. Зря люди старались, что ли?

  10. #300

    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,596
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    denpopov, AAA, AloneCoder делал фрактальчик атрибутный

Страница 30 из 113 ПерваяПервая ... 262728293031323334 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Этюды: как бы написать поизящнее.
    от AndTorp в разделе Программирование
    Ответов: 5
    Последнее: 17.03.2008, 00:43
  2. Ответов: 0
    Последнее: 18.08.2006, 22:40
  3. Этюды: печать шрифтом 5x5...
    от breeze в разделе Программирование
    Ответов: 12
    Последнее: 27.03.2005, 05:21

Метки этой темы

Ваши права

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