2 điểm bởi GN⁺ 2024-12-19 | 1 bình luận | Chia sẻ qua WhatsApp
  • Ma trận là một trong những khái niệm đại số tuyến tính quan trọng được học ở trường và rất hữu ích trong việc giải quyết nhiều vấn đề khác nhau. Bài viết này giải thích cách các ma trận đã được sử dụng khi phát triển một trình biên tập sơ đồ tương tác tên là Schemio.

Giai đoạn phát triển ban đầu của Schemio

  • Schemio ban đầu có dạng đơn giản, cho phép người dùng tạo hình, di chuyển, thay đổi kích thước và xoay chúng.
  • Các hình được biểu diễn dưới dạng những vùng đơn giản được xác định bởi vị trí, kích thước và góc xoay.
  • Cấu trúc dữ liệu biểu diễn các hình dưới dạng một mảng phẳng.

Vấn đề của cấu trúc phân cấp

  • Để liên kết các hình với nhau và tạo ra các tương tác phức tạp, nhóm phát triển đã đưa vào hệ phân cấp item.
  • Dùng SVG có thể giúp render cấu trúc phân cấp dễ dàng, nhưng Schemio cần cung cấp nhiều hơn chỉ là render.
  • Cần có phép chuyển đổi giữa tọa độ cục bộ và tọa độ thế giới.

Scaling và điểm pivot

  • Scaling cho phép điều chỉnh kích thước của đối tượng một cách động, còn điểm pivot xác định tâm quay.
  • Khi thêm scaling và điểm pivot, việc quản lý các phép biến đổi trở nên phức tạp hơn, và vấn đề này được giải quyết bằng ma trận.

Cơ bản về phép biến đổi ma trận

  • Các phép biến đổi có thể được biểu diễn bằng ma trận. Ví dụ, một điểm trong không gian có thể được biểu diễn bằng ma trận 3x1.
  • Có thể thu được điểm sau biến đổi bằng cách nhân ma trận biến đổi với ma trận điểm.
  • Có thể kết hợp các ma trận biến đổi để thực hiện nhiều loại biến đổi khác nhau.

Tọa độ thế giới và tọa độ cục bộ

  • Việc chuyển đổi từ tọa độ cục bộ sang tọa độ thế giới là đơn giản, nhưng chiều ngược lại thì phức tạp hơn.
  • Có thể dùng ma trận nghịch đảo để chuyển tọa độ thế giới sang tọa độ cục bộ.

Gắn và tách đối tượng: thách thức của biến đổi phân cấp

  • Khi kéo thả một đối tượng vào đối tượng khác hoặc thay đổi cấu trúc phân cấp, cần tính lại vị trí và góc xoay mới.
  • Vị trí và góc xoay của đối tượng được kéo sẽ được điều chỉnh để chuyển động một cách tự nhiên trên màn hình.

Kết luận

  • Trong quá trình phát triển Schemio, các khái niệm toán học đã được tận dụng để giải quyết những vấn đề phức tạp.
  • Nếu quan tâm đến dự án, bạn có thể xem mã nguồn trên GitHub và dùng thử trực tiếp trên trang web của Schemio.

1 bình luận

 
GN⁺ 2024-12-19
Ý kiến trên Hacker News
  • Thấy hứng thú khi phát hiện ra một phần mềm mã nguồn mở mới tên là Schemio

    • Thiết kế và cảm giác sử dụng của Schemio rất tinh tế
    • Dù là mã nguồn mở nhưng họ không lấy đó ra để khoe khoang
  • Adobe PostScript đã phổ biến hóa ma trận biến đổi vào những năm 1980

    • SVG vay mượn khá nhiều từ mô hình hình ảnh của PostScript
    • Có cung cấp liên kết về việc sử dụng ma trận 2D trong PostScript
  • Tài liệu trên WebGLFundamentals.org là phần nhập môn rất tốt về hệ phân cấp biến đổi

    • Có cung cấp liên kết về scene graph của WebGL
  • Tác giả đề xuất nên tìm hiểu về tọa độ thuần nhất

    • Có cung cấp liên kết Wikipedia về tọa độ thuần nhất
  • Framework QGraphicsView là một framework đồ họa rất mạnh

    • Cung cấp các công cụ mạnh như biến đổi scene-object và hệ phân cấp đối tượng
    • Chưa tìm được lựa chọn thay thế nào trên web hoạt động tốt như QGVF
  • Một khía cạnh thú vị của việc dùng ma trận thuần nhất 3x3 để biến đổi trong 2D

    • Biến đổi 2D thực chất là phép cắt xiên trong 3D dọc theo mặt phẳng z = 1
    • Có cung cấp liên kết YouTube liên quan
  • Schemio trông rất ngầu

    • Đang dùng Claude để tạo nhiều sơ đồ luồng
    • Muốn dùng Schemio để làm việc tương tự
  • Bài viết và phần mềm đều rất thú vị

    • Đã tìm kiếm phần mềm mã nguồn mở mạnh mẽ cho việc vẽ sơ đồ
    • Thật lạ là Schemio trước giờ không xuất hiện trong tầm ngắm
    • Có vẻ dùng đại số hình học cho biến đổi và hoạt họa sẽ trực quan hơn
    • Có cung cấp liên kết về đại số hình học
  • Khi di chuyển một đối tượng, nếu có nhiều đối tượng con thì phải cập nhật hạng A(i-1) của mọi đối tượng con

    • Tò mò không biết quá trình này có tốn kém hay không
    • Với các hình có kích thước vừa phải thì có thể vẫn ổn
  • Schemio rất đẹp và có vẻ thực sự đáng để sử dụng