アイマスの小鳥さん

201112040751

久しぶりにちゃんとした絵を描きました。

全体的に絵が硬く納得行かないです。

精進しなければ。

Cの前置インクリメントの挙動がコンパイラによって違う

最近ゲーム制作の都合で、スクリプト言語を自作しています。
算術演算を一般的な言語の挙動と一致させるために、
インクリメントの挙動を確認していたら、面白い結果になったのでメモしておきます。

 

今回テストに使用したコード(jの値):

int i = 0, j = 0;
j = ++i + ++i + ++i;

Xcode(GCC)の結果: 7
VC++の結果: 9

 

一度の演算で同一の変数にインクリメントすると上記のように結果が変わってきます。
この原因は恐らく、
コンパイラが生成するアセンブリコードが違っているからではないかと勝手に解釈しています。
(残念なことに筆者はアセンブラを触った経験がないので、詳しくは分からないのですが)
コンパイラの演算の評価の仕方の違いでこのような差異が生まれるんだと思います。
具体的には以下のような評価をしているのではないかなぁと。

 

逆ポーランド記法による比較
GCCの評価 j,i,++,i,++,+,i,++,+,=
VC++の評価: j,i,++,i,++,i,++,+,+,=

 

VC++の場合、
インクリメントを演算子として評価しているので、こっちの方が実装が簡単です。
(GCCの挙動を見た段階で実装の判断をしてしまったので、結局難しい方で実装してしまいましたが)

まぁともあれ、どっちが一般的な挙動なんでしょうね。
本当にコンパイラによって結果が違うのであれば、
複数前置インクリメントを書くのはあまりおすすめできない方法と言えそうです。

ちなみに後置インクリメントの挙動は一致していました。

※追記
PHP5にて確認してみたところ、6というこれまた違う結果となりました。
恐らく評価順序はGCCと同様ですが、
iの加算処理を行った後スタックに積む際数値として処理しているんだと思います。

この結果から言語ごとに前置インクリメントの扱いは全く違うことが分かりましたので、
言語を自作する際は実装者の判断で決めてしまって問題ない、という事になりそうですね。

x220tでSAIの筆圧が有効にならない場合の対処方法

ネットで調べていると、この件で詰まっている人が多数いるようなので解決方法を書き留めておきます。

 

結論から言えば、

lenovoから提供されている最新ドライバをインストールするだけで筆圧は効くようになります。

非純正ドライバを入れたりしている方も見かけますが、それは間違いです。

 

しかしながら、最新ドライバを入れても筆圧が有効にならないという方がちらほらいます。

その原因は恐らく、インストールまでの手順が悪かったせいです。

実際にその症状は私の方でも再現しました。

 

非純正ドライバなどを入れてしまった場合は、

必ず手順に従ってインストールし直す必要があるようです。

失敗された方は恐らく、

アンインストールせずに上書きインストールしたか、

再起動しなかったのではないかと思います。

 

現在入れているドライバをアンインストール

再起動

最新ドライバをインストール

再起動

筆圧が有効に!

 

有効にならなかった原因は、

前のドライバのファイルが削除されずに残っていたせいで、

最新ドライバのファイルで上書きできず、そのまま前のドライバの一部が使われていたとかだと思います。

加速度センサーから画面の向きを変更するアプリを作ってみた

X220tabletを使っていて、画面の回転ボタンの挙動が気に食わなかったので、代替アプリを作ってみました。

 

標準の挙動は、押すたびに90度ずつ回転していく仕様なんですが、

この場合270度回転させるのに3回押さなければならず、非常に面倒です。

 

別のタブレットPCではdynabookM200を所持していますが、

こちらは優秀で、ボタンを押したときに傾きに合わせた方向で回転してくれます。

 

加速度センサー自体はX220tabletにも内臓されていますが、

ボタンを押した時ではなく、常に傾きを検知して自動的に回転する仕様でした。

ipadなどでもそうですが、ちょっと角度を変えた時に画面がいちいち回転してイライラします

せっかく専用ボタンがついているのなら、そこをトリガーにして回転させればいいのに。

(ipadはボタンがないからしょうがないとして)

 

幸いこの専用ボタンはWindows側で任意の動作を割り当てる事ができるので、

今回製作したアプリをこのボタンに割り当てる事で、

dynabookM200と同等の挙動を実現できるようになります。

(その際ActiveRotate機能は無効にしてください)

 

ダウンロード

SensorRotate.zip

 

加速度センサーの値を取得する方法を調べていると、

Windows7のAPIか、Thinkpad専用と思われるSensor.dllを使う方法がある事を知り、

実装が簡単な後者の方法で実装しました。

そのため、恐らくThinkpad以外では動かないと思います。

また、動作確認OSはWin7のみなので、他のOSで動く保障もありません。

 

タブレットモードの場合画面を180度回転させているので、

本来はその点も考慮して実装する必要があるんですが、

タブレットモードかどうかをチェックする方法が分からず、タブレットモード時専用として実装しています。

そのため、ラップトップモード時に実行した場合は向きが逆転しますのであしからず。

リリカは~ふつう~の~wおーんなーのーこーwww

201108310419

EDでやたら普通の女の子をアピールしてるけど、生まれ変わりって時点で普通じゃないと思います。

それと、変身時にあれだけクルクル回ってるのに普通に戦えるってすごい。(カメラが回ってるって設定なのか!?)

 

それはさておき、

このアニメ自体あまり人気があったとは思えないけど関わってる人達がわりと有名な人が多い。

魔法少女物にしては珍しかったシリアス展開で、最後は衝撃的な終わり方をします。(本当に子供向けなのか?)

そしてなにげにOP曲が小室哲也だったりする。

ちなみに、すごいよマサルさんのOPでこのOPのパロがあります。(監督が同じ)

 

この絵はx220tで描きました。

12日に手にしておいてちゃんと描いたのはこれが1枚目ですが、描きやすいです。

画面に直接描けるっていうことよりも、画面のサイズとペンの範囲が一致している事が大きいように思います。

intuos4を久しぶりに使って見たら画面に比べてペンの範囲が狭いため、ポインタが速く動くように感じました。

フィード

キーワード検索

最近の記事

最近のコメント

最近のトラックバック

カテゴリ

アーカイブ

ランキング