WISS〜Wave Impression Search System〜

WISS

[公開日]2017.11.11
[動作環境]Windows/Mac OS

2017年11月10日〜11日のハッカソンで製作したシステムです。

WISSとは、Wave Impression Search Systemの略で、手書き入力した波形と類似する、激しさ・明るさ・男女度の音楽動画を検索する、今までとは全く違った新時代の音楽動画検索システムです。
僕は、ユーザ入力の波形と楽曲の各要素(激しさ・明るさ・男女度)の変化をコサイン類似度で計算・比較し、その波形と似ている楽曲を推薦する部分を担当しました。

ステアリングの法則の実証実験

フィッツの法則

[公開日]2017.4.25
[動作環境]Windows/Mac OS

ステアリングの法則によれば、ディスプレイ上でポインターを移動する時に、
Tを動作を完了する平均時間、
Dを移動距離、
Wを移動する道の幅、
とすると上記の式に則るらしい(a、bは実験環境で決まる定数。)。

本プログラムで自由にトンネル内をカーソル移動してそれを確かめてみましょう。

本プログラムはトンネルを通過する度に「D, W, T」の並びで数値がウィンドウ下部に表示されます。

フィッツの法則の実証実験

フィッツの法則

[公開日]2017.4.25
[動作環境]Windows/Mac OS

フィッツの法則によれば、ディスプレイ上でポインティングする時に、
Tを動作を完了する平均時間、
Dを開始点から対象の中心までの距離、
Wを動きの方向に測った対象物の幅、
とすると上記の式に則るらしい(a、bは実験環境で決まる定数。)。

本プログラムでx軸移動する円(大きさ可変)をポインティングしてそれを確かめてみましょう。

本プログラムは円をクリックする度に「D, W, T」の並びで数値がウィンドウ下部に表示されます。

人の情報処理モデルの実証実験

ヒューマンコンピュータインタラクション入門

[公開日]2017.4.18
[動作環境]Windows/Mac OS

人の情報処理モデル(S.K.Card)によれば、
外界からの情報を知覚する知覚プロセッサが"100ms"、
情報を解釈して必要とされる反応を選択する認知プロセッサが"70ms"、
手の筋肉などを動かす運動プロセッサが"70ms"、
は最低かかるそうです。

つまり、目の前で何かが点灯してからすぐにボタンを押すまで240ms以上かかるということがいわれています。

本当にそうなのでしょうか?
本プログラムでそれを確かめてみようと思います。

画像をクリックしてリンク先に飛んだら、一度白枠内のどこかをクリックしてカーソルを合わせておいてください(合わせないとスペースキー押した時にページの下に移動するだけになってしまいます。)。
その後、赤く光ったらスペースキーを押してみてください。
押したら光ってからボタンが押されるまでにかかった時間が表示されます。

240ms以下であったらあなたは反射神経オバケです。

kickAR

[公開日]2016.1.30
[動作環境]動画のみ

AR流行ってますね。
ということで、ボールに足を当てる位置調整ができるようなものを作りました。
ちなみに、キッカーと読みます。

初3Dモデル作り、初ARです。

ダイクストラ法による最短距離移動

ダイクストラ

[公開日]2015.7.20
[動作環境]Windows/Mac OS

最短経路問題における重要アルゴリズムであるダイクストラ法を用いて、よくゲームであるようなドット移動を実装しました。
途中に障害物が置かれてもそれを避けた最短距離を選択してくれます。
動きが可愛いです。

画像をクリックすると体験できます。

日本代表試合検索

試合検索

[公開日]2015.7.20
[動作環境]Windows/Mac OS

過去の日本代表の試合検索ができます。
徹底的にシンプルを追求しました(笑)。

画像をクリックすると検索サイトへ飛びます。

[追記(2016.3.30)]
検索できる試合数を追加しました。

Hough変換による直線検出

直線検出

[公開日]2015.7.17

あらかじめ輪郭抽出をした画像から20本の直線を検出しました。

Hough変換とは、x-y空間の情報をρ-θ空間(x-y空間上の原点から点Aを通るある直線までの距離をρ、x軸からの角度をθ(つまり、ある点Aを通るρとθの組は無限に存在する)としている)へマッピングする手法を用いた、直線検出の重要アルゴリズムです。
無数に存在するとは言っても、ρは長くても元画像の対角線以上にはなり得ないですし、θは角度なので0≦θ<2πの範囲だけ(本当は0≦θ<π)考えればいいので範囲の定まった2次元平面(ρ-θ空間)上に曲線で表すことができます。
また、x-y空間上のある点Aを通るある直線と、ある点Bを通るある直線が一致していた場合、ρ-θ空間では同じある1点で表されます。
つまり、x-y空間の情報をρ-θ空間へマッピングした時に、ρ-θ空間上においてある点に曲線の交点が集中していれば、その点がx-y空間上での直線候補となります。

今回は工夫を全くしていないので、直線っぽくなくても、画像の一直線上に点がたくさんあると、そこを直線として検出してしまっています。

MATLABデータ処理

MATLABコップ

[公開日]2015.6.27
[動作環境]Windows/Mac OS

MATLABを用いてコップの動作データを可視化&機械学習しました。

リンク先はその結果をHTML出力したものになります。

オセロ

オセロ

[公開日]2015.6.2
[動作環境]Windows/Mac OS

定番ですがオセロを作ってみました。
オプションとして、石の色の選択やUNDO機能(本当はやっちゃダメですよね)を持たせています。
石の選択はゲームの途中でも変更できるため、途中でCOMを引き継いだり、次の手をCOMだったらどう打つのか確認したりできます。
また、パスはどこにも置けなかった場合のみ自動で行われます。
最後のマスまで埋まると自動的に集計して結果を表示してくれます。

画像をクリックすると体験できます。

非ゼロ和ゲーム

非ゼロ和ゲーム

[公開日]2015.5.15
[動作環境]Windows/Mac OS

ゼロ和ゲームとは敵味方の得点の総和が絶えず0であるようなゲームのことです。つまり、どちらかが優勢になればその分どちらかが劣勢になるような種類のゲームです。

逆に、非ゼロ和ゲームとはそうでないゲームの総称です。
このゲームは、非ゼロ和である信頼と裏切りのゲームです。
具体的には、プレーヤーは2人で、それぞれカードを1枚持っており、表には「信頼」裏には「裏切り」と書いてあるとして、ジャンケンの要領で同時にカードを相手に見せます。その結果が「信頼・信頼」の時には2人とも5点を得ます。「信頼・裏切り」の時には裏切った方が3点を得て、信頼した方は0点。「裏切り・裏切り」の時には2人とも2点を得ます。

単純に相手に勝つだけならば「裏切り続ければいい」のですが、このゲームでは相手に勝つことは目指しません
このゲームの目標はできるだけ高得点を挙げることです。
このことから、相手が「信頼」で来る時にはこちらも「信頼」を出した方が高得点が期待できることがわかります。

今回は、こちらの攻め側とこちらの受け側、相手の攻め側とこちらの受け側で対戦した結果をこちらの総得点、相手の攻め側と相手の受け側、こちらの攻め側と相手の受け側で対戦した結果を相手の総得点として、総得点が高かった方の勝ちというルールを想定してプログラムを作成しました。
つまり、相手に得点を稼がれにくい(且つ自分どうしでは稼ぎやすい)ような戦略でカードを出すような攻め側のプログラム、どんな相手にも得点を稼ぎやすい(且つ自分どうしではさらに稼ぎやすい)ような戦略でカードを出すような受け側のプログラムの2種類を実装しています。

ちなみに私が実装した攻め側は、1000回の試行を1フェーズとして、フェーズ毎に1/10の確率でランダム提示し、残り9/10の確率で自分の1回前の手と同じ手を出し続ける(さらに100試行毎に逆の手に切り替える)ようなプログラムにしました。
受け側は、同じ手を出し続けやすい攻め側を考慮して、2回前の相手の試行が「裏切り」且つ1回前の相手の試行が「信頼」の時は「裏切り」を出し、それ以外は相手の1回前の試行と同じ手を出すというプログラムにしました。また、このプログラムは、相手のプログラムがよく手が変わる時には「裏切り」を出して確実に得点を稼ぎ、手が変わりにくい時には「信頼」も出していき高得点を稼ぐような戦略を持ったプログラムです。

相手がいないので自分のプログラムどうしの対戦ですが、10000試行行なった結果を出力しています。また、フェーズ毎の対戦結果を円グラフで可視化もしています。完全にランダムで行なった場合、期待値が25000点になりますが、それよりは得点できていることがわかります。

バッティングセンター3D

[公開日]2015.1.16
[動作環境]動画のみ

バッティングセンターを体験できる作品です。

ボタンを押すことでバットを振ることができ、当たればボールが飛んでいきます。
また、球速を変更できるボタンも配置しました。

Web埋め込みできなかったので、動画のみになります。

GitHub上に置いてあるのでよければこちらで試してみてください。

正弦波生成による楽曲再現

正弦波楽曲再現

[公開日]2014.7.15
[動作環境]Windows/Mac OS(IE除く)

正弦波信号を1つ1つ作り(ドレミの音階それぞれに当たる周波数、振れ幅、秒数などをすべて手動で指定)、それを1つ1つ組み合わせて、嵐のLove so sweetを再現しました。


ちなみに指数関数減衰させてみたのがこちらです。


振幅変調(AM)信号にもしてみました。


チャープ信号にもしてみました。(これはもはや原型ないですね。)


周波数変調(FM)信号にもしてみました。


指数関数減衰周波数変調(FM)信号にもしてみました。

再帰クリスタル

再帰クリスタル

[公開日]2014.6.10
[動作環境]Windows/Mac OS

再帰的処理(自分自身を何度も呼び出し同じ処理を繰り返すこと)を用いてクリスタルを作りました。
アルゴリズムの勉強も兼ねています。
色をランダムに高速変化させることでパリパリ感も表現しています。

ピタゴラ装置

[公開日]2014.6.10
[動作環境]動画のみ

fisicaという物理演算が得意な外部ライブラリを用いてピタゴラ装置を作りました。
ボールを射出してカゴに入れ、シーソーを傾ける遊びです。
最後にサッカー日本代表への応援メッセージが完成します。(2014サッカーW杯直前に製作)

GitHub上に置いてあるのでよければこちらで試してみてください。

研究室からの脱出

研究室からの脱出

[公開日]2014.1.20
[動作環境]Windows/Mac OS

研究室(参考:小松研)から脱出することを目指すゲームです。
4方向視点変換でき、散らばった4桁の解除コードを見つけます。

あなたは無事小松研から脱出できるかっ!

踏切

踏切

[公開日]2013.7.22
[動作環境]Windows/Mac OS

踏切を模倣したプログラムです。
クリックすると遮断機が下りていき、電車が通り過ぎると自動的に上がります。
左右キーで電車の方向を指定でき、方向ライトが点灯します。
電車自体は。。。許してください。あくまでも「踏切」という目線で見てください。
こだわりは線路と遮断機のデザインです。

画像をクリックすると体験できます。

マウストラッキング

Swanyトラッキング

[公開日]2013.7.3
[動作環境]Windows/Mac OS

マウストラッキングしてみました。
トラッキングはオリジナルキャラクターに頼むことにしました。

画像をクリックすると体験できます。

めいじろうを倒せ!

めいじろうを倒せ!

[公開日]2013.5.20

人生初のプログラミング。

めいじろうを倒す(捕獲する)ゲームです。
捕まえれば捕まえるほどscoreが増えていきます。
ある程度捕獲し終えるとあの教授が登場します。
あなたは、あの強敵に打ち勝てるかっ!

HSPプログラムの埋め込み方わからないのでしばしお待ちを。