スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

boostライブラリ

結局データベースのプログラムはC言語ではなくてC++で書くことにした。

C++で便利ならライブラリとしてBoostと呼ばれるものがある。
使ってみるとこれは確かに便利である。

早速Linuxにいれてみようと・・・思ったら結構ハードルが高い記事だらけ・・・


っと思ったら

yum inatall boost*

で一発で終わった。わーい。パス通すのは自分でやらなきゃいけないけど。


↑はfedora8なのでdebianとかだとapt-getを使う事になると思う。


現在
クライアントはWindows。言語C#で開発。
サーバーはDebianで動いてる。
なのにサーバーの開発はfedora8。言語はC++。
たまに動かすLinuxはUbuntu。



ごちゃごちゃになりそうでしょ。
でも心配いらないんだ。全部統一されてても恐らく頭の中はごちゃごちゃですから!!


boostライブラリを使ってコンパイルされたものを利用する場合は(Linuxの話)

/usr/lib

にお目当てのファイルを置いておけば使えると思う。(無くても動くものもあるのでその辺は調べてね)



ねよっと。
スポンサーサイト

2Dの当たり判定

3Dばっかりやっててあんまり2次元の事をやっていなかった。

2DMAPで経路を探索してくれるシステムを作っていて、当たり判定が必要になったのでメモ。


public static bool lineCollision3(Vector2 c, Vector2 d, Vector2 a, Vector2 b)
{
if (cross2d(b - a, c - a) * cross2d(b - a, d - a) > 0)
return false;
if (cross2d(a - c, d - c) * cross2d(b - c, d - c) > 0)
return false;
return true;
}


      
public static bool lineCollision2(Vector2 a, Vector2 b, Vector2 c, Vector2 d)
{
Vector2 ab = b - a;
Vector2 ac = c - a;
Vector2 cd = d - c;

float A = cross2d(ab, cd);

if (Math.Abs(A) < 0.001f)
return false;

float B = cross2d(ac, ab);
float C = cross2d(ac, cd);

float ret1 = B / A;
if (ret1 < 0 || 1 < ret1)
return false;

float ret2 = C / A;
if (ret2 < 0 || 1 < ret2)
return false;

return true;
}


二つ作って見やすく載せてみたけど、速度とか気にして作ってないのであしからず。

というか間違ってるかもしれない。(ぉぃ
浮動少数の事考えるともう少しチェックいるかもねぇ・・(遠い目

いろんな場面で速度試したら途中で細かくreturn返すほうが1.7倍ほど早かった。
そりゃそうか。

交点だすなら後半のヤツが便利。


間違ってる場所見つけて直してくれた人
最適化して速度を早くしてくれた人
いたら御一報をば
愛という名の粗品差し上げます。


ねよっと。
プロフィール

あしゅ

Author:あしゅ
ぷぃぷぃ日常。
いつのまにか雑記ブログに。

カテゴリ
最新記事
検索フォーム
最新コメント
リンク
このブログをリンクに追加する
ブロとも申請フォーム

この人とブロともになる

カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。