Linear Cosine Palettes: Tạo bảng màu cho nghệ thuật thuật toán với hàm Cosine

Phần mềm05 tháng 6, 2026·3 phút đọc

Bài viết khám phá một kỹ thuật toán học đơn giản nhưng hiệu quả để tạo ra các bảng màu liên tục trong ngôn ngữ lập trình R. Bằng cách sử dụng hàm cosine, tác giả đã áp dụng phương pháp này vào các hệ thống nghệ thuật thuật toán (generative art) và đạt được những kết quả thị giác ấn tượng mà không cần tối ưu hóa phức tạp.

Linear Cosine Palettes: Tạo bảng màu cho nghệ thuật thuật toán với hàm Cosine

Linear Cosine Palettes: Tạo bảng màu cho nghệ thuật thuật toán với hàm Cosine

Trong thế giới của nghệ thuật thuật toán (generative art), việc lựa chọn bảng màu phù hợp thường là một yếu tố quyết định tính thẩm mỹ của tác phẩm. Mới đây, nhà phát triển Danielle Navarro đã chia sẻ một phương pháp thú vị để tạo ra các bảng màu liên tục dựa trên hàm cosine, một kỹ thuật đơn giản nhưng mang lại hiệu quả bất ngờ.

Ý tưởng từ toán học đơn giản

Nguồn cảm hứng cho phương pháp này bắt nguồn từ một bài đăng trên Mastodon của Mike Cheng và dựa trên các kỹ thuật tạo bảng màu quy trình (procedural palettes) của Inigo Quilez. Về cơ bản, ý tưởng là sử dụng các vector màu cơ bản để tạo ra một chuyển màu mượt mà.

Giả sử chúng ta có 4 vector màu cơ bản (\mathbf{a}), (\mathbf{b}), (\mathbf{c}), và (\mathbf{d}). Một bảng màu liên tục có thể được định nghĩa bằng hàm số sau:

[ f(t) = \mathbf{a} + \mathbf{b} \ \cos(2 \pi(\mathbf{c} t + \mathbf{d})) ]

Trong đó, (t) là biến số thay đổi từ 0 đến 1. Điểm mạnh của quy tắc này là tốc độ xử lý rất nhanh. Theo tác giả, các CPU và GPU hiện đại đều có tối ưu hóa mạnh mẽ cho việc tính toán hàm cosine, giúp việc tạo màu trở nên gần như tức thì.

Ví dụ về các bảng màu được tạo raVí dụ về các bảng màu được tạo ra

Triển khai trong ngôn ngữ R

Để kiểm chứng lý thuyết, tác giả đã viết một hàm trong ngôn ngữ lập trình R. Hàm này nhận vào các tham số về số lượng màu (n) và một giá trị hạt giống (seed) để ngẫu nhiên hóa các vector màu cơ bản.

Dưới đây là ví dụ về cách các bảng màu được tạo ra với các hạt giống khác nhau:

Các dải màu mẫu với hạt giống ngẫu nhiênCác dải màu mẫu với hạt giống ngẫu nhiên

Mặc dù tốc độ không phải là vấn đề quá lớn trong các tác phẩm nghệ thuật tĩnh, nhưng sự hiệu quả của thuật toán này mở ra cơ hội áp dụng trong các ứng dụng thời gian thực (real-time) hoặc các tác phẩm có độ phân giải cao.

Ứng dụng vào Generative Art

Để đánh giá xem các bảng màu này hoạt động tốt như thế nào trong thực tế, tác giả đã áp dụng chúng vào hai hệ thống tạo nghệ thuật thuật toán khác nhau: hệ thống subdivision() (chia nhỏ hình học) và hệ thống lissajous.

Với hệ thống subdivision(), các hình chữ nhật được chia nhỏ và tô màu dựa trên gradient được tạo bởi cosine palette. Kết quả cho thấy sự kết hợp giữa cấu trúc hình học và màu sắc tạo ra những tác phẩm khá ấn tượng.

Tác phẩm nghệ thuật sử dụng hệ thống subdivisionTác phẩm nghệ thuật sử dụng hệ thống subdivision

Tương tự, khi áp dụng vào hệ thống lissajous — nổi tiếng với các đường cong hình học phức tạp — bảng màu cosine cũng cho thấy khả năng thích ứng tốt. Mặc dù không có sự tinh chỉnh thủ công (manual tweaking) để căn chỉnh màu sắc với cấu trúc hình ảnh, kết quả thu được vẫn ở mức "chấp nhận được" và đôi khi là rất đẹp.

Kết luận

Điều thú vị nhất của phương pháp Linear Cosine Palettes nằm ở sự đơn giản. Với chỉ một vài dòng mã và một công thức toán học cơ bản, các lập trình viên và nghệ sĩ kỹ thuật số có thể tạo ra vô số biến thể màu sắc phong phú. Đây là một minh chứng rõ ràng cho việc đôi khi những giải pháp đơn giản nhất lại mang lại hiệu quả tốt nhất trong thiết kế và lập trình đồ họa.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗