タグ

ブックマーク / www.sousakuba.com (6)

  • 平面と平面方程式

    平面方程式を計算する プログラミング例 #include <math.h> //平面の定義 class Plane { //ax+by+cz+d=0 public: double a,b,c,d; Plane(){} Plane(double a,double b,double c,double d){ this->a = a; this->b = b; this->c = c; this->d = d; } }; //ベクトルの定義 class Vector3D{ public: double x,y,z; Vector3D(){} Vector3D( double x, double y, double z) {this->x = x; this->y = y; this->z = z; } //ベクトル引き算( this - v ) Vector3D operator - ( con

    平面と平面方程式
  • 単位ベクトルと計算方法

    単位ベクトルの使い方: たとえばAからBへ向けて、dだけ進む位置を知りたい場合... ABベクトルを単位ベクトルにしてdをかけると、その位置が分かります。 単位ベクトルを計算する プログラミング例 (2次元) 3次元のプログラミング例へ #include <math.h> //ベクトルの定義 struct Vector2D{ double x; double y; }; //単位ベクトルを計算する Vector2D get_unit_vector( Vector2D v ) { //ベクトルの長さ double length = pow( ( v.x * v.x ) + ( v.y * v.y ), 0.5 ); //XY各成分を長さで割る Vector2D unit; unit.x = v.x / length; unit.y = v.y / length; return unit; }

    単位ベクトルと計算方法
  • ベクトル

    ベクトルは方向と距離を持つ値 ベクトルは目標までの向きと距離を表しています。 つまり、ある位置からある位置に向けての移動量を表します。 ゲームプログラミングではベクトルを使って物体間の距離や方向を調べたり物体を移動させます。 後で紹介するベクトルの内積・外積は当たり判定などに使われます。 3Dプログラミングに欠かせない数学ですね。 図にすると1の矢印になります。 この例は3次元ベクトルなのでベクトルVはx,y,zの3つの数値で構成されます。 図のxyz軸の交点ですが「交点が原点(0,0,0)にあるとは限りません」 図にしたために誤解しやすいのですが、ベクトルが持つ情報は目標までの向きと距離だけです。 ならば交点はどこにあるのかというとどこにでもなり得ます。 用途によって自分で決めてしまえばいいのです。 好きな位置から移動を開始できる。これがベクトルの都合のいいところ。 ちなみにxyz軸の

  • ゲームプログラミング - ゲーム創作場

    [2013.10.05] 点と平面の距離 平面上の最近点 [2013.09.29] 点と三角形の内外判定 点と三角形の当たり判定をします。 [2013.09.28] ポリゴンの表裏判定 OPenGLとDirectXで混乱した。結局一緒なのかー。 [2013.09.27] 十字キーと8方向キーの方向判定 スマホで仮想十字キー作ったりドラッグ方向の判定にどうぞ。 [2013.09.26] 2線の交点を求める方法 3次元でも2次元でも大丈夫な2線の交点を求める方法です。 [2013.02.16] お詫びと訂正。 斜方投射で説明していた式に誤りがありました。ご指摘いただいた方ありがとうございます。 http://www.sousakuba.com/Programming/algo_dandoukeisan2.html 旧 新 ルートの中のプラスマイナスが逆でした。 [2012.11.30] 平面と

  • ダイクストラ法による最短ルートの求めかた

    ダイクストラ法が何かを解説すると余計に難しくなるので省略しますが、 ダイクストラ法アルゴリズムを使う最大のメリットは、 「不要な経路が分かった時点で以降の計算を省略できる」 これに尽きます。 ではさっそく。一つ例を説明していきましょう。 さきほどの図です。スタート点をA、ゴール点をFとします。 青い数字は、それぞれの点間の移動に要する距離です。 ■Aの一つ隣の点を調べます Aの隣はBとCです。 BとCの各点にAからの検索がきたこと、そしてスタート地点から移動に要した距離をセットします。 両方とも「Aの10」になりますね。 さて次はAの隣、BとCについて調べていきましょう。 ■Bの一つ隣の点を調べます Bの隣はA,C,Dです。 Dにはこれまでと同じ方法で「Bの18」をセットできます。 ここからが大事なところです。 BからCへ向かうルートをたどるとき、Cはすでに一度探索が行われています。 Cが

  • ポリゴンの法線ベクトルを求める

    ABCの3点で構成されるポリゴンから、法線ベクトルを求めるには... 外積で直交ベクトルを作ることができるので、これを利用します。 ポリゴンの法線を計算する プログラミング例 #include <math.h> //ベクトルの定義と各種計算 class Vector3D{ public: double x; double y; double z; Vector3D(){} Vector3D( double x, double y, double z) {this->x = x; this->y = y; this->z = z; } Vector3D( const Vector3D& v ) { x = v.x; y = v.y; z = v.z; } //ベクトル引き算( this - v ) Vector3D operator - ( const Vector3D& v ) const

    ポリゴンの法線ベクトルを求める
  • 1