Skip to content

fitur matrix transformation #27

Description

@iingLK

Mungkin dalam waktu lama (tidak dekat) perlu diciptakan matrix transformasi 2D dan 3D. Untuk bisa ngebackup pemahaman terkait linear algebra. matrix rotasi ama matrix scale cukup mudah untuk diimplementasikan (2D).

Ini bisa diimplementasikan untuk rotasi sign convention yang sering ditemui saat cross-software dari struktur ke geotek.

Untuk saat ini, baru ini yang bisa dicoba

=LET(
    dg, H27,
    sca, G27,
    input, I27:J27,
    rd, RADIANS(dg),
    c, COS(rd),
    s, SIN(rd),
    rot, VSTACK(HSTACK(c, -s), HSTACK(s, c)),
    scale, VSTACK(HSTACK(sca, 0), HSTACK(0, sca)),
    transf, MMULT(rot, scale),
    TRANSPOSE(MMULT(transf, TRANSPOSE(input)))
)

Activity

  1. iingLK commented on Mar 21, 2023

    @iingLK
    Author

    Yang mungkin perlu diprioritaskan kemungkinan besar:

    1. Rotasi Transformasi Linier 3D. Untuk kepentingan perputaran sumbu sign convention 3x3

    Catatan (yang udah ada di uteuk):

    • Masuk dalam Linear Transformation
    • Origin tetap
    • Grid sejajar dan spasi sama
    • Kemungkinan besar akan ada manual.feid nya terkait sign convention general dan rotasi transformasi
    • Penjelasan RGB, XYZ, def + CCW
    • Disarankan saat dari str ke geo, diputar terhadap sumbu Y ccw270 supaya Y nya tetap (arah transversal,asumsi x selalu longitudinal di str).
  2. iingLK commented on Mar 25, 2023

    @iingLK
    Author

    Untuk yang 3D, bisa pakai ini, dibawah ini contoh untuk mengluarkan matrix rotasi tranformasi 3D terhadap sumbu Y CCW 270 degree,

    =LAMBDA(dx, dy, dz,
        LET(
            anglex, RADIANS(dx),
            angley, RADIANS(dy),
            anglez, RADIANS(dz),
            cx, COS(anglex),
            sx, SIN(anglex),
            rotx, VSTACK(
                HSTACK(1, 0, 0),
                HSTACK(0, cx, -sx),
                HSTACK(0, sx, cx)
            ),
            cy, COS(angley),
            sy, SIN(angley),
            roty, VSTACK(
                HSTACK(cy, 0, -sy),
                HSTACK(0, 1, 0),
                HSTACK(sy, 0, cy)
            ),
            cz, COS(anglez),
            sz, SIN(anglez),
            rotz, VSTACK(
                HSTACK(cz, -sz, 0),
                HSTACK(sz, cz, 0),
                HSTACK(0, 0, 1)
            ),
            rotm, MMULT(MMULT(rotx, roty), rotz),
            rotm
        )
    )(0, N18, 0)
    
  3. iingLK commented on Mar 25, 2023

    @iingLK
    Author

    Catatan: untuk yang fungsi scale kayaknya akan di drop. karena gak perlu2 amat.

    Untuk versi langsung masuk ke Module via advanced formula editor, atau pakai define name,

    // --- Workbook module ---
    // A file of name definitions of the form:
    //    name = definition;
    rot3d = LAMBDA(dx, dy, dz,
        LET(
            anglex, RADIANS(dx),
            angley, RADIANS(dy),
            anglez, RADIANS(dz),
            cx, COS(anglex),
            sx, SIN(anglex),
            rotx, VSTACK(
                HSTACK(1, 0, 0),
                HSTACK(0, cx, -sx),
                HSTACK(0, sx, cx)
            ),
            cy, COS(angley),
            sy, SIN(angley),
            roty, VSTACK(
                HSTACK(cy, 0, -sy),
                HSTACK(0, 1, 0),
                HSTACK(sy, 0, cy)
            ),
            cz, COS(anglez),
            sz, SIN(anglez),
            rotz, VSTACK(
                HSTACK(cz, -sz, 0),
                HSTACK(sz, cz, 0),
                HSTACK(0, 0, 1)
            ),
            rotm, MMULT(MMULT(rotx, roty), rotz),
            rotm
        )
    );
    
    rot2d = lambda(
        angle,
        take(rot3d(0,0,angle),2,2)
    );
    
  4. iingLK commented on Mar 25, 2023

    @iingLK
    Author

    Kalau sudah diimplementasikan di gist.feid akan saya close.

  5. taruma commented on Mar 28, 2023

    @taruma
    Owner

    Ini kemungkinan dibuat feidlambda.contrib aja. Berhubung kalau ngubah atau ngikutin fiako style guide jadi lama.

  6. added this to the v0.4.0 milestone on Mar 28, 2023
  7. taruma commented on Apr 4, 2023

    @taruma
    Owner

    hasil diskusi kemarin, ternyata ini mau dibuat ulang atau refactoring sesuai style guidenya feidlambda ternyata. akan dibuatkan dan disesuaikan lagi.

  8. iingLK commented on Apr 4, 2023

    @iingLK
    Author

    Untuk yang ini, fungsi rot nya sudah benar, Tapi implementasi untuk kepentingan projection rotated axes, bisa pake rumus
    transpose(R)*v

  9. added
    feidlambdaRelated Collection of Lambda by fiakodev
    feidmathfeidlambda for math
    and removed
    feidlambdaRelated Collection of Lambda by fiakodev
    on May 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    feidmathfeidlambda for math

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions