ton_katu
Posts: 64
Joined: Sun Jun 27, 2021 3:28 am

プログラムを読んでみる=おもしろい

Wed Jul 21, 2021 9:34 am

このファイル
https://github.com/TexasInstrumentsDIY/ ... /shapes.py

このファイル文字表示まで有る筈なのに
楕円、長方形以降は表示されない。

図形一つ一つの座標をカット&トライで調整で
スクリーンに表示させてみた、
すると、座標がスクリーンの外に指定されていて、
ソレで表示されなかった事が判った。

プログラムでは、冒頭で
スクリーンの大きさは定義されていると思う
30行目辺りに
WIDTH = 128
HEIGHT = 160
の記述がある。

座標をスクリーンの中に措けば
図形は表示された。

これは、プログラムの作者が、このプログラムを囓る学習者を
想定し、
敢えて座標をスクリーン外に措き
学習者に「なぜ(Why)」表示しない?をきっかけに
学習させる事を意図した様に思われる。

お陰で
・座標の意味
・円(楕円)三角形、四角形の作り方
・色の混合、意図した色の作り方
・テキスト文字の表示の仕方
などの、概要を自分の手と頭を使って学習出来た。
やはり、「動かして見ないと」
『なる程、そうか』とは ならない!

お陰さまで、今日は、夏の高温が気にならずに済んだ :::::::) 頭は温まった(オーバーヒート気味):)

ton_katu
Posts: 64
Joined: Sun Jun 27, 2021 3:28 am

Re: プログラムを読んでみる=おもしろい

Thu Jul 22, 2021 6:27 am

文字の描画の状態を
スクリーン内で「回転」させて見た。

これは、「かなりの力技」だ。
スクリーン(0,0)が左上隅になるスクリーン位置で、
描画させたかった。

目には、文字列に見えるが
プログラム内では,「文字列」を一つの「図形」として処理している
様に思える。

回転させただけでは、スクリーンのx軸が狭く
2行目文字列の末尾がスクリーン外に、こぼれて見えなくなってしまう。
そこで、
プログラム的に、文字通り
『切った、貼った』で済ませた。 :)
文字列の改行処理が解らない為。

解っても、ここでは、やはり「図形処理」になるのだろ?
IMG_20210722_145700.jpg
IMG_20210722_145700.jpg (127.59 KiB) Viewed 226 times

ton_katu
Posts: 64
Joined: Sun Jun 27, 2021 3:28 am

Re: プログラムを読んでみる=おもしろい

Fri Jul 23, 2021 1:19 am

なぜ、こうなる?

スクリーンの左上隅が(0,0)右下隅が(128,160)
角度360度でスクリーン内に水平表示されたので、
右肩上がり(45度)に表示させてみると 360+45=405度
文字列の頭の座標が、
y軸で随分、値が実際の描画との位置とで違う。

360度から405度 に斜めに表示させると
文字列の頭の位置が、(0,0)基点の座標と随分違う。

スクリプトでは
draw_rotated_text(disp.buffer, 'Hello World!', (15, 25),405, font, fill=(255,255,255))
draw_rotated_text(disp.buffer, 'This is a line of text', (10, 40),405, font, fill=(255,255,255))

y軸の値が、(0,0)からの距離が違う。

(15, 25) 1行目    見かけでは25より75くらい
(10, 40) 2行目   見かけは40より150くらい

★まるで、スクリーンの右上隅を基点にした字列の末尾の座標に近い? おもしろい!

   これは、『もしや、360度以上廻すと、スクリーン起点も伴って
  廻ったのどろうか? うむ~ ソレっぽい』???
  これ、移動「ド」みたい でもないか、楽器じゃないしなぁ・・・・

★斜め表示は、水平表示より文字の鮮明度が下がる。ピクセルの縦横比が違うのか?
ドットが正方形ではないのだろう。
IMG_20210723_094522.jpg
IMG_20210723_094522.jpg (155.67 KiB) Viewed 190 times

ton_katu
Posts: 64
Joined: Sun Jun 27, 2021 3:28 am

Re: プログラムを読んでみる=おもしろい

Fri Jul 23, 2021 9:28 am

このスクリプトで405度廻している。
360度以上廻すと、始めスクリーンの左上隅が(0,0)基点
だったが、縦置きのスクリーンが左に横転し現在の右上隅
(128,0)が(0,0)に昇格する様だ。

「文字列」は、一つの「ラバースタンプ」=図形であり、見かけの
文字の向きは天地が転倒している見えるが
昇格(0,0)からの座標払い出しの(更新)座標数値でプロットしている。(みたいだ?)

「text」の『スタンプ』が上になり=(10, 40)
「world』のスタンプが、下になっている=(15, 25)
この座標は「昇格基点」からの払い出しで見ると、合致している,to思ったら
でも、ないか?

おもしろい!

ton_katu
Posts: 64
Joined: Sun Jun 27, 2021 3:28 am

Re: プログラムを読んでみる=おもしろい

Sat Jul 24, 2021 10:11 am

描画文字を大きくしたくて、探し回りました。探したら見つけました。
「犬も歩けば・・・当たる」でした。

ここは、スクリプトにサンプルヒントが有ったのですが
フォント名で実行した時は、
======エラー
Traceback (most recent call last):
File "shapes2.py", line 91, in <module>
font = ImageFont.truetype('Minecraftia.ttf', 20)
File "/usr/lib/python2.7/dist-packages/PIL/ImageFont.py", line 280, in truetype
return FreeTypeFont(font, size, index, encoding, layout_engine)
File "/usr/lib/python2.7/dist-packages/PIL/ImageFont.py", line 145, in __init__
layout_engine=layout_engine)
IOError: cannot open resource
================エラー
で、上手く行かなかった。

fontのアドレスを直にPATHを指定してみて」
と言うWeb記事を見つけました。

長いPATHなのでコピペすると,文字が、大きくなりました。

やれやれ。一日かかりでした。 :) :D
IMG20210724183850.jpg
IMG20210724183850.jpg (182.19 KiB) Viewed 123 times

Return to “日本語”