Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

The Case for Ruby

Name: Anonymous 2012-05-29 4:49

Ruby is the language that /prog/ should prefer and here is why:

1.  It is Japanese

Name: Anonymous 2012-05-29 16:57

NIPPON KUWEIRITII!

; d3texture 四角形面に画像を貼り付け (x-ary, y-ary, z-ary,  wid,  x, y, w, h,  div)
;-----------------------------------------------------------
#deffunc d3texture array aryx, array aryy, array aryz, int ppi, int ppx, int ppy, int ppw, int pph, int div

        ; 面を分割しない場合 (default)

    if div <= 1 {
        ; 4 隅を座標変換 (ary は double, int 両対応)
            repeat 4
                        vx = aryx(cnt)
                    vy = aryy(cnt)
            vz = aryz(cnt)
                    d3trans  vx, vy, vz

            if df = 0 : break ; 座標変換範囲外

                pdx(cnt) = dx
            pdy(cnt) = dy
        loop

        if df {
                psx = ppx, ppx+ppw-1, ppx+ppw-1, ppx
            psy = ppy, ppy,       ppy+pph-1, ppy+pph-1
            gsquare ppi, pdx, pdy, psx, psy
        }
        return
    }


    if div <= 1 {
        ; 4 隅を座標変換 (ary は double, int 両対応)
            repeat 4
                        vx = aryx(cnt)
                    vy = aryy(cnt)
            vz = aryz(cnt)
                    d3trans  vx, vy, vz

            if df = 0 : break ; 座標変換範囲外

                pdx(cnt) = dx
            pdy(cnt) = dy
        loop

        if df {
                psx = ppx, ppx+ppw-1, ppx+ppw-1, ppx
            psy = ppy, ppy,       ppy+pph-1, ppy+pph-1
            gsquare ppi, pdx, pdy, psx, psy
        }
        return
    }


    ; 面を分割して座標変換 & 描画
    ; Original code by Yuki

    pc = div + 1    ; 一辺の点の数(point count)
    fc = div * div  ; 分割した面の数(face count)

    ; 分割された各面の頂点を求める
    repeat pc * pc
        x = cnt\pc
        y = cnt/pc

        ; 各頂点の重み( factor 0, 1, 2, 3 )
        ; memo
        ;   f0      f1      f2      f3      sum
            ;  4 2 0   0 2 4   0 0 0   0 0 0   4 4 4
        ;  2 1 0   0 1 2   0 1 2   2 1 0   4 4 4
            ;  0 0 0   0 0 0   0 2 4   4 2 0   4 4 4

        f0 = (div-x) * (div-y)
        f1 = x * (div-y)
        f2 = x * y
        f3 = (div-x) * y

        ; 頂点の座標( vertex x,y,z )
        vx = (aryx(0)*f0 + aryx(1)*f1 + aryx(2)*f2 + aryx(3)*f3) / fc
        vy = (aryy(0)*f0 + aryy(1)*f1 + aryy(2)*f2 + aryy(3)*f3) / fc
        vz = (aryz(0)*f0 + aryz(1)*f1 + aryz(2)*f2 + aryz(3)*f3) / fc

            ; 頂点を座標変換( tranceformed vertex x,y,flg )
        d3trans vx, vy, vz,  tvx(cnt), tvy(cnt), dz,  tvf(cnt)
    loop

    ; 各面を描画

    pw = ppw - 1
    ph = pph - 1

    repeat div
        y = cnt

        ; 描画元 y 座標( paint source y )
        psy = y*ph/div + ppy, psy(0), (y+1)*ph/div + ppy, psy(2)

        repeat div
            x = cnt

                ; 面の各頂点を表す、tvx,y 上のインデックス( point 0, 1, 2, 3 )
                p0 = y * pc + x
                    p1 = p0 + 1
            p2 = p1 + pc
            p3 = p0 + pc

                    ; 全ての点が変換に成功していれば描画
            if tvf(p0) & tvf(p1) & tvf(p2) & tvf(p3) {

                            ; 描画先座標( paint destination x,y )
                pdx = tvx(p0), tvx(p1), tvx(p2), tvx(p3)
                            pdy = tvy(p0), tvy(p1), tvy(p2), tvy(p3)

                        ; 描画元 x 座標( paint source x )
                        psx = x*pw/div + ppx, (x+1)*pw/div + ppx, psx(1), psx(0)

                        gsquare ppi, pdx, pdy, psx, psy
                }
        loop
    loop

    return

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List