ぬうぱんの備忘録

技術系のメモとかいろいろ

作った曲一覧はこちら

C++

std::numeric_limits<float>::min()について重大な思い違いをしていた話

何があった 線形探索で最大値を探すコードを書いていた。 簡単化するとこんな感じ。 using namespace std; float FindMax(const vector<float>& source) { float max = numeric_limits<float>::min(); // floatの最小値で初期化してるつもり for(const auto& value : sourc</float></float>…

モザイクのその向こうが見たかったオタクの話

この記事は TUT Advent Calender 2015の参加記事です。今年は準備期間がたっぷりあったので、しっかりとネタを用意しましたよ! www.adventar.org 前日の記事 前日の記事はこちら(大学で生き残るための日常生活の過ごし方) 話を始める前に 図とか使ってわか…

位相限定相関法で位置合わせ

この記事は FFTってどうやるんだっけ? のレベルから始まるチョー簡単な位相限定相関法のお勉強ノートです。基本的には参考にしたページをぺたぺたしてセクションごとのまとめだけ書いていく感じで進めます。

eclipse CDTでデバッグするときにmainで一度止まるのをなんとかする

この記事は eclipse CDTでF11をポチッとやってデバッグを開始すると、エントリポイント入ったところで自動的に設定されるブレークポイントに引っかかってしまうのでF8を追加で押す必要があるんですね。これはめんどいのでこの自動ブレークポイントを無効化し…

boost.random使い方簡易まとめ

この記事は boost.randomの使い方の超カンタンなまとめです。使おうとする度に毎回毎回毎回毎回毎回毎回毎回毎回毎回毎回毎回毎回毎回お口チャックマン! つまり使いやすいように自分でまとめるってことなんですね。 サンプルコード やっぱりサンプルコード…

windows環境で自作プログラム叩いたらR6010でabortした話

何があった VisualStudioでC++プログラム書いて出来上がったバイナリをダブルクリックで叩いたらR6010でabortして何のヒントも残さずに死んだ。開発環境上では元気に動いていたのに…。 原因は ファイルオープンで失敗して発生した例外(std::runtime_error)が…

boost::shared_ptr紹介

この記事は TUT Advent Calendar 2014 - Adventarの8日目の参加記事です。 連続値もOKなDeepBeriefNetworkを簡単にC++で実装して・・・とか考えてたんですが、いつの間にか実行速度とか気にしてガチで組み始めて収集つかなくなってもうタイムリミット近いの…

libboardの紹介

この記事は TUT Advent Calendar 2014 - Adventarの参加記事です。 12/1に突然始まってトップバッターで、記事書いてるのはもちろん当日なのでサクッと行きましょう。 libboard is 何 ベクトル画像を簡単に出力できるC++用のライブラリです。 CV系の研究室に…

OpenGLでテクスチャマッピングする時にドハマりした話

なにがあった ネット上のチュートリアル見ながらGLUTで立方体にテクスチャ貼り付けようとしたらどういうわけか全然テクスチャが適用されない。一体何故なのか。コレガワカラナイ。 でもよく考えると前にも似たようなことがSDL+OpenGLであったような・・・? …

ffmpeg(libav)でシークする時の注意点

何があった libavformatとかあそこらへんのAPIを触っていて動画の読み込みをしている時の話。 任意秒にシークした直後、Iフレームが来るまで正常に映像がデコードされないという問題が起きた。 絵面としては黒画面をベースに差分だけが表示される感じ。 解決…

Box2Dでb2Bodyに力とかを加えるいくつかの方法

この記事は Box2Dで物体に力とかを加えようと思った時に取ることが出来る方法のまとめです。自分は古典物理すら全くわからないマンなので必要な範囲で関連する知識とかもまとめます。 SetLinearVelocity() ボディの速度(velocity, [])を直接指定する方法。 …

継承とか仮想デストラクタとか

この記事は 継承する時は仮想デストラクタ書けって言うけど実際の動作よくわかってないから検証してみた private継承するとアップキャストできないのってなんでだろう? みたいなことを調べました。 検証した環境 gcc バージョン 4.7.2 (Ubuntu/Linaro 4.7.2…

多重継承とthisとnewとdeleteと(続き)

何があった 前の記事を公開したあと @NU_Pan B1とB2に仮想デストラクタを定義したらどうでしょうか?たぶん上手くdeleteできそうな気がします(未確認なので間違ってたらすいません)2014-06-02 16:14:38 via Twitter Web Client to @NU_Panというご指摘をい…

テンプレートクラスのテンプレートメンバ関数をテンプレートクラスのメンバ関数から呼び出す

何がった こんなような事したかったんだけど、コンパイルエラーになってしまった template<typename T> struct CHoge{ template<typename U> static U Func(int val){ return val; } }; template<typename T> struct CPiyo{ template<typename U> static U Func(int val){ return CHoge<T>::Func<U>(val); } }; CPiyo<int></int></u></t></typename></typename></typename></typename>…

多重継承とthisとnewとdeleteと

何があった 多重継承のケースで コンストラクタの初期化子リスト内でthisはどうなっているのか? 初期化子リストにthisを渡すと何がまずいのか? 多重継承でnewでもらったポインタとdeleteに渡すポインタが一致しない時どうなってしまうのか? 多重ではない…

C/C++で四捨五入で浮動小数点を整数に丸める

なにがあった 負数込みで丸めようと思うと思いの外回り道をしてしまったのでメモ。結論だけ知りたい人は記事の末尾に飛んでオナシャス! そもそもなんで四捨五入なのか 画像の幾何的な変換を行おうとしたら、変換元の画像のピクセルに実数座標でアクセスすることに…

gccでintrinsicsでSSEでベクタライズする時の簡易的なまとめ

この記事は intrinsicsを使ってSSEでベクタライズするのに必要な足がかりを自分用にまとめたものです。 そもそもSSEって何 SIMD(http://ja.wikipedia.org/wiki/Streaming_SIMD_Extensions)を実現する拡張命令セットの名前。いろいろ種類があるしバージョンも…

google-perftoolsでC++プログラムのプロファイリング

この記事は google-perftoolsのcpu profilerを使ってC++プログラムのプロファイリングする時の一連の手順をまとめた記事です。 ほとんどgoogle-perftoolsの各サブセットのhow toに乗っている事の焼き直しです。 公式へのリンクとか google-perftools : https…

VisualStudio2010でLNK1123が出たら

症状 C++のビルドの際、以下のリンクエラーが発生してビルドに失敗する。 error LNK1123: COFF への変換中に障害が発生しました: ファイルが無効であるか、または壊れています 対処 VisualStudio2010 SP1を当てましょう 参考 LINK : fatal error LNK1123: fa…

boost.regexに2バイト文字を食わせる

なにがあった 艦これのドロップ報告を解析するプログラムを組んでいる時に全角文字の混じった文字列をboost.regexに食べさせてもうまく動かなかったのでその対処法のメモ。 対処法 w付きのあれこれ使ってcharではなくwchar_tにすればOK。 たとえばこんなかん…

gccで実行ファイル生成時に-gの指定?

この記事は gccで実行ファイルを生成するときに-gをつけているmakefileを見かけてめちゃくちゃ不安になったので、リンク時の-gに意味があるのか検証した記事。 前提条件 普通は $gcc -c hoge.c piyo.c $gcc -o foo hoge.o piyo.oみたいに 各ソースをコンパイ…

SDL+OpenGL+Box2Dでデバッグドロー付きHelloWorld

この記事は SDL+OpenGLのゲームにBox2D組み込むのにいろいろいじって勉強しようと思ったけど、ソースコード一個にまとまったごくごく簡単な描画付きサンプルないよなー? って思って自分で作りましたの記事です。 環境とか windows 7 professional 32bit Vis…

Eigen3でアフィン変換するヤツ

なにがあった Eigen3使ってあれこれするのに3次元空間上の点を回転して並進したくなってチュートリアルを覗いてみるとあるじゃないですかアフィン変換が。 アフィン変換行列くらい自分で作ってもいいんですけど、Transform使ったほうがかっこいいし速そう。…

windowsでboostビルドするときのコマンド

何があった 毎回コマンド忘れるのでメモ。 x86とx64で共存できるようにする。 bootstrap.bat b2.exe --build-dir=build/x86 --stagedir=stage/x86 toolset=msvc-10.0 address-model=32 -j9 b2.exe --build-dir=build/x64 --stagedir=stage/x64 toolset=msvc-…

引数のconst参照と値渡しの自動切り替え

なんの話? C++で、サイズの大きいオブジェクトを関数に渡そうと思ったら普通はconstな参照を使うと思います。でも、intとかのプリミティブな型ならわざわざconst参照にしないで素直に値渡しすると思います。この、const参照と値の切り替えをテンプレートな…

windowsでOgreSDK入れてチュートリアル始めるまで

何があった Ogre SDKを導入して最初のチュートリアル始めるのに何故かいろいろ調べて回った感じなので一応メモ。 環境 windows 7 x64 visual studio 2010 express 流れ 順番的には OgreSDKインストール サンプルビルドして動かしてみる チュートリアル用のプ…

クロスプラットフォームゲーム開発で使えるライブラリとか

この記事は クロスプラットフォームのC++ゲーム開発で使えそうなライブラリを自分のためにまとめてる記事です。 追記 2012/2/15 : orgeとirrlicht engineとOpenALとbulletを追加 そもそも前提条件 C++で 楽をして そこそこのパフォーマンスを得られる window…

ブロックでオブジェクトの寿命を制御

なにがあった はるか昔に見たC++のブロックの存在意義に今になって気づいたのでメモ。 そもそもブロックって ブロックっていうのは、関数内で void hoge(){ int foo; ... { int bar; ... cout << foo << endl; //OK cout << bar << endl; //OK ... } ... cou…

eclipse CDTのインデクサーがマクロ定義を認識してくれない

何があった 久しぶりにマクロ定義を使ってみたら、インデクサーがマクロ定義を認識してくれなくて解決できないと言われた。調べてみたらあっさり解決法が出てきたので一応メモ。 やりかた メニューバーの'Window -> Preference' Preference左側のツリーで'C/…

Makefileのヘッダファイルの依存関係のお話

何があった Makefileのどのソースがそのヘッダに依存するとかの話があっていろいろ苦戦したのでメモ。 そもそも依存関係とは Makefileは、依存関係がズラーっと書いてあって、依存関係の末端にそのファイルの生成方法を書いておく、というのが基本的な考え方…