« 2009年12月 | トップページ | 2010年2月 »

パズルピースの作成 (5) 朱ぬりかべ

ジグソーパズルのプログラム作成の続き。 ピースをマウスで引きずって動かし、絵が合うピースの近くに持っていくと、ピタッとくっつく。 なお、画像は、数年前に作った、紙粘土製の朱塗りのぬりかべ。


Photo_2

庭先に仏の座が群生しています。 小さな蕾がついていて、そろそろ花が咲き出すかもしれない。 たくさん生えているし、食べれるかなと思いきや、せりなずな ごぎょうはこべら ほとけのざ ... の七草の方は、これじゃないのだそうです。 でも、、色々調べてみたところ、大した毒性はないらしいので、ためしに葉っぱをちぎって食べてみました。 ふわりとした草の匂いは結構いい感じです。 ほのかに青苦いですが、まずいというほどのことはないですね。 ただ、表面に細かな毛があるみたいで、舌ざわりというか食感がいま一つかも。

| | コメント (0) | トラックバック (0)

パズルピースの作成 (4) 招き猫

ジグソーパズルのプログラム作成の続き。 分割したピース同士が、ピタッとくっつくようにした。 これで、いくらかパズルっぽくなったかも。 ただし、絵が合うかどうかに関係なく、どのピース同士でもくっついてしまうので、その辺は、これから改良したい。


今日は飲み会。 最後に こだいこ で、昔ながらの臭いラーメンを食べて帰ってきました。

| | コメント (0) | トラックバック (0)

パズルピースの作成 (3)

前の記事で、パズルピースの画像を表示する時の動きについて書いた。 このとき、FLASH プログロラムというものが、動作内容を決めているわけだが、その中身がどういうものか、自分なりにまとめてみたい。

プログラムを作る時には、大まかに言って
1. どのように書くか
2. どうやって使えるようにするか
ということを考える必要がある。
----------------------------------------------
1. 書く時は、大抵は、どこからか見本を探してきて、それを真似して書くのが普通だ。 昔は、詳しい人に教えてもらったり、本を読んだりする必要があったが、今はインターネットがあるので便利なものだ。 前々回記事 のプログラムもそうやって作った。 なお、この記事では 「FLASHプログラム」 と表現したが、正式には 「Action Script」 という規格のプログラムである。 一部、抜粋すると、こんな感じ。

( 画像ファイルの URL を指定して受信する )
url = new URLRequest ( "http://・・・/snow_park.jpg" );
loader .load ( url );

( 画像データの一部を小さな画像にコピーする )
small_image .bitmapData .copyPixels
  ( image_data, new Rectangle( x, y, w, h ), new Point( 0, 0 ) );

( 小さな画像を透明な板の上の貼り付けて表示する )
plate .x = 100;
plate .y = 100;
plate .addChild ( small_image );

プログラムの記述そのものは、大して面白いものではない。 決まりごとに従って書いていくだけのことだ。 でも、それが実際に、目に見える絵として画面に現れると、やはり楽しい。 以前、手品のようだというコメントを頂いたことがあるが、手の内を隠して結果だけ見せて面白がる、という意味では、手品と似たような所があるかも知れない。
----------------------------------------------
2. 書いたプログラムは、そのままでは使えなくて、コンピュータ (CPU) が扱えるような記述に変換する必要がある。 CPU は、基本的にはとても単純にできていて、できることといえば、整数の足し算や引き算、データの比較やコピーなどをするにすぎない。 短い時間に膨大な回数の処理を行うので、見かけ上は複雑なことができるわけだ。 そんなわけで、人が書いたプログラムの1行を実現するためには、数十個の 「命令」 を CPU に伝える必要がある。

そのような変換作業は、複雑すぎて、とても手作業でできるものではない。 そこで、自動的にやってくれるソフトウェア製品を利用することになる。 (今回は、FLEX という製品を使っている。) 変換後に、実行処理可能なプログラム (ファイル) ができるので、それを サーバーに保存しておくと、インターネット上で公開できて、受信した人がパソコン上で実行できるようになる。 以上。


ひつじ通信 44号が届いたので、読んでいる所です。
「世の中入門講座」 が画期的。 「人間は、本当は別にやりたいことがあるのに、将来のためにやりたくない作業をやらなくてはならないという 『労働』 のつらさをかかえることになったのです。」 というのは、一見、当たり前のことように思えますが、実は文明と引き換えに発生した業のようなものなんですね。 世の中の本質をついた、とても分かりやすい話だと思って感心しました。

| | コメント (2) | トラックバック (0)

パズルピースの作成 (2)

前の記事 で、画像を分割して表示するプログラムを紹介した。 これから、少しづつ改良してパズルらしいものにして行きたいと思っているが、今回、先に進む前に、この 「プログラム」 がどういうものか、ということを記事にしてみたい。

もし、インターネットにつながっていない状態で、前記事と同様の機能のプログラムを使うとしたら、ふつうは、次のような構成になるかと思う。 パソコン内部の CPU という部品が頭脳の役割をし、プログラムに従って一連の処理を行う。
Photo

これに対して、インターネット上のサイトに貼り付けられた、FLASHプログラム などを使う場合は、次のように、だいぶ複雑な構成になる。
Photo_2

この場合、CPU の動作を決めるプログラムが、一つだけでない所がややこしい。
ブラウザ → ページ情報 (HTML) → FLASHプログラム
というふうに、処理内容が移って行くことになる。 前記事の場合、ページ情報は ココログのサーバから読み込み、FLASHプログラムは 別のサーバから読み込んでいる。

パズルの機能 (画像の加工、画面表示など) は、この FLASH プログラムの中に書き込んでおくわけだが、その中身がどうなっているかは、また別の記事で。

このところ、昼休みに弁当を食べたあと、昼寝をするのが日課になっています。 職場にはそういう場所は無いので、外の駐車場に行き、車のシートを倒して、いつも積んである毛布をかぶって、うつらうつらするのが気持ちいい...。 いちおう寝過ごさないように、携帯電話のアラーム機能をセットしておきます。 寝ていられる時間が30分ぐらいしかないのが、ちょっと物足りないですね。 できれば、後1時間ぐらい寝ていられるといいですが...やはり、歳のせい?

| | コメント (4) | トラックバック (0)

パズルピースの作成

ジグソーパズルのプログラム製作の続き。 これからしばらくは、画像を分割してピースに切り分ける機能を作っていきたい。 ひとまず9個のピースに分けて、それぞれ引きずり動作ができるようにした。 あと必要な機能としては...
  ・ 隣り合うピース同士がピタッとくっつくようにする
  ・ ピースの形をジグソーパズルらしい形にする
  ・ 分割数を選べるようにする
などなど。 うーむ、先は長い。
 


先週、1/12 だったか、珍しく雪が積もりました。 家の前も、5cm ほど積もっていて、ちょっと驚きました。 このくらい降ったのは、たしか3年ぶりですね。 記事の画像は、職場近くの公園です。 見慣れた景色が一変し、一面真っ白になっていて大変きれいでした。 ただ、残念ながら翌日には、ほとんど解けてしまいましたが...。

| | コメント (2) | トラックバック (0)

パズルピースの引きずり動作 (6)

ジグソーパズルのソフトとして、ピースの引きずり動作を組み込む場合、平行移動と小回りのきく回転と、どちらも実現できるようにしたい。 今回、こんな感じでどうかな、というサンプルを作成した。 前回まで説明したような方法をさらに改良したものだが、具体的にどういう仕組みになっているかは、とりあえず企業秘密ということで。

上のプログラムでピースに貼り付けた画像、いったい何のデザインか分かるでしょうか? (特殊な状態で、デジカメで撮影したものです。 普通に見た時の色とは異なっています。)

| | コメント (2) | トラックバック (0)

パズルピースの引きずり動作 (5)

ジグソーパズルのピースを針先で引きずる動きについて、前回まで、1点または2点に重さが集中しているものとして分析を行った。 今回は、より現実に近い状況、つまり板全体に重さが広がっている場合を考えてみる。

2点集中の場合、「摩擦力による回転のモーメントの釣り合い」 という条件を元に、板の回転角を予想した。 重さが面状に分布している場合も、考え方は同様である。 面全体にまんべんなく広がったたくさんの点を考え、それぞれの点に作用する摩擦力の回転成分を、すべて足し合わせて 0 になるような角度を求めればよい。 すなわち、摩擦力のモーメントを面全体で積分した時に、その結果が0になればよい。 計算式はこちら。 → (引きずり動作時の回転角2)

今回、引きずり動作プログラムを改造し、重さが1点/2点に集中している場合の他に、面分布の場合も、試せるようにした。 2点集中の場合と比べると、面分布のときは、回転の小回りがきかない感じがする。 その分、中心付近を引きずる時は、回転しにくく平行移動に近い動作になるようだ。

ジグソーパズルのソフトとして、引きずり動作を組み込む場合は、たぶん平行移動と小回りのきく回転と、どちらも実現できるのが望ましい。 どういう方式を使えばよいかは、またあらためて検討することにしよう。

Photo息子が最近ガンプラにはまっています。 昔のプラモデルと違って、ガンプラって接着剤なしで作れるんですよね。 全然知らなかったんですが、20年位前から徐々にそうなってきたらしいです。 かなり細かい部品が100個ぐらいあり、それぞれに小さな棒または穴があって、一つづつはめ合わせていくと、全部できてしまいます。 たぶんミクロン単位の精度で部品を成型しているのでしょうね、すごいです。

このような 「便利さ」 が模型作りという趣味の世界で、どこまで意味があるのか、というのが気にならないでもないですけど、でも、よけいなお世話でしょうね。 作っている本人は、製作に没頭していて楽しそうです。

| | コメント (0) | トラックバック (0)

パズルピースの引きずり動作 (4)

前回まで、ジグソーパズルのピースを針先で引きずるような動きについて書いてきた。 「針先をある方向にちょっとだけ動かすと、ピースがどれくらい回転するか」 については、計算して求めることができる。 前回書いたように、ピース上の2点に重さが集中している場合の計算式はこちら。 → (引きずり動作時の回転角)

今回、画面上で四角形を引きずって動かせるプログラムを作成してみた。 重さが1点に集中している場合と、2点に集中している場合の、両方を試してみることができる。 

◇ 1点集中の場合、中心付近を引きずると、回転角が大きすぎて不安定になる。

◇ 2点集中の場合、中心付近を引きずると、微妙に回転しながら移動する。 本物のピースを針で引きずる場合も、たぶん、このような動きになるかと思う。 ただし、ジグソーパズルのソフトとして画面上で操作する時は、微妙に回転してしまうと、少々扱いにくいかもしれない。

前にも一度見たことがあるのですが、外山恒一氏の都知事選の政見放送。 時々見ているブログで公開されているのを見つけて、またしても笑ってしまいました。 政治を茶化すつもりはないけれど、世間には、こういう緩い人も必要なんじゃないかと思います。 やることが破天荒なだけに、過去にはスキャンダラスな事もあったようですが、それでも大変面白い人物には違いないです。

一時期、熊本にも住んでいたようで、地元向けのニュースサイトでインタビューが公開されています。 政見放送とは違う素の喋りですが、彼の独特の人生観が垣間見えて、こちらの話もとても面白いと思いました。 (1時間ほどだらだらと話しているので、全部聴くのは、ちょっとめんどうかもしれませんが。) → ばってんラジオ

| | コメント (2) | トラックバック (0)

パズルピースの引きずり動作 (3)

_3_3パズルのピースの引きずり動作について。 前回、板の重心に重さが集中していると考えて、引きずる時の動きを予想した。 しかし、この考え方だと、重心の近くを押さえて動かす時に不安定な動きになってしまう。(右図)


_5_2より実際のピースに近い動きを予想するには、例えば右図のように、板の重さを2点に分配すると良い。 前回同様、小さな重りに棒がついたものを考えると下図のようになる。

_5_3_6

実際に針で棒の角を押さえて、ゆっくり動かす場合、移動中は、針先を中心に回転させる力 (摩擦力によるモーメント) が、全体として、ほぼ 0 になるはずである。 (さもないと、針を止めた後も回り続けることになる。) 摩擦力は、移動速度、すなわち一定時間に移動する距離に比例する(図中の青い矢印)。 また回転させる力は、摩擦力の一部 (棒と直角方向の成分)である(図中の赤い矢印)。 結局、重りの移動は、図中の式を満たすような大きさと向き (F1,F2 の逆方向) になる。

この式をもとに、移動後の重りの位置を求めるのは、数学の話になるが、今回はここまで。

正月休みで、ブログの更新もしばらく休んでおりました。 12/31 から、家族で南阿蘇の貸しコテージに泊って年越し。 夜中に雪が降って大変寒かったものの、元日の朝は青空が見えて、気持ちの良い正月となりました。 写真は根子岳。
Photo_3

| | コメント (0) | トラックバック (0)

« 2009年12月 | トップページ | 2010年2月 »