パンダの休日

雑多な書き残し

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
graph11.png
msmouse.png

スピログラフという玩具をご存知でしょうか。
こういうものです。
僕の中ではかなり面白かった思い出のある玩具です。
この玩具を使うと円に内接する小円が外の円に沿って滑らないように転がるときの小円上の点の軌跡を描けます。
これは内サイクロイド曲線というらしいですが、要は上の画像のような線が引けます。

なぜ突然スピログラフなのかというと前の記事でも書いたguippyのテストのためです。
前回python 3.3で使おうとしたらエラーが出たので開発者の方にTwitterでリプを送って尋ねたところ、python 2で作ったのでpython 3には対応していないとの返答。
直せそうなら自力で直してみようかとしていたらなんと翌日(今日)に3.x対応版(仮)を出して頂けました。
対応している2で使えば良かったのですがわざわざ直して頂いて恐縮でした。

そして、折角3.x版を出して頂いたのでテストに何かやろうと思っていたところで思いついたのがスピログラフ。
guippyはキーボード入力やマウス操作を仮想化できるので画面上の位置を関数で指定してマウスをドラッグさせればまさにスピログラフと同じことができます。
上は座標をcsvファイルに書き出して表計算ソフトで散布図表示したもの。
この座標を画面上の座標に当てはめてペイントの中でマウスを仮想ドラッグアンドドロップさせます。
上手くいきました。
パソコンに作業を「やらせている」感がたまりません。
コードは以下のような感じで。

import guippy
import time
from math import sin, cos, pi

gp = guippy.Guippy()

def point_x(t):
tx = cos(pi/2 - t*pi/1000) + 1.2*cos(pi/2 + 11*t*pi/1000)
tx = int(32767+tx*(5/8)*5000)
return(tx)

def point_y(t):
ty = sin(pi/2 - t*pi/1000) + 1.2*sin(pi/2 + 11*t*pi/1000)
ty = int(32767+ty*5000)
return(ty)

def main():
gp.windows("r")
gp.punch("mspaint")
gp.enter()
time.sleep(1)
gp.jump(point_x(0),point_y(0))
gp.drag()
for i in range(2000):
x = point_x(i)
y = point_y(i)
time.sleep(0.01)
gp.jump(x,y)
gp.drop()

if __name__ == '__main__':
main()



開発者のTakesxiSximadaさん、この度はありがとうございました。
スポンサーサイト

shader

Author:shader
多趣味飽き性に振り回されて色々やってます。

直接連絡したい方は御気軽にメールしてください。 3日以内には返信させて頂きます。

名前:
メール:
件名:
本文:

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。