投稿

9月, 2019の投稿を表示しています

化学の話 : 乳化について簡単に調べてみました

最近よく聞く「乳化」という言葉 料理動画などで最近「 乳化 」という言葉を聞くことが多いような気がします。 例えば ラーメンのスープを乳化させる スパゲッティのソースを乳化させる などなど。ではこの「乳化」というのはどのようなことを示すのでしょうか?少し調べてみました。 いわゆるところの「乳化」 ニュアンス的には「乳化」とは、油に水(お湯)、または水に油を混ぜて激しく混ぜることで白く濁らせることを言っているようです。混ぜるに際しては鍋を揺すったりしゃもじで混ぜたり、激しく沸騰させたりなどの手段で行うのが一般的な模様。ミキサーやブレンダーなどで機械を使って行うものもありますね。 科学的に「乳化」を見てみる まず「乳化」とは「乳化させる」という行為を示すわけです。さて、水と油のように混ざらない分離した状態を乳化させると一体どのような状態になるでしょう? 「乳」という言葉が使われているので、牛乳のような白く濁った状態になるということなんでしょう。では、その状態を科学的に見てみることにします。 牛乳はなぜ白いのか 乳化した状態を考える前に、まずなぜ牛乳が白い(そして不透明)なのかを見てみることにします。話を短くするために簡略して説明すると、牛乳は水にタンパク質や脂肪分が細かく分散したもの(とここではしておきます)。それらの分散している微粒子が入ってくる光を散乱するため白く濁って見えることになります。 そこから考えると、乳化した状態とは水に何らかの微粒子が分散した状態と言えるでしょう。この状態は科学的には「コロイド」と言います。  (用語の細かい定義の説明は省きます) つまり「乳化させる」とは「何らかの手段によりコロイドの状態にする」ということになるわけです。 では具体的に「コロイド」とは何なのかについて見ていくことにしましょう。 「コロイド」について コロイドとは「コロイド化学」、「界面化学」などの分野で研究されているものです。また物質としてのコロイドを扱うものは多種多様に渡っています。食品、医薬品、大気汚染、塗料などの材料、自然現象などコロイドが登場する場は非常に多いです。 分散する粒子をコロイド粒子と言い、そのコロイド粒子は直径1〜500nm程度。また直径については資料によっては1〜1000nmとなってい

Python turtle graphics : スクリーンに文字を書く方法(turtle.write)

イメージ
turtle graphicsでスクリーンに文字を書く 文字入力の例 turtle graphicsで図形を描いているとき、図形だけでなく何かしら文字もスクリーンに入力したい場合もあるでしょう。動作の説明や進んだ距離や曲がる角度などを文字として入力しておくと、より分かりやすい表現が出来るようになります。 turtle graphicsではスクリーンに文字を入力するための turtle.write() というメソッドがあります。 turtle.write() turtle.write()メソッドでスクリーンに文字を入力するとき、簡単には以下のようにします。 turtle.write("Hello world") この場合の出力は以下の図のようになります。turtleのやや右上に指定した"Hello world"というテキストが入力出来ていることが分かりますね。 turtle.write("Hello world") このままでは文字が小さく読み難いですが、turtle.write()を用いる際に引数を指定することで文字サイズなどを調整することも可能です。 turtle.write()の引数 turtle.write()で引数として指定出来るのは以下の4つ。 arg : オブジェクト move : 文字入力の際にturtleも移動させるかどうかの指定(True, False) align : turtleの位置に対し入力する文字の位置の指定(left, center, right) font : フォントの種類、サイズ、フォントタイプの指定 引数を指定する際、例えば全て指定しようとすると以下のようになります。 turtle.write(arg="test text", move=False, align="left" font=("Sans", 24, "bold")) または turtle.write("test text", False, "left", ("Sans", 24, "

Python turtle graphics 作例 : 五角形を集めて花のような模様を描いてみる(関数作成)

イメージ
動画 完成図(静止画) ソースコード import turtle, random def penta(length):     for i in range(0, 5):         turtle.forward(length)         turtle.left(180-108) def color_red_up(num, step, ini_red, ini_green, ini_blue):     red = ini_red + num / step     green = ini_green     blue = ini_blue     if red > 1.0:         red = 1     if green > 1.0:         green = 0     if blue > 1.0:         blue = 0     return [red, green, blue] def rotate_penta(length, size, step, color):     for i in range(0, 12):         turtle.fillcolor(color_red_up(i, step, color[0], color[1], color[2]))         turtle.begin_fill()         penta(length)         turtle.end_fill()         turtle.fd(length/5)         turtle.right(30) window_x = 16 * 70 window_y = 9 * 70 turtle.setup(window_x, window_y, 0, 500) s_min = 10 s_max = 40 #loop_start = 0 #loop_end = 300 #for i in range(loop_start, loop_end): n = 0 turtle.speed(6) while True:     print(n)     if n < 2:  

Python turtle graphics 作例 : 再帰処理を用いた円の描画

イメージ
動画 完成図(静止画) ソースコード import turtle turtle.setup(960,720,0,500) def circ(x):     if x > 200:         return     turtle.circle(x,steps=100)     turtle.left(5)     print(x)     circ(x + 1)     turtle.tracer(5,0) turtle.shape("turtle") turtle.shapesize(1, 1, 1.5) turtle.pencolor(0,0.6,0) turtle.fillcolor(0,1,0) turtle.begin_fill() circ(1) turtle.end_fill() turtle.mainloop() まとめページ Python turtle graphics まとめ スポンサーリンク Amazon商品リンク : Pythonプログラミング関連

Python turtle graphics 作例 : たくさんの木を描いてみる

イメージ
動画 完成図(静止画) ソースコード import turtle, random def tree(length, angle):     if length < 2:         return     turtle.pencolor("brown")     turtle.pensize(5)     turtle.setheading(90)     turtle.forward(length)     turtle.pencolor("green")     turtle.setheading(angle)     turtle.forward(length)     turtle.penup()     turtle.forward(-length)     turtle.pendown()     turtle.pencolor("brown")     turtle.setheading(90)     turtle.forward(length * 0.5)     turtle.pencolor("green")     turtle.setheading(180-angle)     turtle.forward(length)     turtle.penup()     turtle.forward(-length)     turtle.pendown()     tree(length / 2, angle) window_x = 960 window_y = 720 turtle.setup(window_x, window_y,None,None) turtle.speed(0) delay = 10 steps = 1 k = 0 for i in range(0, 1000):     turtle.penup()     turtle.goto(0, 0)     turtle.goto(random.randint(-window_x/2, window_x/2), random.randint(-window_y/2, window_y/2)

Python turtle graphics 作例 : 複数のチェック柄の円

イメージ
動画 完成図(静止画) ソースコード import turtle turtle.setup(960,720,None,None) t1 = turtle.Turtle() t2 = turtle.Turtle() t3 = turtle.Turtle() t4 = turtle.Turtle() t5 = turtle.Turtle() t6 = turtle.Turtle() myturtles = [t1, t2, t3, t4, t5, t6] mycolor = ["red", "orange", "cyan", "green", "blue", "gray"] myr = [36, 30, 24, 18, 12, 6] myradius = [50,50,50,50,50,50] mygoto = [(-300,150), (0,150), (300,150), (-300,-150), (0,-150), (300,-150)] turtle.tracer(10,3) for cnt, num in enumerate(myturtles):     num.speed(10)     num.goto(mygoto[cnt])     num.clear() r_n = min(myr) for i in range(0, 360//r_n):     for cnt, num in enumerate(myturtles):         if 360 > myr[cnt] * i:             num.left(myr[cnt])             num.circle(myradius[cnt], steps=100)         else :             continue turtle.tracer(1000,0) for cnt, num in enumerate(myturtles):     num.hideturtle()     num.speed(0)     num.fill

Python turtle graphics : 角度の単位設定(turtle.degrees)

イメージ
Turtle graphicsでの角度の単位 turtle graphicsにおいて角度の単位はデフォルトでは度となっています。設定によりこれをラジアンに変更することも出来ます。 またデフォルトでは一周は360度ですが、任意の数値を一周の値に設定することも出来ます。 turtle.degrees() turtle.degrees()メソッドの括弧内に数値を入れて実行するとその数値が一周の角度となります。例えば turtle.degrees(100) とすると一周が100で表されるようになります。 また、以下のように実行すると初期設定(360度)に戻ります。 turtle.degrees() turtle.radians() turtle.radians() と実行すると角度はラジアンとして扱われるようになります。 (余談 : turtleの向いている方向の確認) ちなみにturtleが向いている角度を確認するには turtle.heading() と実行します。そうするとそのとき向いている角度が返ってきます。 図説 : turtle.degrees()で一周の値を変更した場合について 以下に半径100の円を描く場合について、turtle.degrees()をデフォルト及び100に設定した場合との比較を図示します。 なお、半径100の円を描くには以下のようにturtle.circle()でextentに数値を指定します。 turtle.circle(radius=150, extent=100, steps=None) 見て分かるようにデフォルト(上の円)では途中までしか円が描かれていませんが、一周を100に設定した方(下の円)では一周分描かれています。 図のソースコード import turtle turtle.setup(960,720,None,None) turtle.degrees() turtle.penup() turtle.goto(0, 100) turtle.pendown() turtle.circle(radius=150, extent=100, steps=None) turtle.penup() turtle.goto(0, 70) turt

Python turtle graphics 作例 : チェック柄の円

イメージ
動画 完成図 ソースコード import turtle turtle.setup(960,720,None,None) turtle.bgcolor("gray80") turtle.shape("turtle") turtle.speed(10) turtle.tracer(1,2) turtle.pencolor("black") turtle.fillcolor("green") r = 10 turtle.begin_fill() for i in range(0, 360//r):     turtle.left(r)     turtle.circle(150, steps=360) turtle.end_fill() turtle.mainloop() まとめページ Python turtle graphics まとめ スポンサーリンク Amazon商品リンク : Pythonプログラミング関連

Python turtle graphics : turtleの前後の移動(forward)

イメージ
turtle graphicsの基本動作 : forward turtle graphicsでturtleを前進させるには turtle.forward() を用います。turtle graphicsにはその他にもいろいろと移動操作はありますが、これが基本となる移動操作です。 省略した書き方 コードを書く時、turtle.forward()は省略して turtle.fd() と書くことも出来ます。 turtle.back() また後進用には turtle.back() もあります。なおturtle.forward()でも負の値を与えることで後進出来るので、今回はturtle.forward()のみ解説します。 turtle.forward()について turtle.forward()は引数に移動する距離を与えて実行すると、その距離だけ前進します。また負の値を与えれば後進します。 前進 turtle.forward() 前進 ソースコード import turtle turtle.setup(960,720,None,None) turtle.shape("turtle") turtle.write("turtle.forward(400)", font=("",18,"bold")) turtle.forward(400) turtle.mainloop() 後進 turtle.forward()後進 ソースコード import turtle turtle.setup(960,720,None,None) turtle.shape("turtle") turtle.write("turtle.forward(-400)", font=("",18,"bold")) turtle.forward(-400) turtle.mainloop() 角度を変えて前進 これだけだとただ前後に動くだけですが、turtle.right()やturtle.left()などで進行角度を変更すれば

Python turtle graphics : turtleの描画速度設定について

イメージ
turtleの描画速度設定 turtle.speed() turtle graphicsのturtleの進むスピード(描画速度)は turtle.speed() のメソッドにより設定します。引数としては1〜10まで、そして0を指定します。 1が最もturtleの速度が遅く、数が増えるに従い速度が増していきます。 で、10が最も早いと思われるますが、最も早いのは0を設定したときになります。 設定値ごとの速さを比べると以下のようになっています。   0 > 10 > 9 > 8 > 7 > 6 > 5 > 4 > 3 > 2 > 1 以下、動画で説明します。 動画の結果は以下のスクリーンショットの通り。 そして数値ではなく文字列として以下の文言でも指定出来ます。 “slowest" “slow” “normal” “fast” “fastest” ここでは"fastest"が0、"fast"が10、slowestが"1"に対応しています。 ("slow"が3、"normal"が6) 設定は turtle.speed(10) turtle.speed("slow") のように行います。 turtle.delay(), turtle.tracer() さらにturtleの速度を速くしたい場合は turtle.delay() turtle.tracer() を用います。 turtle.delay()は引数に描画遅延をどれくらい取るかをミリ秒で指定します。これを0と設定すると簡単な図形ならほぼ一瞬で描画が完了します。 そしてturlte.tracer()ではスクリーンを更新する間隔と描画遅延の2つの引数を指定します。1ステップ毎ではなくたとえば100ステップをまとめて描画することが出来るので、より高速に描画が行えるようになります。 設定はそれぞれ以下のように行います。 turtle.delay(0) turtle.tracer(100, 0) まとめページ Python turtle gra

guake上でEmacsを-nwで起動してるときにC-x C-cで終了出来なかった件

イメージ
 guake上でEmacsを-nwで起動したときに起きた話 今回は、ドロップダウン型のターミナルであるguakeでEmacsを-nwオプションで起動したときに起こった話。 (ちなみにEmacsは-nwオプションで起動すると、ウィンドウではなくその端末内でテキストベースで起動する) guake上でEmacsを-nwオプションで起動した状態 guakeについてのブログ記事 : ドロップダウン型端末、Guakeの紹介 状況 Emacsの起動や動作自体は通常通りに行えたのに、Emacsを終了しようとしたとき C-x C-c とキーボードを打っても終了してくれない。どうもC-c、つまりCtrl-cを受け付けてない模様。なおguake以外、たとえばgnome-terminal上では同様のことをしてもちゃんと終了してくれた。 (当然ながらEmacsを通常通りにウィンドウで起動した場合も問題なくC-x, C-cで終了出来ている) とりあえずの対処 とりあえずEmacsの終了は M-x kill-emacs で行った。 原因調査 たぶんguakeのキーボードショートカットで、C-cが何かに使われてるんだろうなと思って調べてみたところ… guakeのキーボードショートカット該当部分 クリップボード操作でC-cが使われてました。 なので、EmacsでC-cを打った時にそれがguake側で認識されEmacs側には渡っていないってことだったのかと。 解決 とりあえずこのguakeのキーボードショートカットをShift+Ctrl+Cに変更しました。 これで試したところ、EmacsでもC-cを受け付けるようになりC-x, C-cで終了出来るようになりました。 今回の話、キーボードショートカットが自分が意図しないところで奪取されてたために起きたという典型的なものでした。一件落着。 参考およびまとめリンク Emacs関連のブログ記事 スポンサーリンク Amazon Emacs関連書籍 Amazon商品リンク : Linux関連

Python turtle graphics - 作例 : 直線と回転のみによる図形

イメージ
直線と回転のみによる図形 Python turtle graphicsで直進(forward)と回転(left)のみで図形を書いてみました。 操作自体はある距離を進んだところで左に曲がり、次は少しだけ距離を増やして再び進んで同じ動作を繰り返すというもの。例としては以下のような感じ。 import turtle turtle.fd(50) turtle.left(80) turtle.fd(55) turtle.left(80) turtle.fd(60) turtle.left(80) turtle.fd(65) turtle.left(80) turtle.fd(70) turtle.left(80) turtle.fd(75) turtle.left(80) turtle.fd(80) turtle.left(80) turtle.fd(85) turtle.left(80) turtle.fd(90) 単純ですね。ただ操作自体は単純ですが、これを何回も繰り返して出来上がった図形はバラエティーに富んでいるのが出来ておもしろいです。例えば、曲がる角度を118.2度ではこのような図形になったりします(直線の長さをどう取るかにも依存しますが)。 ソースコード(操作部分のみ) コードの図形描画操作部分のみ抜き出すと以下の通り。 a = 0 while True:     angle = 16     turtle.left(angle)     turtle.fd(a)     a = a + 2     if a > 550:         break (実際のソースコードは多重ループや描画を速くするような処理も入れているのでもっと長いです) 上のコードでは曲がる角度としてangleという変数を用いています。1つ図形を書き終わったら、この変数を増やして新しい図形を書く、ということを繰り返します。直線の長さは変数aで指定していて曲がる際の増加分は+2としました。この長さが550を超えたら1つの図形描画を打ち切るようにしています。また、この長さの変数aについてはどの図形でも同じ設定にしています。 今回はangleで指定する変数は0.1度ずつ360度まで増加させたので、出来上がっ

Python turtle graphics : モードのstandardとlogoの違いについて - turtle.mode()

イメージ
turtle graphicsで用いられるモードとは turtle graphicsではいくつかモードを選ぶことが出来ます。ここで言うモードとは初期進行方向と角度がどちら回りなのかなどの違いで区別されています。通常であれば特に必要が無ければモードを変更することはないでしょう。 さてPythonのturtle graphics用意されているモードで主に用いられるのは standard logo の2つ。そしてもう一つ world というのもあり、こちらはユーザーが独自のworld coordinatesを定義した場合にこのモードになります。今回はworldについては解説は省き、starndardとlogoの2つについて解説していきます。   モードの確認、設定方法 使用してるモードを確認するには以下のコマンドを実行します。 turtle.mode() モードを設定するときは例えばlogoモードにするには以下のようにします。 turtle.mode("logo") standardモード turtle graphicsの初期状態ではおそらくこのstarndardモードになっていると思います。このモードでは以下の設定となります。 初期進行方向 : 右向き 角度 : 反時計回り これを次の図を用いて説明します。この図では一定方向進んだところで角度を記述して初期位置に戻り、次に角度を30度増やして再び同じ動作をするということを繰り返しています。初期進行方向が右向きなので、初期位置から真っ直ぐ右に行ったところが0度となっています。そして角度は反時計回りに増えていきます。 (見た時に分かりやすくなるように、角度が増える毎にフォントと矢印のサイズを大きくしていってます) standardモードの図示 logoモード 同様にlogoモードについて説明すると以下のようになります。 初期進行方向 :上向き 角度 : 時計回り さきほどと同様に図で示すと以下の通り。logoモードでは初期進行方向は真上で、角度は時計回りに増えるようになっています。 logoモードの図示 図示に用いたソースコード 図示に用いたソースコードは以下の通り。 import turtle turtle.mode("

スポンサーリンク