bate's blog

調べたこと実装したことなどを取りとめもなく書きます。

code

動いているAABBとBSP-Treeに入れてある複数のAABBの接触判定

CAABBは軸平行境界ボックス(Axis-Aligned Bounding Box)構造体をメンバ変数に持つクラス。ゲームプログラミングのためのリアルタイム衝突判定作者: Christer Ericson,中村達也出版社/メーカー: ボーンデジタル発売日: 2005/10メディア: 単行本購入: 7人 クリ…

再び読む気になれないコードに

以前作った行列クラスはこんな感じ。 class Matrix44 { public: float m_11, m_12, m_13, m_14, m_21, m_22, m_23, m_24, m_31, m_32, m_33, m_34, m_41, m_42, m_43, m_44; Matrix44( float in11=1, float in12=0, float in13=0, float in14=0, float in21=…

reduction関数を簡潔にしてみた

今までの奴は下記のもの。 // 約分 template<class T> TFriction<T> TFriction<T>::reduction() { Exec(); // 負の符号の時は、分子から負を取り因数分解する if( false == m_sign ) m_numerator *= -1; std::vector<T> n_factor = Factorization<T>( m_numerator ); std::vector<T> </t></t></t></t></t></class>…

operator/

除算演算子を追加。 先ほどと同じようにFriction.hにある分数のテンプレートに下記を追加。 TFriction<T> operator/( TFriction<T> t ) { this->Exec(); t.Exec(); TFriction<T> temp( this->m_numerator*t.GetDenominator(), // 分子 this->m_denominator*t.GetNumer</t></t></t>…

operator*

乗算演算子を追加 Friction.hにある分数のテンプレートクラスに下記を追加。 TFriction<T> operator*( TFriction<T> t ) { this->Exec(); t.Exec(); TFriction<T> temp( t.GetNumerator()*this->m_numerator, // 分子 t.GetDenominator()*this->m_denominator ); // </t></t></t>…

operator-

引き算をできるようにする。 Friction.hにある分数のテンプレートクラスに減算演算子を追加 // Friction.cpp #ifndef __FRICTION_H__ #define __FRICTION_H__ #include <iostream> #include "Function.h" // 分数 template <class T> class TFriction { private: T m_numerator;</class></iostream>…

行列のテンプレートクラス

早寝早起きにしないと。ここ最近は昼前に起きる生活なので大変まずい。 どうも上手く書けないが、手探りで書いた。 手探りで試行錯誤している段階が、プログラムで一番楽しい。C++ テンプレート完全ガイド (Programmer’s SELECTION)作者: David Vandevoorde,…

テンプレートクラス

テンプレートクラスをファイル分割する時は全てヘッダーに書く。

因数分解

そろそろ、分数のプログラムと組み合わせてみる。 #include <iostream> #include <vector> //#include <math.h> using namespace std; // 因数分解 template<class T> vector<T> Factorization( T n ); template<class T> vector<T> Factorization( T n ) { vector<T> factor_elements; T a = 2; while( n >= a*a )</t></t></class></t></class></math.h></vector></iostream>…

sqrtのオーバーロード

エラトステネスのふるいでsqrt使うとオーバーロードのエラーが出ます。 int a = (int)sqrt( (double)x ); みたいにしないと行けないのでしょうか。汚い。

約分

早く約分まで行きたい。 大学の1年の時にやったことをまた最初からやってる気がする。

ユークリッドの互除法

通分のために最大公約数を求める。 #include <iostream> using namespace std; template<class T> T gcd( T m, T n ) { if( m < n ) swap( m, n ); if( 0 == n ) return m; if( 0 == n % m ) return n; m = m % n; swap( m, n ); return gcd<T>( m, n ); } int main() { int input_</t></class></iostream>…

汚い

コメントを付けると以前に誓ったはずなのに、書いていない。 汚いし、使ってない部分も多かったりする。m_signとか。 自分もゆとりなのだろうか。

結局C/C++

C/C++で書くことにしました。Effective C++ 第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTI)作者: スコットメイヤーズ,小林健一郎出版社/メーカー: 丸善出版発売日: 2014/03/18メディア: 単行本(ソフトカバー)この商品を含むブログ (1件) を見る 分数計算の…

さらに汚く

いつも思うが、もう少し賢く整理の上手い人間だったならと。心の底から。 まずは、Friction.hというファイル。 // Friction.cpp #ifndef __FRICTION_H__ #define __FRICTION_H__ #include <iostream> #include "Function.h" // 分数 template <class T> class TFriction { priva</class></iostream>…

GLUTでPickUp処理を書いた

球をマウスで選択するコード。ネットに落ちてるサンプルを参考というか、アレな感じで書いた。 これで曲面を定義するコントロールポイントを選択できたりできなかったりのコードにする。

更新の順番

以前、状態遷移で手詰まりをしてしまった所を解決しました。 Aが周期的にa→b→c→a→b→・・・と変化していて、AからBに遷移する時に遷移する直前の状態(a,b,cのどれか)で予期しないことになってしまうようです。初歩的なことですね。 aを行動、bを更新、cを表示…

状態遷移でドツボにはまった

画面の遷移で頭が痛いことになってしまった。 エラーとか実行時にエラーメッセージが出て強制終了とかじゃないので困った。 本格的にデバッグの方法を勉強する必要があるのかな。

読み難いコード

改めて自分のコードを見ると読み難いというか、BSPツリーのソースを見ても分かるようにコメントが少ない。 このあたりにも内向的な性格が出てるのだろうか。 自分は分かってるからいいじゃないか、という考えがあるように思えて反省。ゲームプログラミングの…

BSPTreeサンプル

折角なのでBSPTreeの試行錯誤の末を晒してみようと思います。 ちなみにWin32コンソール用に作った上手いこと動くかの確認サンプルです。 プログラムの実行での不具合やその他諸々には責任を取れませんので、勘弁してください。ゲームプログラミングのための…

テスト

int main() { return 0; } インデントできるか調べること。