Mục đích chính của mô hình màu RGB (Red Green Blue) là để cảm biến, đại diện và hiển thị hình ảnh trong các hệ thống điện tử, chẳng hạn như TV và máy tính
HSL (Hue Saturation Lightness) là một mô hình màu thay thế, được thiết kế vào những năm 1970 bởi các nhà nghiên cứu đồ họa máy tính để phù hợp chặt chẽ hơn với cách nhìn của con người về các thuộc tính tạo màu
Dưới đây là các bài viết wiki cho RGB và HSL . Thông thường các chương trình đồ họa thực hiện các phép tính trong HSL và sau đó chuyển đổi sang định dạng ưa thích cho hầu hết các màn hình: RGB.
Nhiệm vụ là viết một hàm / chương trình lấy HSL làm đầu vào và đầu ra RGB.
Bạn có thể chọn đại diện ưa thích của mình cho I / O, miễn là nó phù hợp giữa chúng.
Ví dụ: chúng có thể là một mảng / tuple với 3 phần tử hoặc một đối tượng có 3 thuộc tính được đặt tên h
, s
và l
, nhưng tôi sẽ chấp nhận các biến thể thông minh khác, như nhận hsl dưới dạng một số nguyên (mất độ chính xác) và xuất ra một số nguyên rgb.
Đầu vào có thể được coi là an toàn trong phạm vi và định dạng, cả hai đều có thể quyết định. Tôi thực sự đề nghị hoặc các phạm vi 0-1 0-1 0-1
hoặc 0-360 0-100 0-100
cho hsl, 0-1 0-1 0-1
hoặc 0-255 0-255 0-255
cho rgb.
Mỗi câu trả lời là bắt buộc để chỉ định cả hai câu hỏi trên và không đặt nhiều biến thể khác nhau trong câu trả lời của bạn nếu bạn đặc biệt tự hào về chúng, ngay cả khi chúng không có ít ký tự hơn các biến thể khác của bạn. Đặt nhỏ nhất lên trên.
Các trường hợp thử nghiệm giả cho 0-360 0-100 0-100
→0-255 0-255 0-255
h s l → r g b
0 0 0 → 0 0 0
90 56 17 → 43 68 19
202 19 39 → 81 104 118
72 55 26 → 88 103 30
Các công thức cho việc chuyển đổi có thể được tìm thấy ở đây :
Đây là một cách hay để hình dung chuyển đổi:
a-b
ký hiệu là sai khi tự xử lý các giá trị không nguyên, nhưng tôi nói rằng bạn có thể giữ câu hỏi dễ đọc hơn. Nếu có ai phàn nàn, tôi sẽ suy nghĩ lại, vì vậy cảm ơn bạn đã chỉ ra điều đó
[0,360)
sau đó :)
H
các0-360
là[0,360)
, nó sẽ được viết tốt hơn như0-359
?