VS2017ではunionの暗黙デフォルトコンストラクタは作られない
C++ Visual Studioビルド時スタイライズ&スタイルチェック
Visual Studio2017でclang-formatが使えるようになってた
dungeonneko.hatenablog.com
インストールするもの
AStyle
Win版を落としてbinフォルダのAStyle.exeを適当な場所にコピー https://sourceforge.net/projects/astyle/files/
cpplint
pip install cpplint
どちらにもパスを通しておいたほうが楽
VCプロジェクト設定
ビルドイベント -> ビルド前のイベント -> コマンドライン
astyle --style=google --recursive "$(ProjectDir)\*.cpp,*.hpp,*.h" cpplint --output=vs7 --recursive "$(ProjectDir)"
基本はこんな感じ。astyleで文字数改行オプションが効かなかったりするのでuncrustifyを試してみたいと思う。
時代に逆らう人のためのregファイル
最近のWindows Updateが気にくわない
Windows Registry Editor Version 5.00 // コマンドウインドウをここに開くを追加 [HKEY_CLASSES_ROOT\directory\background\shell\CommandPrompt] @="@shell32.dll,-8506" "Extended"="" "NoWorkingDirectory"="" [HKEY_CLASSES_ROOT\directory\background\shell\CommandPrompt\command] @="cmd.exe /s /k pushd \"%V\"" [HKEY_CLASSES_ROOT\directory\shell\CommandPrompt] @="@shell32.dll,-8506" "Extended"="" "NoWorkingDirectory"="" [HKEY_CLASSES_ROOT\directory\shell\CommandPrompt\command] @="cmd.exe /s /k pushd \"%V\"" // Windows SearchでBing検索と位置情報とコルタナを無効化 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Search] "BingSearchEnabled"=dword:00000000 "AllowSearchToUseLocation"=dword:00000000 "CortanaConsent"=dword:00000000 // 起動時にPin設定を求められないようにする [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\PassportForWork] "Enabled"=dword:00000000
pip install PySide2
いつの間にかPySide2がpip installできるようになっているではありませんか
msbuild (Visual Studio) で並列ビルドが効かない場合
ビルドルールが違うものは並列に実行されないっぽい。例えば同じファイル名のcppが複数あるプロジェクトで出力オブジェクトファイル名を変更していたりするとこの問題にハマることがある。
非弾性衝突
const auto r = (r0 + r1) * 0.5f; // 反発係数 const auto m0 = 1.0f; // Aの質量 const auto m1 = 1.0f; // Bの質量 const auto u0 = n * dot(vel0, n); // 衝突面(法線N)に対しての垂直方向のAの速度 const auto u1 = n * dot(vel1, n); // 衝突面(法線N)に対しての垂直方向のBの速度 const auto v0 = vel0 - u0; // 水平方向のAの速度 const auto v1 = vel1 - u1; // 水平方向のBの速度 const auto f0 = ((u1 - u0) * (r * m1) + (u0 * m0) + (u1 * m1)) / (m0 + m1); // 衝突後の垂直方向のAの速度 const auto f1 = ((u0 - u1) * (r * m0) + (u0 * m0) + (u1 * m1)) / (m0 + m1); // 衝突後の垂直方向のBの速度 vel0 = v0 + f0; // 水平方向と足して新しい速度ベクトルを作成 vel1 = v1 + f1; // 水平方向と足して新しい速度ベクトルを作成
摩擦を考慮する場合は摩擦係数で水平方向のベクトルを減衰させる