| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|---|
色¶
- class Color(h, s=100, v=100)¶
ライトまたは表面の色。
彩度の高い色
彩度と明度の値が最大のカラーです。色相の違いだけです。
彩度の低い色
これらの色は、色相と彩度がゼロです。明度のみが異なります。
これらの色をセンサーで検出する場合、その値は対象物までの距離に大きく依存します。センサーと対象物の距離が一定でないロボットの場合、これらの色のうちの1色のみを使った方がよいでしょう。
独自色の作成方法
この例では、カラープロパティの基本的な使い方と、新しいカラーの定義方法を紹介します。
from pybricks.parameters import Color
# カラーはプリントできる。カラーは Color クラスから取得することも、# 色の測定値を返すセンサーから取得することもできる。
print(Color.RED)
# 色相、彩度、明度のプロパティを読み取ることができる。
print(Color.RED.h, Color.RED.s, Color.RED.v)
# 独自色を作ることができる。彩度と明度はデフォルトで100。
my_green = Color(h=125)
my_dark_green = Color(h=125, s=80, v=30)
# 独自色をプリントすると、その色がどのように定義されたかが正確にわかる。
print(my_dark_green)
# 独自色を組込み色として追加することも可能。
Color.MY_DARK_BLUE = Color(h=235, s=80, v=30)
# このように追加した場合、プリントするとその名前しか表示されない。
# しかし、その属性を読めば、h, s, v を読むことはできる。
print(Color.MY_DARK_BLUE)
print(Color.MY_DARK_BLUE.h, Color.MY_DARK_BLUE.s, Color.MY_DARK_BLUE.v)
この例では Color クラスのより高度な使用例を示しています。
from pybricks.parameters import Color
# 2つのカラーは h、s、v 属性が等しい場合、等しいと言える。
if Color.BLUE == Color(240, 100, 100):
print("Yes, these colors are the same.")
# カラーをスケーリングして明度を変えられる。
red_dark = Color.RED * 0.5
# カラーをシフトして色相を変更できる。
red_shifted = Color.RED >> 30
# カラーは不変なので、既存のオブジェクトの h、s、v は変更できない。
try:
Color.GREEN.h = 125
except AttributeError:
print("Sorry, can't change the hue of an existing color object!")
# しかし、全く新しいカラーを定義することで、組込みカラーを上書きできる。
Color.GREEN = Color(h=125)
# クラスの属性または辞書としてカラーにアクセス、保存できる。
print(Color.BLUE)
print(Color["BLUE"])
print(Color["BLUE"] is Color.BLUE)
print(Color)
print([c for c in Color])
# これにより、既存のカラーをループで更新できる。
for name in ("BLUE", "RED", "GREEN"):
Color[name] = Color(1, 2, 3)