Zend Frameworkと戯れる -じゃんけんゲームを作ってみる-

とりあえず、タイトル通りのことをやってみた。
Hello, World!じゃつまらないので、名前入れてもらってじゃんけんの手を選んでもらってCPUと対決しましょう、という感じ。
まず、ディレクトリ構成を考えることに。
サブドメイン(xxx.yuxx.netのxxxの部分)を切ってやっても良いんだけど、便利な設定してないから、UserDir(xxx.yuxx.net/~hogeの~hogeの部分)でやることに。
しかもドキュメントルート(このアプリの頭はやっぱつかいたくなかったからディレクトリを一段したにした。
URL的にはhttp://test.yuxx.net/~yuxx。

以下、treeコマンドより。(超便利w)

zend_test_prj
|-- public_html
|   `-- zend_test
|       |-- .htaccess
|       `-- index.php
`-- web_app
`-- zend_test
|-- controllers
|   `-- IndexController.php
|-- models
`-- views
`-- scripts
`-- index
|-- index.phtml
`-- pon.phtml

public_html以下が公開ディレクトリで、web_appがプログラムの場所。
まぁ、web_appはプログラムは権限さえあればどこ置いたって良いんだけどね。
名前も本来はapplicationsが推奨だし。。

で、まず公開領域にある.htaccessを置きましょう、と。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

一行目でURLを変換出来るようにmod_rewriteをOnに。
4行目で「js、ico、gif、jpg、png、css以外はindex.phpへ送る」と言う設定。
Flashとかをこのディレクトリ内に置いて使うんだったら適宜設定を。
2行目と3行目は別に必要ないんだけど、そのディレクトリ内にURLで叩かれたディレクトリ、あるいはファイルがあった場合はそっち優先で見に行くよ~と言うおまじない。

お次は同じ場所に設置するindex.php。

<?php
ini_set('display_errors', 'On');
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('../../web_app/zend_test/controllers');

2行目は一応エラー表示させたいので置いといた。
この程度のプロジェクトだからそうそうエラーは出ないだろうけど、それでも俺みたいな脳たりんには重要だったりする。
もちろん、リリース時には外すけど:-)
で、重要なのは3行目と4行目。
3行目は基本的にこういうもの、と言うことで。
4行目はこのファイル「index.php」の場所から見ての相対パスで、IndexController.phpがどこにあるか、と言うこと。
今回の場合、ドキュメントルートがそもそも1階層深かったり、アプリケーションルートもそれに合わせて深くしたりしているから、チト長い書き方になってしまったかね。。。

で、用意したテンプレはこんな感じ。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html, charset=UTF-8">
<title>じゃんけん</title>
</head>
<body>
<center>
<h1>じゃんけんゲーム</h1>
<?php if (!empty($this->errMsgs)) { ?>
<?php   foreach ($this->errMsgs as $currMsg) { ?>
<span style="color:#ff0000"><?php echo $currMsg ?></span><br />
<?php   } ?>
<?php } ?>
<form action="<?php echo $this->baseUrl(); ?>/index/pon" method="post">
お名前<?php echo $this->formText('pName', $this->escape($this->pName)) ?><br />
<?php echo $this->formRadio('pMethodKey', $this->pMethodKey, null, $this->methodNames) ?>
<br /><?php echo $this->formSubmit('', 'ポン!') ?>
</center>
</body>
</html>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html, charset=UTF-8">
<title>ポン!</title>
</head>
<body>
<center>
<h1>CPU &gt; <?php echo $this->cpuMethod ?></h1>
<?php echo $this->escape($this->pName)?>さんは<?php echo $this->pMethodName?>を出したのでの<?php echo $this->result?>です。<br />
<a href="<?php echo $this->baseUrl(); ?>">戻る</a>
</center>
</body>
</html>

では、web_app/zend_test以下のcontrollers/IndexController.phpを見ていこうか。
ちなみに、このコントローラーはデフォルトだと一番最初にアクセスされるコントローラクラスと言うことになる。

<?php
// load base components.
require_once 'Zend/Controller/Action.php';
class IndexController extends Zend_Controller_Action
{
private $_methodNames = array(
0 => 'グー',
1 => 'パー',
2 => 'チョキ'
);
private $_resultNames = array(
0 => 'あいこ',
1 => '負け',
2 => '勝ち'
);
// Index action
public function indexAction()
{
$this->view->assign('methodNames', $this->_methodNames);
}
public function ponAction()
{
$req = $this->getRequest();
$errMsgs = array();
$pName = $req->getPost('pName');
if ($pName == null || $pName == '') {
$errMsgs[] = '名前を入力して下さい。';
}
$pMethodKey = $req->getPost('pMethodKey');
if ($pMethodKey == null || $pMethodKey == '') {
$errMsgs[] = 'あなたの手を選択して下さい。';
$pMethodKey = null;
} else {
$errFlg = true;
foreach ($this->_methodNames as  $key => $methodName) {
if ($pMethodKey == $key) {
$errFlg = false;
break;
}
}
if ($errFlg == true) {
$errMsgs[] = 'もう一度選択して下さい。';
}
}
// index、ponの両方で必要なデータのアサイン
$this->view->assign('pName', $pName);
if (!empty($errMsgs)) {
// indexで必要なデータのアサイン
$this->view->assign('errMsgs', $errMsgs);
$this->view->assign('pMethodKey', $pMethodKey);
$this->view->assign('methodNames', $this->_methodNames);
// indexをレンダー
//            $this->render('index/index'); // なぜかこれだと動作しない。
$this->getHelper('viewRenderer')->setNoController()->setScriptAction('index/index');
// 処理修了
return;
}
// CPUのじゃんけんの手をランダムで出す
srand(time());
$cpuMethodKey = rand() % 3;
// じゃんけんの結果を計算
$result = ($cpuMethodKey - $pMethodKey + 3) % 3;
// ponで必要なデータのアサイン
$this->view->assign('pMethodName', $methodName);
$this->view->assign('cpuMethod', $this->_methodNames[$cpuMethodKey]);
$this->view->assign('result', $this->_resultNames[$result]);
}
}

今回はMVC(モデル・ビュー・コントローラー)デザインの内、DBを使ってないからModelは用意せず、コントローラー内でバリデート(エラーチェック)を行った。
Postされた値は$this->getRequest()で取ってくることが出来る。
また、ビューでデータを使うためには他のフレームワーク同様アサイン(追加)しないといけない。
アサイン方法は$this->view->assign(‘ビューで使うための変数名’, データ)という感じ。
ビューファイルで使うときは先ほどのビューに書いてあるとおり、$this->ビューで使うための変数名 と言う風に取ってこれる。
とまぁ、こんな感じ。
じゃんけんのルーチンは自分で検証してみてくだされ。

出来上がったクソアプリは下記の通り。
http://test.yuxx.net/~yuxx/zend_test

一応まとまったソースは下記。
zend_test_prj.tar.bz2
zend_test_prj.zip
お好きな方をどうぞ。

お粗末。

Zend Framework 徹底マスター

著者/訳者:藤野 真吾

出版社:ソーテック社( 2009-04-11 )

定価:¥ 4,104

単行本 ( 592 ページ )

ISBN-10 : 488166669X

ISBN-13 : 9784881666692


Post to Twitter

, ,

No Comments

Zend Frameworkのインストール

ちと所用でZend Frameworkを使わなくてはいけないっぽいので当サーバへインスコすることに。
FreeBSDなのでportsからサクッと入れてしまいまひょ。

% portinstall www/zend-framework

or

% cd /usr/ports/www/zend-framework
% make install clean

とか。
コンパイル中に2回ほどオプション選択させられるけど、自分の使っているDBとかと相談して決めてみてはいかがだろうか。

で、最終的に

Now you need to adjust PHP's include_path to contain
`/usr/local/share/ZendFramework/library'
For example, insert:
include_path = ".:/usr/local/share/ZendFramework/library"
into `/usr/local/etc/php.ini'.
Zend Framework includes the Zend_Tool class and wrapper script
for automating many common framework-related tasks. To use the
zf wrapper script, set the following environment variable:
Bourne shell:
export ZEND_TOOL_INCLUDE_PATH_PREPEND=\
/usr/local/share/ZendFramework/library
C-shell:
setenv ZEND_TOOL_INCLUDE_PATH_PREPEND \
/usr/local/share/ZendFramework/library
Documentation for the Zend_Tool class is found at:
http://framework.zend.com/manual/en/zend.tool.framework.html
For more general information about the Zend Framework, please
visit: http://framework.zend.com/

こんなメッセージが出る。
Zend_Tool classの事はよ~知らんから放置。
php.iniにあるinclude_pathを指示通り書き直す。

% vim /usr/local/etc/php.ini
(略)
include_path = ".:/usr/local/share/ZendFramework/library"

そんでもって、apache再起動。

% apachectl restart

せっかく140MB強までダイエットに成功したhttpdが一気に190MB手前にまでふくれあがってしまった。。。
サーバ管理技術を身につけたい。。
サーバを強化および低消費電力化したい。。。

で、お決まりのテストコード。

<?php
require 'Zend/Version.php';
echo Zend_Version::VERSION;

Zend Frameworkコード規約によりPHPのみのファイルでは終了タグ?>は書かない。
結果は下記ページの通り。
http://yuxx.net/~yuxx/zend_ver.php

とりあえずインストール完了なり:-)

Zend Framework 徹底マスター

著者/訳者:藤野 真吾

出版社:ソーテック社( 2009-04-11 )

定価:¥ 4,104

単行本 ( 592 ページ )

ISBN-10 : 488166669X

ISBN-13 : 9784881666692


Post to Twitter

, , , ,

No Comments

ベクトル その7 -ベクトルの投影-

2つのベクトルvとnが与えられている場合、nに平行な線分v_{\|}と、nに垂直な線分v_\perpに分解することが出来る。

よって、v = v_\perp + v_\|(式1)となる。
v_\|はnの要素中の\displaystyle\frac{\|v_\|\|}{\|n\|}であるから、
\displaystyle{v_\| = n\frac{\|v_\|\|}{\|n\|}}(式2)であると言える。
また、
\displaystyle{cos\theta = \frac{\|v_\|\|}{\|v\|}}(式3)
であるため、
\displaystyle{cos\theta\|v\| = \|v_\|\|}(式4)
と言える。

式2と式4より
\displaystyle{v_\| = n\frac{cos\theta\|v\|}{\|n\|}}(式5)
ドット積の回で使った公式a \cdot b = \|a\|\|b\|cos\thetaを適用すると
  \begin{array}{ll}  v_\| &= \displaystyle{n\frac{\|v\|cos\theta}{\|n\|}}\\[2ex]  &= \displaystyle{n\frac{\|v\|\|n\|cos\theta}{\|n\|^2}}\\[2ex]  &= \displaystyle{n\frac{v \cdot n}{\|n\|^2}}\\[2ex]  \end{array}(式6)
となり、vの底辺の要素を求めることが出来る。

また、式1から
\begin{array}{ll}  v_\perp + v_\| &= v\\[2ex]  v_\perp &= v - v_\|\\[2ex]  &= v - \displaystyle{n\frac{v \cdot n}{\|n\|^2}}  \end{array}
となり、vの高さ要素を求めることが出来る。

例:v = [5, 3], n = [3, 0]の時
\begin{array}{lll}  v_\| &= \displaystyle{n\frac{v \cdot n}{\|n\|^2}} &= \displaystyle{[3, 0]\frac{[5, 3]\cdot[3, 0]}{\|[3, 0]\|^2}}\\[2ex]  &= \displaystyle{[3, 0]\frac{(5)(3) + (3)(0)}{\sqrt{3^2}^2}} &= \displaystyle{[3, 0]\frac{15}{9}}\\[2ex]  &= \displaystyle{[3, 0]\frac{5}{3}} &= \displaystyle{[\frac{3 \times 5}{3}, 0]}\\[2ex]  &= \displaystyle{[5, 0]}  \end{array}
\begin{array}{lll}  v_\perp &= v - \displaystyle{n\frac{v \cdot n}{\|n\|^2}} &= [5, 3] - \displaystyle{[3, 0]\frac{[5, 3]\cdot[3, 0]}{\|[3, 0]\|^2}}\\[2ex]  &= [5, 3] - [5, 0] &= [0, 3]  \end{array}

例:v = [5, 3], n = [4, 2]の時
\begin{array}{lll}  v_\| &= \displaystyle{n\frac{v \cdot n}{\|n\|^2}} &= \displaystyle{[4, 2]\frac{[5, 3]\cdot[4, 2]}{\|[4, 2]\|^2}}\\[2ex]  &= \displaystyle{[4, 2]\frac{(5)(4) + (3)(2)}{\sqrt{4^2 + 2^2}^2}} &= \displaystyle{[4, 2]\frac{20 + 6}{16 + 4}}\\[2ex]  &= \displaystyle{[4, 2]\frac{26}{20}} &= \displaystyle{[4, 2]\frac{13}{10}}\\[2ex]  &= \displaystyle{[\frac{4 \times 13}{10}, \frac{2 \times 13}{10}]} &= \displaystyle{[5.2, 2.6]}  \end{array}
\begin{array}{lll}  v_\perp &= v - \displaystyle{n\frac{v \cdot n}{\|n\|^2}} &= [5, 3] - \displaystyle{[4, 2]\frac{[5, 3]\cdot[4, 2]}{\|[4, 2]\|^2}}\\[2ex]  &= [5, 3] - [5.2, 2.6] &= [-0.2, 0.4]  \end{array}

Post to Twitter

, ,

No Comments

ベクトル その6 -ドット積-

ドット積
ベクトルには2つの掛け算方法がある。
そのひとつが「ドット積」または「内積」と呼ばれる。
ドット積とはベクトルの内積を表現するときにa \cdot bとなるためにこう呼ばれる。
ベクトルのドット積は足し算引き算より優先順位が高い。
ベクトルとスカラー値を掛け算する場合、ドットを省略する場合が多いが、ベクトルの内積を計算するときは省略をしない。
公式:\left[  \begin{array}{c}  a_1\\  a_2\\  \vdots\\  a_{n-1}\\  a_n  \end{array}  \right]  \cdot  \left[  \begin{array}{c}  b_1\\  b_2\\  \vdots\\  b_{n-1}\\  b_n  \end{array}  \right]  =  a_1 b_1 + a_2 b_2 + \cdots + a_{n-1} b_{n-1} + a_n b_n
または
\displaystyle  a \cdot b =  \sum^{n}_{i=1}a_i b_i

例:
2D
[\begin{array}{cc}-5 & 8\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}] = (-5)(4) + (8)(7) = -20 + 56 = 36
3D
\left[  \begin{array}{c}  1\\  -4\\  3  \end{array}  \right]  \cdot  \left[  \begin{array}{c}  -7\\  6\\  2  \end{array}  \right]  =  (1)(-7) + (-4)(6) + (3)(2) = -7 + (-24) + 6 = -25

ベクトルのドット積は2つのベクトルがどれくらい似ているかを示す。
ドット積が大きければ大きいほど2つのベクトルは似ている。

下記は「例:2D」を図示したもの。

参考:[\begin{array}{cc}-5 & 8\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}] = (-5)(4) + (8)(7) = -20 + 56 = 36

下記はX、Y共に同じ方向を向いている場合。

[\begin{array}{cc}2 & 8\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}] = (2)(4) + (8)(7) = 8 + 56 = 64
最初の例より値が大きくなった。

同一ベクトルの場合。

[\begin{array}{cc}4 & 7\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}] = (4)(4) + (7)(7) = 16 + 49 = 65
同じベクトルになると、さらに値が大きくなった。

Y成分だけ真逆の場合。

[\begin{array}{cc}4 & 7\end{array}]\cdot[\begin{array}{cc}4 & -7\end{array}] = (4)(4) + (7)(-7) = 16 + (-49) = -33
X成分が同じものの、Y成分の差が大きいため、かなり値が小さくなった。

真逆のベクトルの場合。

[\begin{array}{cc}-4 & -7\end{array}]\cdot[\begin{array}{cc}-4 & -7\end{array}] = (-4)(4) + (-7)(7) = -16 + (-49) = -65
全てが真逆のため、2番目の真逆の値を示した。

X成分だけ真逆の場合。

[\begin{array}{cc}-4 & 7\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}] = (-4)(4) + (7)(7) = -16 + 49 = 33
Y成分だけ真逆の時の値を反転させた値となった。
X成分が違うものの、Y成分が同じため、比較的大きい値になった。

AOBが直角の場合。

[\begin{array}{cc}-7 & 4\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}] = (-7)(4) + (4)(7) = -28 + 28 = 0
a \cdot bのドット積が直角の場合、0になる。

ベクトルの内積の幾何学的解釈
公式:a \cdot b = \|a\|\|b\|cos\theta
ドット積はベクトルの大きさとベクトルのなす角ののcosを掛けたものと等しくなる。

ベクトルのなす角を2つのベクトルから求める
公式:\theta = arccos\displaystyle\left(\frac{a \cdot b}{\|a\|\|b\|}\right)
aとbの単位ベクトルを掛けたものにarc cosinで求めているだけなので、aとbが既に単位ベクトルの場合は分母を省略可。
その場合は
公式:\theta = arccos(a \cdot b)
となる。
※arccos(x)はarc cosin(アークコサイン)の意。
また、この場合\thetaは度数法ではなく、弧度法なので単位はラジアンとなる。
公式:360^\circ = 2\pi

再び2Dの時に使ったベクトルを元に計算すると、
  \begin{array}{ll}  \theta &= \displaystyle{arccos\left(\frac{a \cdot b}{\|a\|\|b\|}\right)}\\[1em]  &= \displaystyle{arccos\left(\frac{[\begin{array}{cc}-5 & 8\end{array}]\cdot[\begin{array}{cc}4 & 7\end{array}]}{\|[\begin{array}{cc}-5 & 8\end{array}]\|\|[\begin{array}{cc}4 & 7\end{array}]\|}\right)}\\[1em]  &= \displaystyle{arccos\left(\frac{(-5)(4) + (8)(7)}{\sqrt{(-5)^2+8^2}\sqrt{4^2+7^2}}\right)}\\[1em]  &= \displaystyle{arccos\left(\frac{-20 + 56}{\sqrt{25+64}\sqrt{16+49}}\right)}\\[1em]  &= \displaystyle{arccos\left(\frac{36}{\sqrt{89}\sqrt{65}}\right)}\\[1em]  &= \displaystyle{arccos\left(\frac{36}{\sqrt{5785}}\right)}\\[1em]  &= \displaystyle{arccos\left(\frac{36}{76.059}\right)}\\[1em]  &= arccos(0.4733)  \end{array}
三角関数表により
arccos(0.4733)\fallingdotseq62^\circ

角度による関係

a \cdot b \theta 角度 aとbの関係
> 0 0^\circ \leq \theta < 90^\circ 鋭角 同じ向き、あるいは同じような方向に向いている。
= 0 \theta = 90^\circ 直角 直交している。
< 0 90^\circ < \theta \leq 180^\circ 鈍角 真逆、あるいは反対側の方向に向いている。

実例で学ぶゲーム3D数学

著者/訳者:Fletcher Dunn Ian Parberry

出版社:オライリージャパン( 2008-10-04 )

定価:¥ 3,672

Amazon価格:¥ 3,672

大型本 ( 484 ページ )

ISBN-10 : 4873113776

ISBN-13 : 9784873113777


Post to Twitter

, ,

No Comments

ベクトル その5 -距離-

aとbがあったとして、その間のベクトルVはb – aあるいはa – bとなる。
公式:V = b - a =  \left[  \begin{array}{c}  b_x - a_x\\  b_y - a_y\\  b_z - a_z  \end{array}  \right]

距離は
{\rm Distance}(a, b) = \|b - a\| = \sqrt{(b_x - a_x)^2 + (b_y - a_y)^2 + (b_z - a_z)^2}
となる。

例:
a = [5, 9, -8], b = [-11, 1, 7], \overrightarrow{ab}の時
\begin{array}{ll}  {\rm Distance}(a, b) &= {\rm Distance}([5,9, -8], [-11, 1, 7])\\[0.5em]  &= \|[5,9,-8], [-11, 1,7]\|\\[0.5em]  &= \sqrt{(-11 - 5)^2 + (1 - 9)^2 + (7 - (-8))^2}\\[0.5em]  &= \sqrt{(-16)^2 + (-8)^2 + 15^2}\\[0.5em]  &= \sqrt{256 + 64 + 225}\\[0.5em]  &= \sqrt{545}\\[0.5em]  &\fallingdotseq 23.3452  \end{array}

\overrightarrow{ba}も同様に
\begin{array}{ll}  {\rm Distance}(b, a) &= {\rm Distance}([-11, 1, 7], [5,9, -8])\\[0.5em]  &= \|[-11, 1,7], [5,9,-8]\|\\[0.5em]  &= \sqrt{(5 - (-11))^2 + (9 - 1)^2 + (-8 - 7)^2}\\[0.5em]  &= \sqrt{16^2 + 8^2 + (-15)^2}\\[0.5em]  &= \sqrt{256 + 64 + 225}\\[0.5em]  &= \sqrt{545}\\[0.5em]  &\fallingdotseq 23.3452  \end{array}
となる。

実例で学ぶゲーム3D数学

著者/訳者:Fletcher Dunn Ian Parberry

出版社:オライリージャパン( 2008-10-04 )

定価:¥ 3,672

Amazon価格:¥ 3,672

大型本 ( 484 ページ )

ISBN-10 : 4873113776

ISBN-13 : 9784873113777


Post to Twitter

, ,

No Comments

JailbreakMeでiPhone4(iOS 4.0.1)を今さらJailbreak

噂のPDF関連のexploitを突いたJailbreak、JailbreakMeを試してみました。
やるんだったらご自由にと言うか、自己責任です。
アポーのサポート切れます。
なお、iOSを最新の4.0.2にアップデートしている場合、JailbreakMeは元より、Jailbreak自体も今のところ出来ないので注意。
それを踏まえて行ってみよ~♪


とりあえず、iPhoneのSafariでhttp://www.jailbreakme.comを開く。

スライダーをスライドさせると「草の根App Store」ことCydiaなどのダウンロードが開始される。

うちの回線だとダウンロードからインストールまで2~3分かかった。

で、完了。
このページは閉じて良し。
どっかにCydiaの茶色いアイコンがあるはずなので、それをタップ。

立ち上げると「ユーザ」、「ハッカー」、「ディヴェロッパ」の3タイプが選べる。
開発する気はないけど、コマンドラインは使うから「ハッカー」にしておいた。

アップグレードを催促してくるから、上の2つのうちどっちかを選ぶ。
俺は面倒くさがりだから「Complete Upgrade」を選んだり。

で、再起動がかかったかかからないか忘れたけど、再起動やらホーム画面に戻ったりしてたらもう一度立ち上げる。

ここのECIDと言うのが重要らしいから、とりあえずメモしておく。
スクリーンショット取っても良いかと。
(ちなみに画像中のECIDは加工してますのであしからず。)

とりあえず検索で例のSafariでPDFを勝手に開いて勝手にコードを実行されるのを防ぐために、PDFを開く際の確認画面を挟むパッチを入れる。
検索欄で「PDF」と打てばすぐ出るはず。

一番上のステータスバーをすりすりすると出てくる便利設定ソフト「SBSettings」もお忘れ無く。

危険は承知で「OpenSSH」も導入。
入れたらすぐにステータスバーをすりすりしてOffにすること。

すりすり出来なかったときのために、SSHのオンオフだけをコントロールできるアイコンも追加。

ホーム画面下にあるDockを5列にするパッチ。
これはやめられまへん。。

バッテリー残量表示をRed Bullの缶の潰れ具合で確認できるテーマも導入。
(何故標準で替えられない!)

出先でiPhoneを踏み台にしてネットしたい場合は・・・。
SoftBankではライセンス違反なので、自己責任で。
(日本通信のb-mobileならOKらしいけど。。)

とまぁ、こんな感じになる。

Post to Twitter

, , , ,

No Comments

ベクトル その4 -足し算と引き算-

ベクトル同士の足し算引き算が出来る。

ベクトルの足し算
公式:\left[  \begin{array}{c}  a_1\\  a_2\\  \vdots\\  a_{n-1}\\  a_n  \end{array}  \right]  +  \left[  \begin{array}{c}  b_1\\  b_2\\  \vdots\\  b_{n-1}\\  b_n  \end{array}  \right]  =  \left[  \begin{array}{c}  a_1 + b_1\\  a_2 + b_2\\  \vdots\\  a_{n-1} + b_{n-1}\\  a_n + b_n  \end{array}  \right]
ベクトルの各要素を足すのみ。
例:\begin{array}{ll}  \left[  \begin{array}{c}  12\\  -30\\  5  \end{array}  \right]  +  \left[  \begin{array}{c}  -3\\  7\\  19  \end{array}  \right]  &=  \left[  \begin{array}{c}  12 + (-3)\\  -30 + 7\\  5 + 19  \end{array}  \right]\\  &=  \left[  \begin{array}{c}  9\\  -23\\  24  \end{array}  \right]  \end{array}

ベクトルの引き算
公式:\left[  \begin{array}{c}  a_1\\  a_2\\  \vdots\\  a_{n-1}\\  a_n  \end{array}  \right]  -  \left[  \begin{array}{c}  b_1\\  b_2\\  \vdots\\  b_{n-1}\\  b_n  \end{array}  \right]  =  \left[  \begin{array}{c}  a_1 - b_1\\  a_2 - b_2\\  \vdots\\  a_{n-1} - b_{n-1}\\  a_n - b_n  \end{array}  \right]
ベクトルの足し算と同様、ベクトルの各要素を引くのみ。
例:\begin{array}{ll}  \left[  \begin{array}{c}  1\\  22\\  -5  \end{array}  \right]  -  \left[  \begin{array}{c}  -14\\  10\\  0  \end{array}  \right]  &=  \left[  \begin{array}{c}  1 - (-14)\\  22 - 10\\  -5 - 0  \end{array}  \right]\\  &=  \left[  \begin{array}{c}  13\\  12\\  -5  \end{array}  \right]  \end{array}

実例で学ぶゲーム3D数学

著者/訳者:Fletcher Dunn Ian Parberry

出版社:オライリージャパン( 2008-10-04 )

定価:¥ 3,672

Amazon価格:¥ 3,672

大型本 ( 484 ページ )

ISBN-10 : 4873113776

ISBN-13 : 9784873113777


Post to Twitter

, ,

No Comments

ベクトル その3 -ベクトルの正規化-

ベクトルの正規化
公式:\displaystyle {\bf v}_{\rm norm}=\frac{\bf v}{\|{\bf v}\|},{\bf v}\neq {\bf 0}
ベクトルの正規化とは、ベクトルの各要素をベクトルの大きさで割ったものとなる。
ベクトルの各要素のベクトルの大きさから占める割合が求まる。
後々計算が楽になるらしい。

例:\displaystyle  \begin{array}{ll}  \displaystyle \frac{[\begin{array}{cc}12 & -5\end{array}]}{\|[\begin{array}{cc}12 & -5\end{array}]\|} &= \displaystyle \frac{[\begin{array}{cc}12 & -5\end{array}]}{\sqrt{12^2+(-5)^2}}\\  &= \displaystyle \frac{[\begin{array}{cc}12 & -5\end{array}]}{\sqrt{169}}\\[1ex]  &= \displaystyle \frac{[\begin{array}{cc}12 & -5\end{array}]}{13}\\[1ex]  &= \displaystyle \left[\frac{12}{13} \frac{-5}{13}\right]\\[1ex]  &\fallingdotseq \displaystyle [0.923 -0.385]  \end{array}

実例で学ぶゲーム3D数学

著者/訳者:Fletcher Dunn Ian Parberry

出版社:オライリージャパン( 2008-10-04 )

定価:¥ 3,672

Amazon価格:¥ 3,672

大型本 ( 484 ページ )

ISBN-10 : 4873113776

ISBN-13 : 9784873113777


Post to Twitter

, ,

No Comments

ベクトル その2 -ベクトルとスカラーの掛け算・割り算-

ベクトルとスカラーの掛け算
公式:  k \left[  \begin{array}{c}  a_1\\  a_2\\  \vdots\\  a_{n-1}\\  a_n  \end{array}  \right]=  \left[  \begin{array}{c}  a_1\\  a_2\\  \vdots\\  a_{n-1}\\  a_n  \end{array}  \right]k=  \left[  \begin{array}{c}  ka_1\\  ka_2\\  \vdots\\  ka_{n-1}\\  ka_n  \end{array}  \right]
ベクトルとスカラーの掛け算はベクトルの各要素にスカラー値を掛けるのみ。

ベクトルをゼロ以外のスカラーで割る
公式:\displaystyle  \frac{\bf v}{k}=  \left(  \frac{1}{k}  \right){\bf v}=  \left[  \begin{array}{c}  {\bf v}_x/k\\  {\bf v}_y/k\\  {\bf v}_z/k  \end{array}  \right]
ベクトルのそれぞれの要素をスカラー値で割る。

実例で学ぶゲーム3D数学

著者/訳者:Fletcher Dunn Ian Parberry

出版社:オライリージャパン( 2008-10-04 )

定価:¥ 3,672

Amazon価格:¥ 3,672

大型本 ( 484 ページ )

ISBN-10 : 4873113776

ISBN-13 : 9784873113777


Post to Twitter

, ,

No Comments

Gran Turismo 5予約開始

すっかり書くの忘れてたけど、Gran Turismo 5の予約が始まったね!
発売日も11月3日に決まって良かった。
(頼むから延期しないでくれw)

今回はムービーを見る限り、日本Super GT、アメリカNascar、WRC(世界ラリー選手権)関連の車種も豊富で、特に注目なのが車体の破壊シミュレーション。
そして天候変化の復活。
強化されたBスペックモード。
(Bスペックモードって言うのは監督として指示を出してレースをするモードのこと)
あと、自動車運転のイロハを学べるカートを収録。
サーキット生成機能搭載。
英国の国営放送BBCにて絶賛放送中のカー・エンターテインメント番組「Top Gear」で著名人の腕試しや各車のレビューを行う特設コースが再現され、謎の白ヘルドライバーことザ・スティグも収録。
(ところでそのザ・スティッグ。一度、ミハエル・シューマッハが「実は僕なんだよ」という体で種明かししたものの、その正体は複数人のトップドライバーが関わっていると言われているため、その真偽さえ不明w)
[metacafe 5074021]

初回限定は通常版とお値段据え置きで豪華ブックレット付き。
あと、プレゼントカーのダウンロード権5台分付き。
俺、実はPSPの時は予約じゃなく買ったから、某お方wから頂いたコードでなんとかFerrari Enzoのイエローが手に入ったと言う事情があったり。
だから、今回は確実に予約しておいた。
まぁ、このシリーズの感じから言って数量限定とかじゃないんだろうから、普通に予約すれば手に入りそう。
待ちに待ったPS3大型タイトルなので、レースゲーファンやそうでない方も予約してはいかが?

グランツーリスモ 5(初回生産版:特製ブックレット&プレゼントカー5種ダウンロードプロダクトコード同梱)

グランツーリスモ 5(初回生産版:特製ブックレット&プレゼントカー5種ダウンロードプロダクトコード同梱)

定価:¥ 8,208

Amazon価格:¥ 5,400

カテゴリ:Video Game

発売日:2010-11-25


Post to Twitter

, , , , , ,

No Comments