パズルピースの作成 (5) 朱ぬりかべ
|
« 2009年12月 | トップページ | 2010年2月 »
|
今日は飲み会。 最後に こだいこ で、昔ながらの臭いラーメンを食べて帰ってきました。 |
前の記事で、パズルピースの画像を表示する時の動きについて書いた。 このとき、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号が届いたので、読んでいる所です。 「世の中入門講座」 が画期的。 「人間は、本当は別にやりたいことがあるのに、将来のためにやりたくない作業をやらなくてはならないという 『労働』 のつらさをかかえることになったのです。」 というのは、一見、当たり前のことように思えますが、実は文明と引き換えに発生した業のようなものなんですね。 世の中の本質をついた、とても分かりやすい話だと思って感心しました。 |
このところ、昼休みに弁当を食べたあと、昼寝をするのが日課になっています。 職場にはそういう場所は無いので、外の駐車場に行き、車のシートを倒して、いつも積んである毛布をかぶって、うつらうつらするのが気持ちいい...。 いちおう寝過ごさないように、携帯電話のアラーム機能をセットしておきます。 寝ていられる時間が30分ぐらいしかないのが、ちょっと物足りないですね。 できれば、後1時間ぐらい寝ていられるといいですが...やはり、歳のせい? |
先週、1/12 だったか、珍しく雪が積もりました。 家の前も、5cm ほど積もっていて、ちょっと驚きました。 このくらい降ったのは、たしか3年ぶりですね。 記事の画像は、職場近くの公園です。 見慣れた景色が一変し、一面真っ白になっていて大変きれいでした。 ただ、残念ながら翌日には、ほとんど解けてしまいましたが...。 |
ジグソーパズルのソフトとして、ピースの引きずり動作を組み込む場合、平行移動と小回りのきく回転と、どちらも実現できるようにしたい。 今回、こんな感じでどうかな、というサンプルを作成した。 前回まで説明したような方法をさらに改良したものだが、具体的にどういう仕組みになっているかは、とりあえず企業秘密ということで。
上のプログラムでピースに貼り付けた画像、いったい何のデザインか分かるでしょうか? (特殊な状態で、デジカメで撮影したものです。 普通に見た時の色とは異なっています。) |
ジグソーパズルのピースを針先で引きずる動きについて、前回まで、1点または2点に重さが集中しているものとして分析を行った。 今回は、より現実に近い状況、つまり板全体に重さが広がっている場合を考えてみる。
2点集中の場合、「摩擦力による回転のモーメントの釣り合い」 という条件を元に、板の回転角を予想した。 重さが面状に分布している場合も、考え方は同様である。 面全体にまんべんなく広がったたくさんの点を考え、それぞれの点に作用する摩擦力の回転成分を、すべて足し合わせて 0 になるような角度を求めればよい。 すなわち、摩擦力のモーメントを面全体で積分した時に、その結果が0になればよい。 計算式はこちら。 → (引きずり動作時の回転角2)
今回、引きずり動作プログラムを改造し、重さが1点/2点に集中している場合の他に、面分布の場合も、試せるようにした。 2点集中の場合と比べると、面分布のときは、回転の小回りがきかない感じがする。 その分、中心付近を引きずる時は、回転しにくく平行移動に近い動作になるようだ。
ジグソーパズルのソフトとして、引きずり動作を組み込む場合は、たぶん平行移動と小回りのきく回転と、どちらも実現できるのが望ましい。 どういう方式を使えばよいかは、またあらためて検討することにしよう。
![]() このような 「便利さ」 が模型作りという趣味の世界で、どこまで意味があるのか、というのが気にならないでもないですけど、でも、よけいなお世話でしょうね。 作っている本人は、製作に没頭していて楽しそうです。 |
前回まで、ジグソーパズルのピースを針先で引きずるような動きについて書いてきた。 「針先をある方向にちょっとだけ動かすと、ピースがどれくらい回転するか」 については、計算して求めることができる。 前回書いたように、ピース上の2点に重さが集中している場合の計算式はこちら。 → (引きずり動作時の回転角)
今回、画面上で四角形を引きずって動かせるプログラムを作成してみた。 重さが1点に集中している場合と、2点に集中している場合の、両方を試してみることができる。
◇ 1点集中の場合、中心付近を引きずると、回転角が大きすぎて不安定になる。
◇ 2点集中の場合、中心付近を引きずると、微妙に回転しながら移動する。 本物のピースを針で引きずる場合も、たぶん、このような動きになるかと思う。 ただし、ジグソーパズルのソフトとして画面上で操作する時は、微妙に回転してしまうと、少々扱いにくいかもしれない。
前にも一度見たことがあるのですが、外山恒一氏の都知事選の政見放送。 時々見ているブログで公開されているのを見つけて、またしても笑ってしまいました。 政治を茶化すつもりはないけれど、世間には、こういう緩い人も必要なんじゃないかと思います。 やることが破天荒なだけに、過去にはスキャンダラスな事もあったようですが、それでも大変面白い人物には違いないです。
一時期、熊本にも住んでいたようで、地元向けのニュースサイトでインタビューが公開されています。 政見放送とは違う素の喋りですが、彼の独特の人生観が垣間見えて、こちらの話もとても面白いと思いました。 (1時間ほどだらだらと話しているので、全部聴くのは、ちょっとめんどうかもしれませんが。) → ばってんラジオ |
パズルのピースの引きずり動作について。 前回、板の重心に重さが集中していると考えて、引きずる時の動きを予想した。 しかし、この考え方だと、重心の近くを押さえて動かす時に不安定な動きになってしまう。(右図)
より実際のピースに近い動きを予想するには、例えば右図のように、板の重さを2点に分配すると良い。 前回同様、小さな重りに棒がついたものを考えると下図のようになる。
実際に針で棒の角を押さえて、ゆっくり動かす場合、移動中は、針先を中心に回転させる力 (摩擦力によるモーメント) が、全体として、ほぼ 0 になるはずである。 (さもないと、針を止めた後も回り続けることになる。) 摩擦力は、移動速度、すなわち一定時間に移動する距離に比例する(図中の青い矢印)。 また回転させる力は、摩擦力の一部 (棒と直角方向の成分)である(図中の赤い矢印)。 結局、重りの移動は、図中の式を満たすような大きさと向き (F1,F2 の逆方向) になる。
この式をもとに、移動後の重りの位置を求めるのは、数学の話になるが、今回はここまで。
正月休みで、ブログの更新もしばらく休んでおりました。 12/31 から、家族で南阿蘇の貸しコテージに泊って年越し。 夜中に雪が降って大変寒かったものの、元日の朝は青空が見えて、気持ちの良い正月となりました。 写真は根子岳。![]() |
最近のコメント