山口屋~活動日誌~

私生活で主な出来事をピックアップ

弘南鉄道 鐘 踏切

2013-12-31 23:07:49 | 
旅行中に弘南鉄道に乗車し、今では珍しくなった電子音ではなく本物の鐘を鳴らす踏切に、二か所で遭遇しました。

・館田駅の平賀方
・津軽尾上の尾上高校前方

OpenGL GLUT 変換行列

2013-12-22 22:49:29 | ソフトウェア開発
OpenGLのGLUTでは、変換行列を関数で呼び出して処理を記述することになるが、呼出順序を整理するため、CGにおける座標と変換の種類と関数名について一覧にしてみた。

●座標の種類

・モデリング座標系
・ワールド座標系
・視点座標系
・正規化デバイス座標系
・ウインドウ座標系

●変換の種類

モデリング変換 :モデリング座標系→ワールド座標系
視野変換    :ワールド座標系→視点座標系
投影変換    :視点座標系→正規化デバイス座標系
ビューポート変換:正規化デバイス座標系→ウインドウ座標系

○モデリング変換:glMatrixMode(GL_MODELVIEW)
・glScaled,glScalef
・glTranslated,glTranslatef
・glRotated,glRotatef

○視野変換:glMatrixMode(GL_MODELVIEW)
・gluLookAt

○投影変換:glMatrixMode(GL_PROJECTION)
・glOrtho
・glFrustum
・gluPerspective

○ビューポート変換
・glViewPort

変換行列の原理上、関数呼出順序は変換処理順序と逆に見える。

●引用元

white wheelsのメモ:OpenGL覚え書き3 座標系

OpenGL ライブラリ関数 描画 GLU

2013-12-22 21:33:49 | ソフトウェア開発
OpenGLであらかじめ用意されている図形を描画する関数を調べようと思ったら、意外に調べるのが大変で、けっこう苦労して見つけた。

引用元

<GLUT>
(いずれも原点中心に描画されるものと思われる。)

・void glutSolidCube(GLdouble size)
1辺の長さ size の立方体を描画します。

・void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks)
半径 radius、z軸のまわりの分割数(経度) slices、z軸に沿った分割数(緯度) stacks の球を描画します。

・void glutSolidCone(GLdouble radius, GLdouble height, GLint slices, GLint stacks)
底面の半径 radius、高さ height、z軸のまわりの分割数 slices、z軸に沿った分割数 stacks の円錐を描画します。

・void glutSolidTorus(GLdouble innerradius, GLdouble outerradius, GLint sides, GLint rings)
内部半径 innerradius、外部半径 outerradius、断面の円弧への分割数 sides、断面の個数 rings のトーラス(ドーナツ)を描画します。

・void glutSolidTetrahedron(void)
半径 √3 の正4面体を描画します。

・void glutSolidOctahedron(void)
半径が1.0の正8面体を描画します。

・void glutSolidDodecahedron(GLdouble radius)
半径 radius の正12面体を描画します。

・void glutSolidIcosahedron(void)
半径1.0の正20面体を描画します。

・void glutSolidTeapot(GLdouble size)
大きさ size のティーポットを描画します。

<GLU(OpenGL Utility Library)>

公式ドキュメント

引用元

・GLUquadricObj* gluNewQuadric()
GLUオブジェクトのメモリ確保。

・void gluQuadricDrawStyle(GLUquadric* quad, GLenum draw)
GLUオブジェクトの初期化。
参考

・(GLUオブジェクトの描画関数)
※GLUTの関数と同様に呼び出す。

・void gluDeleteQuadric(GLUquadricObj* qobj)
GLUオブジェクトのメモリ解放。

■シリンダ(円柱、円錐、円錐柱)
・gluCylinder(GLUquadricObj *qobj, GLdouble baseradius, GLdouble topradius, GLdouble height, GLint slices, GLint stacks)

「*qobj」:宣言した変数
「baseradius」:底面の半径
「topradius」:上面の半径
「height」:高さ
「slices」:経線方向の分割数
「stacks」:緯線方向の分割数

OpenGL GLUT Visual Studio C++ 2008

2013-12-22 20:16:38 | ソフトウェア開発
GLUT(OpenGL Utility Toolkit)の開発環境として、Microsoft Visual Studio Express 2008を使う準備。

<1>
Visual C++ 2008 Express Edition(→オンラインオフライン)をインストール。

<2>
http://www.xmission.com/~nate/glut.html から glut-3.7.x-bin.zip をダウンロード、展開。glut.h は、C:/Program Files/Microsoft Visual Studio 9.0/VC/Include/gl へ移動。glut32.libは、C:/Program Files/Microsoft Visual Studio 9.0/VC/Lib へ移動。glut32.dllは、32ビットではC:/WINDOWS/system32 、64ビットではC:/WINDOWS/SysWOW64 へ移動。

Web サイトでOpenGLを学習するには、以下のページがある。
GLUTによる「手抜き」OpenGL入門

データ型 バイト数 ネットワークバイトオーダー

2013-12-05 22:47:56 | ソフトウェア開発
<C言語/C++>

char型は1バイトであるが、符号あり/なし、ビット数は処理系依存のため、limits.hに定義されるCHAR_BIT、CHAR_MAX、CHAR_MIN、SCHAR_MAX、SCHAR_MIN、UCHAR_MAXを見なければわからない。

符号あり:CHAR_MAX==SCHAR_MAX、CHAR_MIN==SCHAR_MIN
符号なし:CHAR_MAX==UCHAR_MAX、CHAR_MIN==0

2バイト以上の型の場合、CPUによって値の配置順序が異なり、リトルエンディアンとビッグエンディアン(ネットワークバイトオーダー)がある。

数値をネットワークで送受信する際は、stdio.hのsprintf()で文字列に変換して送信し、受信したらstdlib.hのatof(),atoi(),strtod(),strtol()で戻せばよいのかな?

<C#>

byte型という必ず符号なし8ビット整数(0~255)となるデータ型がある。