<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns="http://purl.org/rss/1.0/"
>

<channel rdf:about="http://bygzam.seesaa.net/">
<title>Tari Lari Run</title>
<link>http://bygzam.seesaa.net/</link>
<description>これでいいのだ</description>
<dc:language>ja</dc:language>
<admin:generatorAgent rdf:resource="http://blog.seesaa.jp/" />
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/123123010.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/122978159.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/122376028.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/121933240.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/121806321.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/121751514.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/121676790.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/121518447.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/121280426.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/121078134.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/120470716.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/120327133.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/120283502.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/120266549.html" />
<rdf:li rdf:resource="http://bygzam.seesaa.net/article/120195776.html" />
</rdf:Seq>
</items>
</channel>

<item rdf:about="http://bygzam.seesaa.net/article/123123010.html">
<link>http://bygzam.seesaa.net/article/123123010.html</link>
<title>真・東方縦画面化ツール</title>
<description>真・東方縦画面化ツールを公開しました。</description>
<dc:subject>アプリケーション</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-07-09T09:28:16+09:00</dc:date>
<content:encoded><![CDATA[

<p>東方シリーズ(風神録以降)を縦画面で遊べるようにするツールです。普通に横画面のままアスペクト比固定拡大することもできます。</p>  <ul>   <li><a href="http://bygzam.up.seesaa.net/zip/th_pivot_dx9-090709.zip">th_pivot_dx9-090709.zip</a> Version 2.0 (2009/07/09) </li> </ul>  <p>縦画面中は、ゲーム中と認識すると自動的に左側のゲーム画面のみを画面いっぱいに拡大表示します。また、スコア等も位置を変えて上下の余白部分に表示します。</p>  <p>以前のアス比固定拡大ツールからあまり必要のない機能(アス比固定以外のスケーリング、マウスサポート等)を削り、設定をシンプルにしました。各種シェーダはプラグイン式からビルトインにして、簡単に切り替えられるようにしました。(組み込み済みフィルタ：バイリニア、Bスプライン、バイキュービック、Lanczos2)</p>  <p>東方風神録不具合修正ツールも統合してあるので、GeForce8x00/9x00での1面のチラつき等が直ります。</p>  <p>保証はしませんが、東方シリーズ以外でも描画にDirectX9を使っているソフトならばアス比固定拡大&amp;回転ツールとして使用できます。ただし、マウス関係の機能は実装していないので、マウスを使うゲームでは問題があるかもしれません。</p>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/122978159.html">
<link>http://bygzam.seesaa.net/article/122978159.html</link>
<title>ボリュームたっぷり大作ブラウザゲーム</title>
<description>最近は、ウェブブラウザ上で無料で遊べる、いわゆるブラウザゲームと呼ばれるものが沢山あります。私も最近は、ダウンロードしてインストールするようなフリーのゲームは滅多に遊ぶこともなく、ほとんどがブラウザ上で動くゲームで遊んでいます。  多くのブラウザゲームは短時間でちょっと遊べる程度のボリュームですが、中には非常にボリュームのある大作もあります。今回はそんな、大作ブラウザゲームを紹介します。  Steppenwolf  何年か前にアメリカのワーナーブラザーズのウェブサイト上で、連...</description>
<dc:subject>雑記</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-07-07T07:51:59+09:00</dc:date>
<content:encoded><![CDATA[

<p>最近は、ウェブブラウザ上で無料で遊べる、いわゆるブラウザゲームと呼ばれるものが沢山あります。私も最近は、ダウンロードしてインストールするようなフリーのゲームは滅多に遊ぶこともなく、ほとんどがブラウザ上で動くゲームで遊んでいます。</p>  <p>多くのブラウザゲームは短時間でちょっと遊べる程度のボリュームですが、中には非常にボリュームのある大作もあります。今回はそんな、大作ブラウザゲームを紹介します。</p>  <h3><a href="http://www2.warnerbros.com/web/steppenwolf/home.jsp">Steppenwolf</a></h3>  <p>何年か前にアメリカのワーナーブラザーズのウェブサイト上で、連載のような形でアドベンチャーゲームを配信していたことがあり、Steppenwolfはその中の1つです。</p>  <p>ゲームの内容は少しアクション性のあるアドベンチャーゲームで、有名なゲームで例えるとThe Secret of Monkey Islandに近いです。</p>  <p>操作は[矢印キー]で移動、[Shift]+[矢印キー]でダッシュ、[Ctrl]でジャンプ、[Shift]+[Ctrl]で大ジャンプ、[スペース]でアクション、[T]で次のアイテムを選択、[I]でアイテム選択画面を開きます。</p>  <p>エピソードの選択が分かりにくく、初期状態では最後の第6章が選択されているので、各章への直接リンクも書いておきます。</p>  <p>第1章 「mokele mbembe」 <a href="http://www2.warnerbros.com/steppenwolf/med/Prologue.swf">プロローグ</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode1.swf">1</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode2.swf">2</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode3.swf">3</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode4.swf">4</a></p>  <p>第2章 「the yeti」 <a href="http://www2.warnerbros.com/steppenwolf/med/prologue_yetti.swf">プロローグ</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode5.swf">1</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode6.swf">2</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode7.swf">3</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode8.swf">4</a></p>  <p>第3章 「the heruka」 <a href="http://www2.warnerbros.com/steppenwolf/med/prologue_huruka.swf">プロローグ</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode9.swf">1</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode10.swf">2</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode11.swf">3</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode12.swf">4</a></p>  <p>第4章 「the kraken」 <a href="http://www2.warnerbros.com/steppenwolf/med/prologue_kraken.swf">プロローグ</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode13.swf">1</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode14.swf">2</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode15.swf">3</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode16.swf">4</a></p>  <p>第5章 「the chupakabra」 <a href="http://www2.warnerbros.com/steppenwolf/med/prologue_chupakabra.swf">プロローグ</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode17.swf">1</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode18.swf">2</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode19.swf">3</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode20.swf">4</a></p>  <p>第6章 「the heruka, pt.2」 <a href="http://www2.warnerbros.com/steppenwolf/med/PrologueChap6.swf">プロローグ</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode21.swf">1</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode22.swf">2</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode23.swf">3</a>/<a href="http://pdl.warnerbros.com/wbol/us/steppenwolf/games/episode24.swf">4</a></p>  <p>全編フルボイスで、会話も英語の音声のみなので、英語が苦手な人はちょっと大変かもしれません。</p>  <h3><a href="http://www2.warnerbros.com/web/arcane/home.jsp">Arcane Season2 - The Stone Circle</a></h3>  <p>これもワーナーのサイトで連載されていたアドベンチャーゲームですが、Steppenwolfとは操作方法が違い、画面をマウスでクリックすることで移動やアクションを行います。入手したアイテムは、使いたい場所にドラッグ＆ドロップすることで、使用できます。無駄なクリックが多すぎるとゲームオーバーになってしまいます。</p>  <p>こちらも直接リンクを置いておきます。</p>  <p><a href="http://www2.warnerbros.com/arcane/swf/prologue.swf">プロローグ</a>/<a href="http://www2.warnerbros.com/arcane/swf/Arc2Episode1.swf">1</a>/<a href="http://www2.warnerbros.com/arcane/swf/Arc2Episode2.swf">2</a>/<a href="http://www2.warnerbros.com/arcane/swf/Arc2Episode3.swf">3</a>/<a href="http://www2.warnerbros.com/arcane/swf/Arc2Episode4.swf">4</a>/<a href="http://www2.warnerbros.com/arcane/swf/Arc2Episode5.swf">5</a>/<a href="http://www2.warnerbros.com/arcane/swf/Arc2Episode6.swf">6</a>/<a href="http://www2.warnerbros.com/arcane/swf/Arc2Episode7.swf">7</a>/<a href="http://www2.warnerbros.com/arcane/swf/Arc2Episode8.swf">8</a></p>  <p>印象としては、80年代に流行っていたアドベンチャーゲームに近いでしょうか。</p>  <p></p>  <h3>Arcane Season1 - The Miller Estate</h3>  <p>The Stone Circleの前作にあたる作品です。紹介する順番が逆ですが、ストーリー的な繋がりは皆無なので、面白い順にということでw</p>  <p>これもSeason2と同様に画面をクリックしていくタイプです。2と比べるとあまりボリュームはなく、すぐに終わってしまいます。</p>  <p>現在、ワーナーのサイトには置いてないので、ミラーサイトへリンクしておきます。</p>  <p><a href="http://www.moregames24.com/2007/05/arcane-season-1-miller-estate-episode-1.html">1</a>/<a href="http://www.moregames24.com/2007/05/arcane-season-1-miller-estate-episode-2.html">2</a>/<a href="http://www.moregames24.com/2007/05/arcane-season-1-miller-estate-episode-3.html">3</a>/<a href="http://www.moregames24.com/2007/05/arcane-season-1-miller-estate-episode-4.html">4</a></p>  <p>こちらの方が、昔の紙芝居アドベンチャーに近いかもしれませんね。</p>  <h3><a href="http://www.newgrounds.com/portal/view/498969">Super Mario 63</a></h3>  <p>スーパーマリオ64を2Dで作った作品です。ベースはスーパーマリオ64ですが、スーパーマリオサンシャインの要素なども加わっています。</p>  <p>圧倒的なボリュームと完成度で、とても趣味で作ったとは思えない出来です。</p>  <p>特にレベルデザインが秀逸で、基本のマリオとジャンプ力のあるルイージ、各種ポンプの有無で極端に難易度が変わってしまう面が有りません。</p>  <p>ミニステージを除けば、各ステージごとに以前クリアしたときに取っておいたポンプが記憶されていて、次からは最初から使用可能になっているので、難しそうなルートは後回しにしてまずはホバーを手に入れると良いです。(ポンプ無しでの時計の振り子渡りはちょっとしたトラウマ)</p>  <p>Pを押すとポーズがかかり、そこからスターコインの収集状況の確認や、今プレイしているステージから抜けることができます。また、各ステージの開始時に左右でシャイン(これを取るとステージクリア)の選択ができ、その在り処のヒントが見れます。</p>  <p>ちなみに分かりにくいクッパの倒し方ですが、後ろに回ってしゃがむと尻尾を掴めるので、そこから左右連打でジャイアントスイングをし、Cを押すと投げます。機雷等にクッパを3回ぶつけると倒せます。</p>  <p>権利的にかなり問題のある作品ですが、細かいことは忘れましょうw</p>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/122376028.html">
<link>http://bygzam.seesaa.net/article/122376028.html</link>
<title>ひさしぶりにSuperFetchを有効にしてみた</title>
<description>親Vista派の私でも「OSを売るっていうレベルじゃねーぞ！」と欠陥品の烙印を押したのがSuperFetchです。  本来ならフォアグラウンドアプリケーションの動作を妨げてはいけないはずのSuperFetchが、HDDの性能を無視してアクセス要求をし、HDDがフル稼働状態になって他のアプリケーションからのアクセスをほとんど処理できない状態になることがありました。(GoogleEarthを起動した後とかによくなってた)  この状態になってしまうと、SuperFetch無しなら5...</description>
<dc:subject>雑記</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-06-27T23:47:07+09:00</dc:date>
<content:encoded><![CDATA[

<p>親Vista派の私でも「OSを売るっていうレベルじゃねーぞ！」と欠陥品の烙印を押したのがSuperFetchです。</p>  <p>本来ならフォアグラウンドアプリケーションの動作を妨げてはいけないはずのSuperFetchが、HDDの性能を無視してアクセス要求をし、HDDがフル稼働状態になって他のアプリケーションからのアクセスをほとんど処理できない状態になることがありました。(GoogleEarthを起動した後とかによくなってた)</p>  <p>この状態になってしまうと、SuperFetch無しなら5秒程度で起動できるはずのアプリケーションの起動に5分以上かかってしまい、起動を速くするための機能が逆効果になってしまいます。</p>  <p>そんなわけで私はVistaを使い始めて数ヶ月でSuperFetchは無効にしました。</p>  <p>ところで先日、VistaにSP2を適用した直後くらいに、以前購入してから2週間で紛失したUSBメモリをPC裏のケーブル地獄の中から発掘しました。既に代わりのUSBメモリを買ってしまい、とくに使い道もないので、せっかくだからReadyBoostでも試そうとひさしぶりにSuperFetchを有効にしてみました。</p>  <p>SuperFetch&amp;ReadyBoost状態で使い始めてから、そろそろ1ヶ月くらいになりますが、以前体験したようなネガティブな症状はいまのところ全く発生していません。これがReadyBoostのおかげなのか、それともSP2で改善されたのか、あるいは当時使っていたアプリケーションと今ではファイル構成が違ってアクセスパターンが変化したのか、理由は良く分かりませんが今のところ良い感じです。</p>  <p>ReadyBoostのアプリケーションの起動が速くなる効果はあまり体感はできませんが、HDDのカリカリ音が減って静かになりました。また、他のアプリケーションが必死にHDDアクセスしてる最中に別のアプリケーションを立ち上げるというような使い方をしても、すんなり起動してくれます。</p>  <p>私と同じようにSuperFetchに絶望して無効にしている方は、もう一度試してみるといいかもしれません。</p>  <p>このままReadyBoostも使っていくことにしたので、今まで無頓着だったUSBの接続系統も整理してみました。</p>  <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="usb" border="0" alt="usb" src="http://bygzam.up.seesaa.net/usb.png" width="512" height="397" /> </p>  <p>ReadyBoost用のUSBメモリは帯域をフルに活かせるように、他の高帯域デバイスとはホストコントローラが分かれるようにしました。USBは1つのバスを時分割でシェアするので、こんな風に分けた方が速度は出ると思います。たぶんw</p>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/121933240.html">
<link>http://bygzam.seesaa.net/article/121933240.html</link>
<title>DELLのe-IPS液晶モニタ2209WAを購入しました</title>
<description>先日DELLから発売されたe-IPSパネル採用の液晶モニタ2209WAが、クーポン適用で19,800円になったので、さっそく購入しました。  このモニタの特長は次のような感じです。     廉価版とはいえIPSなので視野角がとても広い     スタンドの出来が良い(ピボット対応で画面を縦にも出来る)     遅延は1フレーム未満?     リフレッシュレート75Hzに対応     モニタにUSBハブ機能付き(モニタの電源を切るとUSBハブの電源もOFFになるので注意)    ...</description>
<dc:subject>雑記</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-06-21T13:54:56+09:00</dc:date>
<content:encoded><![CDATA[

<p>先日DELLから発売されたe-IPSパネル採用の液晶モニタ2209WAが、クーポン適用で19,800円になったので、さっそく購入しました。</p>  <p>このモニタの特長は次のような感じです。</p>  <ul>   <li>廉価版とはいえIPSなので視野角がとても広い </li>    <li>スタンドの出来が良い(ピボット対応で画面を縦にも出来る) </li>    <li>遅延は1フレーム未満? </li>    <li>リフレッシュレート75Hzに対応 </li>    <li>モニタにUSBハブ機能付き(モニタの電源を切るとUSBハブの電源もOFFになるので注意) </li>    <li>デフォルト設定ではガンマカーブがおかしい </li> </ul>  <p>遅延はビデオカードのクローン表示での測定は誤差があることを以前書きましたが、分配器を使って測定した人がいます。</p>  <p><a title="http://www.hardforum.com/showpost.php?p=1034028590&amp;postcount=1263" href="http://www.hardforum.com/showpost.php?p=1034028590&amp;postcount=1263">http://www.hardforum.com/showpost.php?p=1034028590&amp;postcount=1263</a></p>  <p>CRTと比較している写真を見ると、CRTの走査線と同じ位置でうっすらと同じ数字が見えているのが分かります。この分配器を信用すると、遅延は1フレームどころか全く無いことになります。(液晶側で前の数字が残っているのはホールド型の特性と応答速度の差)</p>  <p>また、上記サイトで75Hzの検証もしています。リフレッシュレート75Hzは、入力だけ対応していて表示は60Hzというモニタも多いのですが、このモニタは本当に75Hzで出力してくれます。</p>  <p><del>唯一の欠点とも言えるのは、ガンマカーブでしょうか。Windowsではガンマ値2.2を使うのが普通で、国際規格のsRGBでも2.2となっています。しかし、このモニタのデフォルト設定では、2.2から大きく外れています。デザイン関係で使う人は注意した方がいいでしょう。</del><ins>その後数日使っていたら、なぜか「標準」や「カスタム」でもガンマ2.2になりました。</ins></p>  <p>ガンマ値の測定は、専用の機材がなくても目視で行うことができます。下の画像の各色のグラデーションで、左右の滑らかな部分と中央の市松模様が同じ明るさに見えれば、ガンマ値2.2となります。(ただしSafariではPNGのガンマ補正問題があるので注意してください)</p>  <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="ガンマ2.2確認画像" border="0" alt="ガンマ2.2確認画像" src="http://bygzam.up.seesaa.net/gamma.png" width="256" height="256" /></p>  <p><del>色設定のプリセットモードを「マルチメディア」か「ゲーム」にして、コントラストを50前後にすると、だいたいガンマ値が2.2になるようです。ただし、マルチメディアに設定するとRGBのゲインを調整できません。この設定だと、私が今まで使っていたモニタよりも色温度が高めなので、もう少し下げたいのですが調整はできないようです。RGBのゲインが調節できるモードでは、ガンマ値が2.2ではなくなってしまいます。微調整はビデオカード側でするしかないですね。</del>マルチメディアとゲームの違いは色温度みたいで、ゲームの方が色温度が高くなります。</p>  <p>さて、せっかくピボット対応で縦にできるのだから、さっそく縦画面を試してみました。</p>  <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="DELL 2209WAで東方風神録(体験版)" border="0" alt="DELL 2209WAで東方風神録(体験版)" src="http://bygzam.up.seesaa.net/2209wa.jpg" width="400" height="300" /></p>  <p>ピボット対応モニタでゲームする人なんてほとんどいないと思っていたので、東方風神録縦画面化ツールはジョークのつもりだったのですが、2209WAの登場で今後は増えるかもしれませんね。</p>  <p>ちなみにアス比固定機能は一応あります。ただし、4:3と16:10の手動切り替えで、入力信号に関わらず強制的にそのサイズになります。16:9の設定はありません。</p>  <p>また、19インチSXGAと縦のサイズはほとんど変わらないので4:3の動画に関しては変わらないと思っていたのですが、SXGAでは1280*960で表示されてしまうのに対して、このモニタでは1400*1050で表示されるので一周り大きく映ります。これは嬉しい誤算でした。</p>  <p>19,800円という価格もあり、私としてはこのモニタには満足しています。今まで視野角は問題ないと思っていたS-PVAのモニタでも、上のガンマ値確認画像を少し斜めから見るとガンマカーブが狂うのですが、このモニタでは全く狂いません。さすがIPSです。</p>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/121806321.html">
<link>http://bygzam.seesaa.net/article/121806321.html</link>
<title>3D CGにおける行列の豆知識</title>
<description>内積・外積の話をしたついでに、行列の豆知識的なことを書いておきます。Direct3Dの行ベクトルに合わせているので、OpenGL等で列ベクトルを扱う場合は、行と列を入れ替えてください。  基底ベクトルを並べた物が回転行列になる  回転行列というのは、変換後の座標系の基底ベクトルをそのまま並べたものになります。Direct3Dで使う行ベクトルの場合は、行列の各行が基底ベクトルになります。     この性質は非常に便利で、ある方向を向かせるための回転行列は、その方向ベクトルとそれ...</description>
<dc:subject>プログラミング</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-06-19T14:08:36+09:00</dc:date>
<content:encoded><![CDATA[

<p>内積・外積の話をしたついでに、行列の豆知識的なことを書いておきます。Direct3Dの行ベクトルに合わせているので、OpenGL等で列ベクトルを扱う場合は、行と列を入れ替えてください。</p>  <h3>基底ベクトルを並べた物が回転行列になる</h3>  <p>回転行列というのは、変換後の座標系の基底ベクトルをそのまま並べたものになります。Direct3Dで使う行ベクトルの場合は、行列の各行が基底ベクトルになります。</p>  <p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="matrix" border="0" alt="matrix" src="http://bygzam.up.seesaa.net/matrix.png" width="222" height="66" /> </p>  <p>この性質は非常に便利で、ある方向を向かせるための回転行列は、その方向ベクトルとそれに直行するベクトルを用意してあげれば簡単に作ることができます。また、逆に姿勢行列から向きを表すベクトルが欲しいときは、行列の成分を抜き出すだけで得ることができます。一般的にZ軸の正の方向を正面として扱うので、そのようなオブジェクトの向きは姿勢行列の3行目と等しくなります。</p>  <h3>正規直行行列は転置すると逆行列になる</h3>  <p>正規直行基底からなる行列を、正規直行行列(あるいは単に直行行列)と言います。正規直行基底とは、長さが1でお互いに直行している基底のことです。回転行列は正規直行行列になります。</p>  <p>一般的に逆行列を求めるのは面倒な計算で、必ずしも逆行列が存在するとも限りません。しかし、正規直行行列では転置するだけで必ず逆行列になるので、非常に簡単に求まります。</p>  <p>スケーリングやせん断変形、並行移動などの回転以外の変換が混じっていると正規直行ではなくなるので、姿勢を行列で持つ場合はそれらと回転成分とは分けておいた方が便利です。</p>  <h3>左から行列を掛けるとローカル座標系での変換になる</h3>  <p>姿勢を行列で保持している場合に、姿勢行列に対して左から変換行列を掛けると、ローカル座標系での変換になります。逆に右から掛けると、グローバル座標系での変換になります。</p>  <p>例えば飛行機の機首上げ(ピッチアップ)は、第三者から見れば飛行機の姿勢によって回転軸が変わりますが、その飛行機からすれば常に同じ方向の回転です。このような回転はローカル座標系で処理すると簡単になります。</p>  <h3>VIEW行列は世界を動かす</h3>  <p>3D CGではWORLD、VIEW、PROJECTIONという三段変換をよく使います。概念的にはワールド行列はオブジェクトの位置を表し、ビュー行列はカメラの位置を表しています。</p>  <p>しかし、実際のビュー行列の中身というのはこの考え方とは全くの逆で、カメラは動かずに世界を動かしてカメラに合わせるという変換をします。ワールド行列の感覚でビュー行列を作ると逆になってしまうので注意が必要です。</p>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/121751514.html">
<link>http://bygzam.seesaa.net/article/121751514.html</link>
<title>外積の使い方</title>
<description>前回は内積のことを書いたので、今回はその友達の外積についてです。  内積も便利な道具ですが、外積も同じくらいかそれ以上に便利なもので、さらに内積と力を合わせると非常に強力な武器となります。  外積の定義は内積と比べると少し複雑で、ベクトルA(x1,y1,z1)とベクトルB(x2,y2,z2)の外積は次のようになります。  A×B = (y1*z2 - y2*z1, z1*x2 - z2*x1, x1*y2 - x2*y1)  内積の結果がスカラー値だったのに対して、外積の結果...</description>
<dc:subject>プログラミング</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-06-18T15:54:59+09:00</dc:date>
<content:encoded><![CDATA[

<p>前回は内積のことを書いたので、今回はその友達の外積についてです。</p>  <p>内積も便利な道具ですが、外積も同じくらいかそれ以上に便利なもので、さらに内積と力を合わせると非常に強力な武器となります。</p>  <p>外積の定義は内積と比べると少し複雑で、ベクトル<strong>A</strong>(x1,y1,z1)とベクトル<strong>B</strong>(x2,y2,z2)の外積は次のようになります。</p>  <p align="center"><strong>A</strong>×<strong>B</strong> = (y1*z2 - y2*z1, z1*x2 - z2*x1, x1*y2 - x2*y1)</p>  <p>内積の結果がスカラー値だったのに対して、外積の結果はベクトルである点が大きく違います。また、内積は何次元でも同じように定義されますが、外積は3次元ベクトルでしか使えません。(実際には1,3,7次元で使えるらしい。他の次元でも使える一般化した外積を定義するという試みも有ります)</p>  <p>外積の結果はこの式を見ても何のことだか分かりにくいと思います。実はこのベクトルは、<strong>A</strong>とも<strong>B</strong>とも直行するベクトルです。外積には交換法則が成り立たず、<strong>A</strong>×<strong>B</strong>と<strong>B</strong>×<strong>A</strong>では結果は逆向きのベクトルになります。また、|<strong>A</strong>×<strong>B</strong>|は<strong>A</strong>と<strong>B</strong>を辺とする平行四辺形の面積に等しくなります。</p>  <p>ところで、平行四辺形の面積というのは、底辺×高さと小学校で習ったと思いますが、<strong>B</strong>を底辺とすると次のようになります。</p>  <p align="center">S = |<strong>B</strong>| * h</p>  <p>高さhは三角関数を使って書くと |<strong>A</strong>|sinθ なので次のようになります。(θは<strong>A</strong>と<strong>B</strong>のなす角)</p>  <p align="center">S = |<strong>A</strong>||<strong>B</strong>|sinθ</p>  <p>内積がcosと関係が深い計算なら、外積はsinと関係が深い計算になります。ここからsinθ=の式に変換するのは簡単ですね。</p>  <p>3次元ベクトルでしか使えない外積ですが、2次元の処理でも(x,y,0)と3次元に拡張すれば使うことができ、色々と面白い使い方があります。その場合、結果のベクトルは必ずx,y成分が0になってz成分だけが変化するので、z成分だけを計算して使います。</p>  <p>それでは、外積の使い道をいくつか挙げていきます。</p>  <h3>法線ベクトルを求める</h3>  <p>ある平面上の一直線上にない3点が分かれば、そこから法線ベクトルを求めることができます。三角形などの多角形なら、並行でない2辺から計算できます。</p>  <h3>三角形の面積を求める</h3>  <p>平行四辺形の面積は底辺×高さ、三角形の面積は底辺×高さ÷2と非常によく似ているので、三角形の面積も外積から簡単に求まります。</p>  <h3>ある点が右左どちらにあるか分かる</h3>  <p>内積では前後関係が分かりましたが、外積では左右が分かります。ただし、この判定は3Dだと使いにくいので、主に2Dで使います。(3Dの場合は右向きベクトルとの内積を取る方が楽)</p>  <p>2Dでの左右の判定は、自分の向きを表す方向ベクトルと、自分から相手への方向ベクトルの外積を取り、結果のベクトルのz成分の正負の符号で分かります。</p>  <h3>凸多角形と点の内外判定ができる</h3>  <p>凸多角形とは、180度以上の角を持たない多角形です。(ちなみに凸という字は凸多角形ではありません)</p>  <p>凸多角形の辺を時計周りに調べたとき、点Pが全ての辺に対して右側にある場合、Pは凸多角形の中にあります。(半時計回りなら左側)</p>  <p>この前の回転する矩形も凸多角形なので、この方法が使えます。</p>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/121676790.html">
<link>http://bygzam.seesaa.net/article/121676790.html</link>
<title>内積の使い方</title>
<description>前回の話でベクトルの内積が出てきたので、ついでに内積の使い道をいくつか書いておきます。  まず、内積の定義だけ書いておきます。証明は教科書を読んでください。  ベクトルA(x1,y1,z1)、ベクトルB(x2,y2,z2)において、AとBの内積は次のようになります。  A・B = |A||B|cosθ  = x1*x2+y1*y2+z1*z2  ここでは3次元ベクトルを例にしましたが、内積は何次元のベクトルでも同じように定義されます。  最初の式にcosθが出てくるのに注目し...</description>
<dc:subject>プログラミング</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-06-17T11:33:38+09:00</dc:date>
<content:encoded><![CDATA[

<p><a href="http://bygzam.seesaa.net/article/121518447.html">前回の話</a>でベクトルの内積が出てきたので、ついでに内積の使い道をいくつか書いておきます。</p>  <p>まず、内積の定義だけ書いておきます。証明は教科書を読んでください。</p>  <p>ベクトル<strong>A</strong>(x1,y1,z1)、ベクトル<strong>B</strong>(x2,y2,z2)において、<strong>A</strong>と<strong>B</strong>の内積は次のようになります。</p>  <p align="center"><strong>A</strong>・<strong>B</strong> = |<strong>A</strong>||<strong>B</strong>|cosθ</p>  <p align="center">= x1*x2+y1*y2+z1*z2</p>  <p>ここでは3次元ベクトルを例にしましたが、内積は何次元のベクトルでも同じように定義されます。</p>  <p>最初の式にcosθが出てくるのに注目してください。内積の使い道は、このcosの性質を利用するものが多く、cosの使い道とも言えます。</p>  <h3>2つのベクトルのなす角θにおけるcosθの値を求める</h3>  <p>定義をちょっと変形するだけで、cosθが求まります。</p>  <p align="center">cosθ = (<strong>A</strong>・<strong>B</strong>)÷(|<strong>A</strong>||<strong>B</strong>|)</p>  <p align="center">= (x1*x2+y1*y2+z1*z2)÷(sqrt(x1^2+y1^2+z1^2)*sqrt(x2^2+y2^2+z2^2))</p>  <p>特に<strong>A</strong>、<strong>B</strong>が単位ベクトルの場合は、分母の部分が1になるので省略でき、<strong>A</strong>・<strong>B</strong>=cosθになります。3D CG等では方向を表すのに単位ベクトルをよく使うので、cosθが欲しいときは簡単な計算で得られます。</p>  <h3>直線上に垂線をおろした点の長さを求める</h3>  <p>前回の話に出てきたものです。これはcosの定義そのもので、直角三角形においてcosに斜辺の長さを掛けると底辺の長さになります。</p>  <p>ベクトル<strong>A</strong>が斜辺だとすると、cosθ=の式の両辺に|<strong>A</strong>|を掛けて次のように変形します。</p>  <p align="center">|<strong>A</strong>|cosθ = (<strong>A</strong>・<strong>B</strong>)÷|<strong>B</strong>|</p>  <p>Bを正規化したベクトルにこの値を掛ければ、垂線と交差する具体的な座標を得ることもできます。</p>  <p>また、平面と点Pの距離というのも、点Pから平面の法線に対して垂線をおろしたときの距離と考えることができるので、この性質が使えます。</p>  <h3>相手が自分の前にいるのか後ろにいるのか判別する</h3>  <p>自分から相手までの方向ベクトルと、自分の向きの方向ベクトルの内積をとり、その符号を調べることで、相手が自分の前方にいるのか後方にいるのか分かります。</p>  <p>cosは0度を中心とする山になっており、±90度以上でマイナスの値になります。相手が前にいるということは、自分の向いている方向から90度以内にいるということなので、cosの符号を見れば前後関係が分かります。</p>  <p>符号だけでなく具体的なcosの値を比較すれば、前方45度の範囲というような判別も簡単にできます。敵キャラクタに視野の幅を持たせるときに使えます。</p>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/121518447.html">
<link>http://bygzam.seesaa.net/article/121518447.html</link>
<title>回転する矩形と点の当たり判定</title>
<description>単純な2Dのゲームでは、XY軸と並行な矩形だけを扱います。そのような矩形と点の当たり判定というのは、単純な座標の大小関係で判定することができます。  if (x &amp;gt;= lelt &amp;amp;&amp;amp; x &amp;lt;= right &amp;amp;&amp;amp; y &amp;gt;= top &amp;amp;&amp;amp; y &amp;lt;= bottom){    // 矩形と点の衝突}しかし、ゲームに回転の要素が入ってくるとこのアプローチでは対応しきれなくなり、回転する矩形と点の当たり判定を処理する...</description>
<dc:subject>プログラミング</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-06-15T09:52:17+09:00</dc:date>
<content:encoded><![CDATA[

<p>単純な2Dのゲームでは、XY軸と並行な矩形だけを扱います。そのような矩形と点の当たり判定というのは、単純な座標の大小関係で判定することができます。</p>  <pre class="code"><span style="color: blue">if </span>(x &gt;= lelt &amp;&amp; x &lt;= right &amp;&amp; y &gt;= top &amp;&amp; y &lt;= bottom)
{
    <span style="color: green">// 矩形と点の衝突
</span>}</pre>

<p>しかし、ゲームに回転の要素が入ってくるとこのアプローチでは対応しきれなくなり、回転する矩形と点の当たり判定を処理する必要があります。</p>

<p>やり方は色々あるのですが、ベクトル大好きっ子の私としては、こういう問題はベクトル演算で解きたくなります。</p>

<p>まず、矩形の1点を基準とし、点Pまでの相対位置ベクトルを<strong>P</strong>、矩形の2辺のベクトルをそれぞれ<strong>V1</strong>、<strong>V2</strong>とします。また、<strong>V1</strong>と<strong>V2</strong>の長さを1に正規化したベクトルをそれぞれ<strong>N1</strong>、<strong>N2</strong>とします。</p>

<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="回転する矩形と点P" border="0" alt="回転する矩形と点P" src="http://bygzam.up.seesaa.net/recthittest.png" width="333" height="267" /> </p>

<p>ここで<strong>N1</strong>と<strong>P</strong>の内積は、<strong>N1</strong>に沿った線上に点Pから垂線を降ろしたときの長さと等しくなります。同様に<strong>N2</strong>と<strong>P</strong>の内積も、<strong>N2</strong>に沿った線上の長さになります。もし、点Pが<strong>N1</strong>と逆方向にある場合は、内積の値は負の値になります。</p>

<p>よって、点Pが矩形内に含まれる条件は</p>

<p align="center">0 ≦ <strong>N1</strong>・<strong>P</strong> ≦ |<strong>V1</strong>| かつ 0 ≦ <strong>N2</strong>・<strong>P</strong> ≦ |<strong>V2</strong>|</p>

<p>となります。</p>

<p>ちなみに、この不等式の両辺をそれぞれ|<strong>V1</strong>|、|<strong>V2</strong>|で割ると</p>

<p align="center">0 ≦ <strong>N1</strong>・<strong>P</strong>÷|<strong>V1</strong>| ≦ 1&#160; (以下<strong>V2</strong>の式は省略)</p>

<p>ここで<strong>N1</strong>=<strong>V1</strong>÷|<strong>V1</strong>|なので</p>

<p align="center">0 ≦ <strong>V1</strong>・<strong>P</strong>÷|<strong>V1</strong>|^2 ≦ 1</p>

<p>また、|<strong>V1</strong>|^2=<strong>V1</strong>・<strong>V1</strong>なので</p>

<p align="center">0 ≦ (<strong>V1</strong>・<strong>P</strong>)÷(<strong>V1</strong>・<strong>V1</strong>) ≦ 1</p>

<p>となります。(^2は2乗を表します)</p>

<p>|<strong>V1</strong>|や<strong>N1</strong>の計算には平方根が必要ですが、この形に変形すると平方根が消えて、内積(加算と乗算)と除算だけになります。こちらの方が計算が軽いですし、式も分かりやすくて良いと思います。条件式が定数になるので、最適化も効きそうです。ただし、|<strong>V1</strong>|が0になると0除算エラーになるので注意してください。</p>

<p>今回は矩形の角を基準にしましたが、中心を基準にする場合は</p>

<p align="center">-1 ≦ (<strong>V1</strong>・<strong>P</strong>)÷(<strong>V1</strong>・<strong>V1</strong>) ≦ 1</p>

<p>となり、更にabs()を利用すると</p>

<p align="center">abs((<strong>V1</strong>・<strong>P</strong>)÷(<strong>V1</strong>・<strong>V1</strong>)) ≦ 1</p>

<p>となります。(<strong>V1</strong>は中心から辺までのベクトルで、上図の<strong>V1</strong>の半分の長さになります)</p>

<p>今回の方法は、<strong>V1</strong>と<strong>V2</strong>が直行していないといけないことを忘れないでください。並行四辺形のような歪んだ四角形では使えません。</p>

<p>確認のために、Silverlightでデモを作ってみました。</p>
<a href="http://bygzam.seesaa.net/article/121518447.html#more">続きを読む</a>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/121280426.html">
<link>http://bygzam.seesaa.net/article/121280426.html</link>
<title>Silverlight製ゲームのソースコードが配布されています</title>
<description>現在、Dr.Dobb’sとMicrosoftの主催でSilverlightのゲームコンテストが行われています。  Dr. Dobb's Challenge Deuce  コンテストの応募締め切りは明日なので応募はもう手遅れですが、コンテスト用にサンプルのゲームのソースコードが配布されているので、紹介しておきます。  配布されているのは、コンテストページで遊べるゲームの完全なソースコードで、画像や効果音などのリソースも含まれています。  ゲームの内容は古典的なジャンプアクション...</description>
<dc:subject>プログラミング</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-06-11T14:12:46+09:00</dc:date>
<content:encoded><![CDATA[

<p>現在、Dr.Dobb’sとMicrosoftの主催でSilverlightのゲームコンテストが行われています。</p>  <p><a href="http://dobbschallenge2.com/">Dr. Dobb's Challenge Deuce</a></p>  <p>コンテストの応募締め切りは明日なので応募はもう手遅れですが、コンテスト用にサンプルのゲームのソースコードが配布されているので、紹介しておきます。</p>  <p>配布されているのは、コンテストページで遊べるゲームの完全なソースコードで、画像や効果音などのリソースも含まれています。</p>  <p>ゲームの内容は古典的なジャンプアクションで、弾の撃てないロックマン、あるいはBダッシュのないスーパーマリオといったところでしょうか。</p>  <p>こういうサンプルが欲しかったという人も多いと思います。</p>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/121078134.html">
<link>http://bygzam.seesaa.net/article/121078134.html</link>
<title>落書き感覚で遊べる物理シミュレータ Phun</title>
<description>Phunは落書きのように作図して遊べる、2次元の物理シミュレータです。  解析等に使うような真面目なシミュレータというよりも、玩具として遊ぶために作られていて、楽しみながら物理を学ぶのに適しています。     ピタゴラそうちのようなものを作って遊ぶこともできます。実物だと一度作動させてしまうと元に戻すのが大変ですが、Phun上なら何度でも楽しめます。  玩具といってもそれなりにちゃんと動くので、静止図だけでは分かりづらい複雑なリンク機構を実際に動かして確認するのにも便利です。...</description>
<dc:subject>雑記</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-06-08T14:05:43+09:00</dc:date>
<content:encoded><![CDATA[

<p><a href="http://www.phun.jp/">Phun</a>は落書きのように作図して遊べる、2次元の物理シミュレータです。</p>  <p>解析等に使うような真面目なシミュレータというよりも、玩具として遊ぶために作られていて、楽しみながら物理を学ぶのに適しています。</p>  <p><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://bygzam.up.seesaa.net/image.png" width="528" height="421" /> </p>  <p><a href="http://www.nhk.or.jp/kids/program/pitagora.html">ピタゴラそうち</a>のようなものを作って遊ぶこともできます。実物だと一度作動させてしまうと元に戻すのが大変ですが、Phun上なら何度でも楽しめます。</p>  <p>玩具といってもそれなりにちゃんと動くので、静止図だけでは分かりづらい複雑なリンク機構を実際に動かして確認するのにも便利です。</p>  <p>試しに練習で、2つほどサンプルを作ってみました。</p>  <p>・ホーキンスリンク機構</p>  <p>初めてこれを見たときは衝撃を受けました。シンプルな構造で、回転運動が歩行ロボットの足運びに最適な動きに変化します。</p>  <div style="padding-bottom: 0px; margin: 0px auto; padding-left: 0px; width: 432px; padding-right: 0px; display: block; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:49b519cf-6639-4939-b266-0da3c417fb35" class="wlWriterEditableSmartContent"><div id="b12679a3-ee30-4996-8496-34628c141bbc" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://video.msn.com/video.aspx?vid=2753d440-d0fa-496e-87e7-f6a3bb981b1a&amp;from=writer" target="_new"><img src="http://bygzam.up.seesaa.net/video87cd9184260b.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('b12679a3-ee30-4996-8496-34628c141bbc'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;embed src=\&quot;http://images.video.msn.com/flash/soapbox1_1.swf\&quot; quality=\&quot;high\&quot; width=\&quot;432\&quot; height=\&quot;364\&quot; wmode=\&quot;transparent\&quot; type=\&quot;application/x-shockwave-flash\&quot; pluginspage=\&quot;http://macromedia.com/go/getflashplayer\&quot; flashvars=\&quot;c=v&amp;v=2753d440-d0fa-496e-87e7-f6a3bb981b1a&amp;from=writer&amp;mkt=ja-JP\&quot; &gt;&lt;\/embed&gt;&lt;\/div&gt;&quot;;" alt=""></a></div></div></div>  <p>直線的な動きで地面を蹴り、足を持ち上げたら素早く前に戻します。まさに歩行モーションそのものでしょう。黄色のパーツは一定速度で回転していますが、直線的な動きの部分の方が時間が長く、持ち上げて前に戻す部分が短いので、これで足を動かせば直線的な動きの部分で両足が接地している時間もできます。</p>  <p>ただし、この機構をロボットの足運びに使うには致命的な欠点があって、動画を見ても分かるとおり、足の動きと足の向きが逆です。歩行ロボットに使うにはこれを上下反転させないといけないのですが、そのための機構というのは結構大変で、実際にこの機構をロボットに応用している人の多くが逆向きのまま弧の部分で地面を蹴るように使っています。</p>  <p>ちなみに、私がこれを初めて知ったときは、チェビシェフリンクと紹介されていました。しかし、正確にはホーキンスリンクと言うようです。チェビシェフリンクは等速回転部分が、ホーキンスリンクの足先の軌跡を描きます。動きが同じなので、ホーキンスリンクはチェビシェフリンクの亜種として扱われているのかもしれません。</p>  <p>・楕円コンパス</p>  <p>楕円コンパスというのはいくつか方法があるのですが、その中でも構造が分かりやすいものを作ってみました。</p>  <div style="padding-bottom: 0px; margin: 0px auto; padding-left: 0px; width: 432px; padding-right: 0px; display: block; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:fd5114e1-44eb-428e-b210-a7f869b2a72f" class="wlWriterEditableSmartContent"><div id="e20e0f73-803b-4490-9bb0-c07830d9737b" style="margin: 0px; padding: 0px; display: inline;"><div><a href="http://video.msn.com/video.aspx?vid=674495dd-59c4-4529-8f38-8f321a5b1fab&amp;from=writer" target="_new"><img src="http://bygzam.up.seesaa.net/video629ddb662be0.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('e20e0f73-803b-4490-9bb0-c07830d9737b'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;embed src=\&quot;http://images.video.msn.com/flash/soapbox1_1.swf\&quot; quality=\&quot;high\&quot; width=\&quot;432\&quot; height=\&quot;364\&quot; wmode=\&quot;transparent\&quot; type=\&quot;application/x-shockwave-flash\&quot; pluginspage=\&quot;http://macromedia.com/go/getflashplayer\&quot; flashvars=\&quot;c=v&amp;v=674495dd-59c4-4529-8f38-8f321a5b1fab&amp;from=writer&amp;mkt=ja-JP\&quot; &gt;&lt;\/embed&gt;&lt;\/div&gt;&quot;;" alt=""></a></div></div></div>  <p>こんなので奇麗な楕円が描けています。最後はご愛嬌w</p>  <p>実はPhunだけでこのような機構を作るのは難しいです。ホーキンスリンクは各リンクの長さが厳密に決まっているのですが、Phunは落書きのようにデザインすることを想定しているので、位置や大きさを厳密に調節する機能がありません。最初は、定規のようなものを作って目測でリンクを組んでみたのですが、ほんの僅かなズレでも直線的な動きにならずに駄目でした。</p>  <p>今回は<a href="http://www.sakai.zaq.ne.jp/dugyj708/svg2phun_tatt/index.html">SVG2Phun2</a>という、SVG画像から変換するソフトを利用しました。元となるSVG画像は<a href="http://www.inkscape.org/index.php?lang=en">Inkscape</a>で作成しました。</p>  <p>ニコニコ動画にもPhunの動画が沢山あるので、私が見た中で面白かったものをいくつか挙げておきます。</p>  <p><a href="http://www.nicovideo.jp/watch/sm4759573">Phunでトイレが作りたくなった</a></p>  <p><a href="http://www.nicovideo.jp/watch/sm4935767">Phunでデッドコースターを再うｐしてみた</a></p>  <p><a href="http://www.nicovideo.jp/watch/sm4950812">Phunで海賊船を営業再開してみた</a></p>  <p><a href="http://www.nicovideo.jp/watch/sm6887300">動画で楽しむ！！うんたん機構学 【けいおん！】</a></p>  <p>トイレのやつは作図段階から映っているので、どんな感じか分かりやすいと思います。うんたん機構学は、背景に注目です。チェビシェフリンクも出てきます。</p>  <p>こんなのが手軽に家のPCで遊べるってのは良い時代になったものです。</p>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/120470716.html">
<link>http://bygzam.seesaa.net/article/120470716.html</link>
<title>VistaのWaitMessageのバグ？</title>
<description>VistaではメッセージキューにWM_QUITしかない場合、WaitMessage()が制御を返さないようです。(実際にはWM_QUITはキューには溜まらずにフラグが立つだけですが)  例えば次のようなコードで問題が発生します。  for(;;){    WaitMessage();    if (PeekMessage(&amp;amp;msg, NULL, 0, 0, PM_REMOVE))    {        if (msg.message == WM_QUIT) brea...</description>
<dc:subject>プログラミング</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-05-30T04:11:39+09:00</dc:date>
<content:encoded><![CDATA[

<p>VistaではメッセージキューにWM_QUITしかない場合、WaitMessage()が制御を返さないようです。(実際にはWM_QUITはキューには溜まらずにフラグが立つだけですが)</p>  <p>例えば次のようなコードで問題が発生します。</p>  <pre class="code"><span style="color: blue">for</span>(;;)
{
    WaitMessage();
    <span style="color: blue">if </span>(PeekMessage(&amp;msg, NULL, 0, 0, PM_REMOVE))
    {
        <span style="color: blue">if </span>(msg.message == WM_QUIT) <span style="color: blue">break</span>;
        TranslateMessage(&amp;msg);
        DispatchMessage(&amp;msg);
    }
}</pre>
<a href="http://11011.net/software/vspaste"></a>

<p>このコードでもXPでは問題ないのですが、Vistaではアプリケーションを終了する際に、メッセージキューが空になり後はWM_QUITだけとなったところでWaitMessage()が処理を返さず、そのままゾンビプロセス化してしまいます。</p>

<p>私がCG系の技術デモを作るときは、アプリケーションがアクティブなときは全力で情報を更新しつつPeekMessageでウインドウメッセージを処理し、非アクティブになったら更新を止めてWaitMessageでメッセージを待つという方法をよく使っていましたが、非アクティブな状態でのメッセージループは上記のものと等価なコードになっています。そのため、非アクティブな状態で閉じようとすると、ゾンビプロセス化してしまいます。</p>

<p>これってどう考えても、仕様ではなくバグですよね？</p>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/120327133.html">
<link>http://bygzam.seesaa.net/article/120327133.html</link>
<title>e-IPSは低価格PCモニタの救世主となるか？</title>
<description>液晶パネルには大きく分けてTN、VA、IPSの3種類の方式があることは、知っている人も多いと思います。  3つの方式の特長を簡単に説明すると、次のような感じです。     TN --- 製造コストが安い。視野角が狭く特に上下方向が狭い。下から見上げると悲惨。     VA --- 製造コストはそこそこ。黒の表現が得意。テレビ用パネルに多い。     IPS --- 製造コストが高い。ほぼ真横から見ても大丈夫なほど視野角が広い。    ただし、PC用モニタで使われているIPSパ...</description>
<dc:subject>雑記</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-05-28T01:21:38+09:00</dc:date>
<content:encoded><![CDATA[

<p>液晶パネルには大きく分けてTN、VA、IPSの3種類の方式があることは、知っている人も多いと思います。</p>  <p>3つの方式の特長を簡単に説明すると、次のような感じです。</p>  <ul>   <li>TN --- 製造コストが安い。視野角が狭く特に上下方向が狭い。下から見上げると悲惨。 </li>    <li>VA --- 製造コストはそこそこ。黒の表現が得意。テレビ用パネルに多い。 </li>    <li>IPS --- 製造コストが高い。ほぼ真横から見ても大丈夫なほど視野角が広い。 </li> </ul>  <p>ただし、PC用モニタで使われているIPSパネルは、日立が10年前に開発した技術をベースにしたもので、最新のIPSパネルは使われていません。</p>  <p>かつてはPC用液晶モニタはVA方式が主流で、TN方式は17インチ以下の小さいモデルのみで使われるのが一般的でしたが、徐々に大画面でもTN方式が使われるようになり、今では24インチまでもTN方式が使われています。TNが勢力を伸ばした分、VAを採用するモニタは激減し、今では普及価格帯で非TNのモニタを探すのが大変な状況となっています。</p>  <p>そんな中、LGがe-IPSという新しいパネルを開発しました。e-IPSはIPS方式でありながら、製造コストはTN並という夢のようなパネルです。</p>  <p>そのe-IPSパネルを採用した最初のモニタが、DELLから発売されました。</p>  <p><a href="http://pc.watch.impress.co.jp/docs/news/20090527_170217.html">デル、29,800円のIPSパネル搭載22型ワイド液晶</a> (PC Watch)</p>  <p>TN方式の22型ワイド液晶モニタは20,000円程度なので、さすがにTN並とはいきませんが、このくらいなら十分競争できると思います。</p>  <p>そろそろモニタの買い替えを考えていた私は、今のところこれが第1候補となっています。(第2候補は<a href="http://pc.watch.impress.co.jp/docs/news/20090520_169534.html">三菱のRDT241WEX</a>)</p>  <p>このモニタは次のような人におすすめです。</p>  <ul>   <li>縦画面で使いたい(TNを縦にすると横方向の視野角が狭くて悲惨)</li>    <li>Excelを画面いっぱいに広げて使うことが多い(TNだと画面の上と下で色が変わって見難い)</li>    <li>動画を再生しながら寝転んで見たりする</li>    <li>人と違う物を使ってマニアっぽい気分になりたい</li> </ul>  <p>今回発売になったDellのモニタは、<a href="http://www.youtube.com/watch?v=QiBxe3RhYXU">ピボット機能もある</a>ので縦画面にも簡単にできます。</p>  <p>まだ実物を目にしていないので、画質についてはよく分かりません。LG製IPSパネルでよくあるバックライトの光漏れ(黒浮き)が改善されていればいいのですが。視野角については、<a href="http://www.youtube.com/watch?v=h3fgwawRBnk">YouTubeにあった比較動画</a>を見た限りでは、問題なさそうです。</p>  <p>私は低価格PC用モニタ用途で期待しているe-IPSですが、小型テレビ向けの需要もかなりあるのではないでしょうか。小型液晶テレビにTNパネルを使っているメーカーもありますが、大型テレビよりも小型テレビの方が設置場所に無理がある場合が多いので、TN方式の抱える視野角の欠点は致命的だと思います。視野角の広いe-IPSがTN並の価格で作れるのならば、小型のテレビはe-IPSが主流になるかもしれません。</p>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/120283502.html">
<link>http://bygzam.seesaa.net/article/120283502.html</link>
<title>VistaがSP2で本気を出したようです</title>
<description>昨日の深夜にVistaのService Pack 2が正式リリースされました。  32bit版 Vista Service Pack 2 ダウンロードページ  64bit版 Vista Service Pack 2 ダウンロードページ  私は新しいソフトのインストールには慎重な方で、普段ならば少し様子を見てからインストールするのですが、SP2を入れた人達からかなり速くなったという報告があったので、我慢できずにさっさとインストールしてしまいました。  さて、実際に使ってみた感想...</description>
<dc:subject>雑記</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-05-27T08:40:41+09:00</dc:date>
<content:encoded><![CDATA[

<p>昨日の深夜にVistaのService Pack 2が正式リリースされました。</p>  <p><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=a4dd31d5-f907-4406-9012-a5c3199ea2b3&amp;DisplayLang=ja">32bit版 Vista Service Pack 2 ダウンロードページ</a></p>  <p><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=656c9d4a-55ec-4972-a0d7-b1a6fedf51a7&amp;DisplayLang=ja">64bit版 Vista Service Pack 2 ダウンロードページ</a></p>  <p>私は新しいソフトのインストールには慎重な方で、普段ならば少し様子を見てからインストールするのですが、SP2を入れた人達からかなり速くなったという報告があったので、我慢できずにさっさとインストールしてしまいました。</p>  <p>さて、実際に使ってみた感想ですが…なんですかこの速さはw</p>  <p>主に.NETアプリケーションの起動時間がとんでもなく短縮されています。初めて起動するときは少し時間がかかりますが、2回目以降はとんでもない速さです。(ちなみにSuperFetchは切ってあります)</p>  <p>試しにVisual Studio 2008 Standard Editionをスタートメニューから選び、ウインドウやツールバーの描画が全て完了するまでの時間を計ってみたら、だいたい0.4秒でした。SP1でSuperFetchが効いてるときよりも速いですね。</p>  <p>.NETアプリケーションは起動するのに時間がかかることが最大の欠点でしたが、今回のサービスパックでその欠点は無くなったと言っていいと思います。</p>  <p>今までは起動が遅すぎて使う気にならなかったWindows Live メールも、これなら使う気になりますね。(実はWindows7で一番心配なところだった)</p>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/120266549.html">
<link>http://bygzam.seesaa.net/article/120266549.html</link>
<title>東方風神録不具合修正ツール</title>
<description>GeForce8x00/9x00で東方風神録をプレイするとStage1の背景がチラつく問題を修正するソフトを作ってみました。  現象としては、いわゆるz-fightingっぽいので、Stage1のみZテストを無効にしています。  また、ウインドウモードでプレイするとタイマー精度の関係でfpsが落ちる問題も、フラグを1つ指定するだけでDirectXが勝手に設定してくれる機能があるので、ついでに対応しておきました。  th10fix-090526.zip Version 1.0 ...</description>
<dc:subject>アプリケーション</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-05-26T22:31:45+09:00</dc:date>
<content:encoded><![CDATA[

<p>GeForce8x00/9x00で東方風神録をプレイするとStage1の背景がチラつく問題を修正するソフトを作ってみました。</p>  <p>現象としては、いわゆるz-fightingっぽいので、Stage1のみZテストを無効にしています。</p>  <p>また、ウインドウモードでプレイするとタイマー精度の関係でfpsが落ちる問題も、フラグを1つ指定するだけでDirectXが勝手に設定してくれる機能があるので、ついでに対応しておきました。</p>  <p><a href="http://bygzam.up.seesaa.net/zip/th10fix-090526.zip">th10fix-090526.zip</a> Version 1.0 (2009/05/26公開)</p>  <p>使い方はアス比固定ツールや縦画面化ツールと同じで、同梱のd3d9.dllを風神録のインストールフォルダにコピーするだけです。アス比固定ツール等と共存はできません。</p>
]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://bygzam.seesaa.net/article/120195776.html">
<link>http://bygzam.seesaa.net/article/120195776.html</link>
<title>型情報を使わずに派生クラスを特定する</title>
<description>ひさしぶりに『More Effective C++』を読んでいたら、面白いコードを発見したので紹介しておきます。  オブジェクト指向では、様々なオブジェクトを共通の基底クラスから派生させて、それらを基底クラスのポインタのリストで管理するというのはよく使うテクニックです。管理クラスは管理対象が具体的に何のクラスなのかは意識する必要がなく、基底クラスに用意された共通のインターフェースで指示を出せば、指示を出された側が自分で判断してふるまいを決めます。この性質をポリモーフィズムと呼...</description>
<dc:subject>プログラミング</dc:subject>
<dc:creator>新坂</dc:creator>
<dc:date>2009-05-25T18:23:17+09:00</dc:date>
<content:encoded><![CDATA[

<p>ひさしぶりに『<a href="http://www.amazon.co.jp/gp/product/4894714760?ie=UTF8&amp;tag=wtcha-22&amp;linkCode=as2&amp;camp=247&amp;creative=1211&amp;creativeASIN=4894714760" target="_blank">More Effective C++</a>』を読んでいたら、面白いコードを発見したので紹介しておきます。</p>  <p>オブジェクト指向では、様々なオブジェクトを共通の基底クラスから派生させて、それらを基底クラスのポインタのリストで管理するというのはよく使うテクニックです。管理クラスは管理対象が具体的に何のクラスなのかは意識する必要がなく、基底クラスに用意された共通のインターフェースで指示を出せば、指示を出された側が自分で判断してふるまいを決めます。この性質をポリモーフィズムと呼びます。</p>  <p>More Effective C++の例を借用すると、宇宙船(SpaceShip)、宇宙ステーション(SpaceStation)、小惑星(Asteroid)を共通の基底クラスGameObjectから派生させると次のようになります。</p>  <p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="211" alt="ClassDiagram1" src="http://bygzam.up.seesaa.net/ClassDiagram1.png" width="501" border="0" /> </p>  <pre class="code"><span style="color: blue">class </span>GameObject { ... };
<span style="color: blue">class </span>SpaceShip : <span style="color: blue">public </span>GameObject { ... };
<span style="color: blue">class </span>SpaceStation : <span style="color: blue">public </span>GameObject { ... };
<span style="color: blue">class </span>Asteroid : <span style="color: blue">public </span>GameObject { ... };</pre>
<a href="http://11011.net/software/vspaste"></a>

<p>宇宙船も宇宙ステーションも小惑星も全てGameObjectの一種なので、GameObject*のリストに登録できます。</p>

<pre class="code">list&lt;GameObject*&gt; objects;

objects.push_back(<span style="color: blue">new </span>SpaceShip);
objects.push_back(<span style="color: blue">new </span>SpaceStation);
objects.push_back(<span style="color: blue">new </span>Asteroid);</pre>
<a href="http://11011.net/software/vspaste"></a>

<p>この仕組みは便利で様々なところで使われていますが(特にGUIフレームワーク)、時にはポインタの指しているオブジェクトが具体的に何のクラスなのか知りたい場合があります。</p>
<a href="http://bygzam.seesaa.net/article/120195776.html#more">続きを読む</a>
]]><![CDATA[
]]></content:encoded>
</item>
</rdf:RDF>
