検索結果 164 件

by GRAM
6年前
フォーラム: C言語何でも質問掲示板
トピック: [雑談] 新しい当Webサイトについての雑談トピ
返信数: 24
閲覧数: 43241

Re: [雑談] 新しい当Webサイトについての雑談トピ

リニューアルお疲れ様です。
色合いもいい感じですね。
不具合というほどではないのですが、
一応報告しておきます。

ログインに失敗したときに、
再度ログインIDとパスワードを要求されるフォームで、
ID打ってからTABを押すと、パスワードにいってくれなくて変なところに飛びます。
by GRAM
8年前
フォーラム: C言語何でも質問掲示板
トピック: [C#]PNGの幅,高さのみをファイルから高速に取得する方法について
返信数: 5
閲覧数: 9180

Re: [C#]PNGの幅,高さのみをファイルから高速に取得する方法について

>YuOさん
ありがとうございます.
Disposeの件はたしかにそうですね.
ありがとうございました.
上記のコード(using部は修正しました)では数秒で開くので目的は達成しました.
皆さんありがとうございました.
by GRAM
8年前
フォーラム: C言語何でも質問掲示板
トピック: [C#]PNGの幅,高さのみをファイルから高速に取得する方法について
返信数: 5
閲覧数: 9180

Re: [C#]PNGの幅,高さのみをファイルから高速に取得する方法について

一応こうしました ありがとうございました private bool CheckSize(string[] files) { int widthBase; int heightBase; LoadPNGSize(files[0], out widthBase, out heightBase); foreach (string name in files) { int width; int height; LoadPNGSize(name, out width, out height); if (width != widthBase || height != heightBase) { retur...
by GRAM
8年前
フォーラム: C言語何でも質問掲示板
トピック: [C#]PNGの幅,高さのみをファイルから高速に取得する方法について
返信数: 5
閲覧数: 9180

Re: [C#]PNGの幅,高さのみをファイルから高速に取得する方法について

>>みけCATさん
返信ありがとうございます

それとごちゃってる部分はBitConverterで行けそうですね.
解決したらコードを載せておきます

<追記>
・・・と思ったらBitConverterってエンディアン指定できないんですね…
by GRAM
8年前
フォーラム: C言語何でも質問掲示板
トピック: [C#]PNGの幅,高さのみをファイルから高速に取得する方法について
返信数: 5
閲覧数: 9180

[C#]PNGの幅,高さのみをファイルから高速に取得する方法について

こんにちは.いつもお世話になっております. ご質問させていただきたいのですが,現在PNGで保存された4000枚ほどの画像を使って画像処理を行うアプリケーションを作っております. 処理の都合上4000枚の画像はすべて同じ幅,高さである必要があるのですが,以下の方法を用いると 与えられた4000枚の画像がすべて同じ幅,高さであることをチェックすることに非常に時間がかかります (おそらくいちいちすべての画像をImageに読み込んでいるからだと思います.) 言語はC# 開発環境はVisual Studio 2015です. private bool CheckSize(string[] files) {...
by GRAM
8年前
フォーラム: C言語何でも質問掲示板
トピック: C言語でお金支払最適化プログラムを作りたい
返信数: 3
閲覧数: 3563

Re: C言語でお金支払最適化プログラムを作りたい

126円の構成が
100円x1
10円x2
5円x1
1円x1
という最適な構成とするなら
32円払うのに

100円と5円1枚ずつはあってるのでは...?
by GRAM
8年前
フォーラム: C言語何でも質問掲示板
トピック: クラス内でのString型オブジェクトの宣言
返信数: 7
閲覧数: 7291

Re: クラス内でのString型オブジェクトの宣言

回答ありがとうございます。 あまり良くわからなかったのですが、ヘッダーにクラスを宣言していたのが原因のようでした。 .cpp内に移動したら問題なく動作しました。 ちなみにエラーは、 "error C2039: 'string' : 'std' のメンバーではありません。" というものでした。 ありがとうございました。 おそらくヘッダーで#include <string>を最初にインクルードしてないからじゃないですかね? class a{ void f(){ printf(%f,k); } protected: double k; std::string s;//←ここより手前でstringの...
by GRAM
9年前
フォーラム: C言語何でも質問掲示板
トピック: 円形と四角の当たり判定
返信数: 12
閲覧数: 10863

Re: 円形と四角の当たり判定

>>usaoさん 長方形内部に円がある場合は単に距離が0になります。(P=x Q=y) 長方形領域内の最近傍点とはそういう意味を含んでいます(紛らわしかったらすみません) (最後の判定式は問題ないです) その場合をより高速に判定するならば フラグを立てといて衝突としてしまうのが考えられます(これは四隅が最近傍点にならない場合も同様) 最後の計算が重い(というほどでもないが)ととらえるのならば、四隅が最近傍点にならない場合2乗をしない 高速な計算方法はありますが(それが最後の計算を省ける場合があるといった最後のコメントです) この程度の計算は多くの場合気にするほどじゃないと思います。(質問者さん...
by GRAM
9年前
フォーラム: C言語何でも質問掲示板
トピック: 円形と四角の当たり判定
返信数: 12
閲覧数: 10863

Re: 円形と四角の当たり判定

おそらく最も簡単な方法(?)は、usaoさんの方法を若干改良したものでしょう。 長方形の対角線の交点座標(長方形の中心を)を(0,0) x方向の長さをA 、y方向の長さをB、 円の中心を(x,y)半径をrとします。 解き方としてはusaoさんの示すやり方とほぼ同じで要は 長方形と円のあたり判定の問題⇒長方形から円の中心点までの距離の問題とします。 要は長方形から点までの距離がr以下であれば終わりです。 usaoさんのと違うのは領域問題にしないのと、R付の長方形を考えないことです。 (ただしR付の長方形の考え方自体はこの場合以外でも必要になることがあるので大事だとは思います) 長方形の領域内にあ...
by GRAM
9年前
フォーラム: C言語何でも質問掲示板
トピック: ウェーブマシンのようなモノを描画したい。
返信数: 19
閲覧数: 10508

Re: ウェーブマシンのようなモノを描画したい。

↑の自分のコードですが 計算誤差の問題だと思ってましたが、たぶんそうではなくて 先ほどのコードのばね定数を1にした場合は非常にうまくいくことがわかりました。 理由は・・・なんでだろう?ちょっとよくわかりませんけど何か理由があると思います・・・ (たぶんこれだという理由がありそう。コードのミスかそれども原理的な問題かはすぐにはわかりませんが) (追記:もはや質問のレベルから外れるけれどたぶんCFDでいうクーラン数相当の条件だと思います。伝播速度が粒子サイズを上回ると計算が発散する 波の伝播速度を調整したいなら、1秒間に行う計算回数を増やす必要があるということ。確信は持てないですが…) まぁいずれ...
by GRAM
9年前
フォーラム: C言語何でも質問掲示板
トピック: ウェーブマシンのようなモノを描画したい。
返信数: 19
閲覧数: 10508

Re: ウェーブマシンのようなモノを描画したい。

最低限のコードで反射を含む実装を考えてみましたが、意外と難しいですね。これ。 自分のアプローチの仕方が悪い可能性が十分にありますが・・・。 ばねそのものをシミュレーションしてみた感じです。 右が自由端、左が固定端になります。 反射もそれっぽく表せてますが、なぞの振動が消せない・・・。 以下コピペで動くコード。 今後の参考になれば。 Z押してる間持ち上げます。 #include "DxLib.h" #include <vector> using namespace std; static char key[256]; static const int Width = 600; static co...
by GRAM
9年前
フォーラム: C言語何でも質問掲示板
トピック: マクローリン展開による三角関数の近似値計算プログラム
返信数: 8
閲覧数: 14495

Re: マクローリン展開による三角関数の近似値計算プログラム

オーバーフローに関してはほかの人が指摘しているとおりでしょう。 というかこの手の計算でint型を使う必要は皆無だと思います。 大体多くのdouble型は仮数部が50bit以上あります。すなわちdouble型はint型の扱う範囲であれば誤差なく表現できます。 多倍長整数が必要になるような大きな整数を扱うのでない限り、doubleを使えばいいと思います。 このことにつけ加えるなら誤差の原因は ①おそらく標準の実装はforループを使わないで、誤差が最小になるようにあらかじめ計算順序を最適化しているから この辺は計算機数学の話で、どういう計算をすれば誤差が小さくなるのかはsinを求めるアルゴリズムとは...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: シングルトンパターンを使用した場合のデストラクタ呼び出し
返信数: 7
閲覧数: 3938

Re: シングルトンパターンを使用した場合のデストラクタ呼び出し

コードを貼って頂きありがとうございました。ひとまず、このコードを使用して上手く動作するか確認してみます。 お二方ともご教授ありがとうございました。 あの表現で伝わりましたか自信がないので強調しておきますが、 このコードをそのまま使う場合プログラムの終了直前にFinalize関数を呼び出さないと、 Controlクラスのデストラクタが呼び出されません。 例えばControlクラスのデストラクタで何らかしら絶対動作に必要な処理が行われるのなら、 必ずFinalize関数を呼び出すように徹底しなくてはならないと思います。 (解決するためにはControlのポインタをスマートポインタにすればよいと思...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: シングルトンパターンを使用した場合のデストラクタ呼び出し
返信数: 7
閲覧数: 3938

Re: シングルトンパターンを使用した場合のデストラクタ呼び出し

その後は任意に呼ぶことはできないということでしょうか? だとすると、コンストラクタとデストラクタに変わって初期化、終了処理を 行うような関数をそれぞれ作ればよいのでしょうか? そういうことは別にないと思いますよ static CONTROL* control_; //(nullptrで初期化) static CONTROL& GetInstance(){ if( control_ == nullptr ) { control_ = new CONTROL(); } return *control_; } static void Finalize() { delete control_; co...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: 敵が一番近くの敵をロックオンするにはどうしたらよいのか
返信数: 5
閲覧数: 4753

Re: 敵が一番近くの敵をロックオンするにはどうしたらよいのか

平方根につっこむ意味がわからないのですが、必要あるのでしょうか? 2乗した形でも大小が比較できるような気がしますが・・・ ないでしょうね。その通りです ところでdistanceを20個保管しておく必要があるのでしょうか? (別のところで利用するのでしたらごめんなさい) 敵の番号が0~19で管理されているのであれば、 各個体が ①「その個体から現在までに調べた他の個体への最短の距離」 と ②「最短距離となる個体番号」 を記録するような処理を記述し、 新たに別の個体までの距離を調べたときに その個体までの距離が現在記録されている最短距離よりも短ければ ①と②を更新し、全部調べおわった時の②の個体...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: 余弦定理や正弦定理はゲーム制作でどのように使われるのか
返信数: 4
閲覧数: 3560

Re: 余弦定理や正弦定理はゲーム制作でどのように使われるのか

余弦定理も正弦定理も直接使用することはまれかもしれないですね。
(そもそも論で正弦定理の方はゲームに限らずあまり多用する公式ではないかと)
とはいえ、余弦定理はベクトルの内積という形で間接的には多用しているかと思います。
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: ドリフトっぽい動きをするミサイル
返信数: 72
閲覧数: 27162

Re: ドリフトっぽい動きをするミサイル

珈琲 さんが書きました:極稀にまったく曲がろうとしないで、加速度全快で正面を突き進んでいくミサイルが生まれるのですが、これは何が原因でしょうか?
ミサイルが当たらないというのと関係はありそうですが・・・
一瞬ならともかく彼方まで飛んで行くので、なんだろうなぁと
といわれましても、この内容では残念ながら私の力ではどうすることもできません。
お力になれずに申し訳ないのですが、自分に同じ問が投げかけられたと想定してください、としか。
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: ドリフトっぽい動きをするミサイル
返信数: 72
閲覧数: 27162

Re: ドリフトっぽい動きをするミサイル

ですが、なんか、やっぱり飛んでる目標にまったくあたりませんね・・・ 直進してるだけの敵にも当たらないので、・・・またコードを間違ってるのでしょうか 自然な動きに見えるかはともかくとして、 アルゴリズムを完全に理解したうえで、かつ通りに実装していれば3Dでも少なくとも目標には命中するはずです。 そこまでいけば初めて実装の間違いの有無を探す時が来たのではないですかね? (ただもしかしたら外積が0になっている例外の処理ができてないのかもしれないですね。 自分の最後のコードはあくまでもイメージなので、当然起こりうる例外は実際にはつぶしていただく必要があると思います。) 現実のミサイルは当たらないもの...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: ドリフトっぽい動きをするミサイル
返信数: 72
閲覧数: 27162

Re: ドリフトっぽい動きをするミサイル

なんとなーくですが、理解出来た・・・とおもいます 必要なベクトルの長さちょうどにするように角度をずらすというか・・・ その通りです。 Cosが2回定義されるのですが、両方共視覚というか・・・ VRotate2Dもよく理解できず・・・atan2みたいなものでしょうか? 2次元から3次元に起こすのがちょっと困難です・・・ 初めの  double Cos = (neededA*direction_)/nALength; はベクトルの内積の定義から明らかだと思います。 neededAとdirection_の二つのベクトルの角度のコサインを得ます 次に計算誤差によりcosの値が-1.0~1.0に収まら...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: ドリフトっぽい動きをするミサイル
返信数: 72
閲覧数: 27162

Re: ドリフトっぽい動きをするミサイル

えーと、赤い矢印に移動ベクトルを合わせるにはそれより手前の斜めの黄色矢印でいいんですか? 斜めの黄色い矢印が目標への方向で、赤矢印が現在の進行方向で、緑矢印が正規化された方向ベクトル、ということではないんですか? 残念ながらあまり意図が伝わっていないのではないかと思います。 自分はこう定義しました。 「緑のベクトルが方向ベクトル、赤が必要な加速度ベクトル、黄色の長さが加速度ベクトルの最大値」だと。 どこにも「目標への方向」なんて単語は出ていないと思います。 またこの話を一般化してもらっても困ります。 あくまでこの話は if( nALength < accel ) の場合だけです つまり自分の...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: ドリフトっぽい動きをするミサイル
返信数: 72
閲覧数: 27162

Re: ドリフトっぽい動きをするミサイル

>そういう意味だとしたら、「加速度ベクトルは正規化された方向ベクトルの定数倍」といったほうが正確かと思います。 なるほど、この文章のほうが正確と・・・ いえ、よく読むと文脈から明らかに違うということはわかるのですが、最初の言い方だと方向ベクトルと加速度ベクトルの内積か外積かどちらかかと 思ってしまいました。(ベクトルの掛け算は内積か外積、また方向ベクトルの大きさが1かどうかも分からなかったので) コードの解説ですが、まず前提となる物理法則を説明します。 ①静止している座標系に対し等速直線運動することなる座標系を慣性系という。 ②もとの座標系における加速度と、慣性系における加速度は「同じ」であ...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: ドリフトっぽい動きをするミサイル
返信数: 72
閲覧数: 27162

Re: ドリフトっぽい動きをするミサイル

疑問というか確認なんですが 移動ベクトルとは単純に速度ベクトルということでいいですかね ミサイルの方向ベクトルと加速度の積というのは「方向ベクトルと加速度の大きさ」の積ということでしょうか (この場合方向ベクトルは正規化つまり大きさが1である必要があるでしょうしそう解釈します。加速度もベクトルなので一応確認です) そういう意味だとしたら、「加速度ベクトルは正規化された方向ベクトルの定数倍」といったほうが正確かと思います。 文章を読んだ限り、自分の最後のプログラムを以下のように修正すればすべての条件が満たされると思います。 //double maxRotate = cos(20*PHI/180)...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: ドリフトっぽい動きをするミサイル
返信数: 72
閲覧数: 27162

Re: ドリフトっぽい動きをするミサイル

自分としてはイメージを共有したいのですが…。~っぽいとか~みたいなという表現ではなく ①どういう条件下で誘導するのかという点を ②どの数字をいじってどの数字を固定するのか、どの数字とどの数字にはどういう関係性があるのか という点を明確に語ってほしいです。個人的にはそこさえ共有できればアルゴリズムやソースコードなどどうとでもできると思うのです どうやら慣性がキーワードっぽいので、ミサイルに向きの概念を導入し推力ベクトルをミサイルの方向ベクトルと180°逆の方向へ固定 スラスト力をヨーモーメントのことだと勝手に解釈して、違う追尾アルゴリズムを組んでみました。 これがなに航行かはよく知りません。未来...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: ドリフトっぽい動きをするミサイル
返信数: 72
閲覧数: 27162

Re: ドリフトっぽい動きをするミサイル

横やりですが、まぁエースコンバットについて言うのならば、ヘッドオンでミサイルは普通にあてられます。 難易度に関わらず、です。 とはいえある程度引き付けて打たないと敵が回避しちゃうので逃げられますが…誘導の問題はたぶんないと思います。 むしろ0のラストは特殊な例ですね。あれは最後だけ敵がほぼ回避行動とらないので… ところで自分も a_ = v_.Normalize()*accel; //一定の加速度を加える v_ += a_; s_ += v_; こういう処理を入れているのでミサイルは進行方向に加速していると思うのですがダメなのですかね? 追記:あぁなんとなくわかってきました。 ただ個人的な意見...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: ドリフトっぽい動きをするミサイル
返信数: 72
閲覧数: 27162

Re: ドリフトっぽい動きをするミサイル

コードです。 長くなるのでスポイラーにします。 (ベクトル演算用のコードが長いだけなので160行あたりまで読み飛ばしてもいいです) #include <DxLib.h> #include <random> #include <cmath> static const double VEPSILON = 0.000001; struct Vec{ public: double x; double y; double z; Vec():x(0),y(0),z(0){} Vec( double x_, double y_, double z_ ) :x(x_),y(y_),z(z_) { } Vec(...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: ドリフトっぽい動きをするミサイル
返信数: 72
閲覧数: 27162

Re: ドリフトっぽい動きをするミサイル

比例航法としてはこの実行ファイルであってると思います。 それに、usaoさんの >「ターゲット予測位置方向に常にミサイルの速度ベクトル(Mlne)が向いている状況をキープする」 という状況を加えたいです。 そういう条件を加えることは容易ですが、上にも述べたとおり「凶悪な」ミサイルになります。 その文章の意味するところは ①角速度に制限がないため予測衝突座標の方向へ一瞬で向く ②予測衝突座標は一意に決まる為回避不可能 (速度ベクトルが一瞬で予測座標を向くのならターゲットからみた相対座標系において静止している目標にまっすぐ飛んでいくことと同義) という①はおかしな挙動に見え(横を向いて発射された...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: ドリフトっぽい動きをするミサイル
返信数: 72
閲覧数: 27162

Re: ドリフトっぽい動きをするミサイル

よくわからないですが、とりあえず適当に書いてみました。こんな感じはどうなんでしょうか。 クリックするとある程度ランダムな初速度でミサイル(緑)が ターゲット(青)に向かって飛んでいきます。 (単純な計算の割には結構命中してるようにも見えます) ●●航法とかは全然詳しくないので、以下のように考えてプログラミングしました。 ①ミサイルの最適な航行経路を求めるのは可能かもしれないが、ぱっと考えた感じ困難 (というのもミサイルは2次元あるいは3次元的に回転しかつ加速し、またターゲットは回避行動をとるのが普通と思われるため) ②ミサイルとターゲットとの衝突時刻をある程度予測することは可能 ③衝突予測時刻...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: 3Dゲーム 球状の上をキャラに歩かせたい
返信数: 8
閲覧数: 4699

Re: 3Dゲーム 球状の上をキャラに歩かせたい

完全に素人の意見なのであまり当てにしないでください。 「仮定:キャラクターは常に足が球体の中心を向いている」というのならば、 他にもっと素晴らしいやり方がたぶんあるんだろうということを考えたうえで こんなのはどうだろう?というのを挙げます。 キャラクター毎に保持しているクォータニオンと半径で全キャラクターの位置と向きを決めるというやり方です。 このやりかたはキャラクターは浮動小数点数5つで、向きも含めて一意に場所が決まります。 (ただし必要に応じてx,y,z座標系も用います。こちらは上の5つから毎フレーム求めればいいと思います。) クォータニオンじゃなくて回転行列でも多分おんなじことができると...
by GRAM
10年前
フォーラム: C言語何でも質問掲示板
トピック: クォータニオンで指定した自機の回転から、追従するカメラの回転を指定したい
返信数: 30
閲覧数: 10877

Re: クォータニオンで指定した自機の回転から、追従するカメラの回転を指定したい

あまり流れを理解していなく、パッと見た感想なんですが、別にクオータニオンじゃない最初のコードでも別に ジンバルロックは起きないんじゃないんですかね? そもそも機体姿勢の決定には最低6変数(座標および回転角度)が必要なのに対し、 最初のコードは変数が12個ありますから。(座標及び各軸方向つまり回転行列そのもの) もちろんクオータニオンのほうが変数の総量が少ないというのはありますが。(こっちなら合計7個) ただしもとのコードを使うなら、ソフト屋さんの例示したコードをそのまま使えるような気がします。 // カメラを機体後方に移動 MATRIX matCam = MGetIdent();//単位行列 ...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: [C#] thisキーワードの使い方
返信数: 12
閲覧数: 17763

Re: [C#] thisキーワードの使い方

thisの使い方云々ではないもっと根本的な話なような気がするのですが… THISTEST.MainWindow.ListView1.Dock は 前半部分THISTEST.MainWindowについていえば THISTEST名前空間の中のMainWindowクラスを指していますが、(つまりこれは型ですが) 後半部分はMainWindowクラスのインスタンスのListView1プロパティー(もしくは単にメンバ)の中のDockプロパティーなので、 意味不明となりコンパイルエラーとなります。 自分自身をさしたいなら前半のthisでいいです。 そもそも何もつけないという選択肢もありです。 thisはど...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 専門書、技術書の読み方について。
返信数: 5
閲覧数: 5031

Re: 専門書、技術書の読み方について。

自分もshiro4aoと大体同じような読み方です。
というか自分参考書って1回読んだだけじゃ覚えられないし理解もできないんですよね…。
ざっと読んで、もう一度見返して初めてなんとなくわかるような感じですが。
コードを実行したりじっくり読んだりはしません。わからなければそのままでも
後ろのページ見たりしたらわかることが大抵ですので。
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 大学のC言語の演習問題がわからないので質問します。
返信数: 30
閲覧数: 12293

Re: 大学のC言語の演習問題がわからないので質問します。

すっごく今更感ですが、距離の比較自体は平方根をとる前の段階で(つまり距離の2乗の段階で)十分ですよ。
x^2>y^2かつx,y>0 ⇒ x > yですから。

そうやって求めた距離の2乗のうち一番小さいものを選んで、最後に平方根をとって表示すれば十分です
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 演算子のオーバーロード
返信数: 7
閲覧数: 3174

Re: 演算子のオーバーロード

h2so5さんありがとうございます<(_ _)> << や + などの演算子をfriend関数での定義に書き換えようと思っているのですが、 そのまま friend Bunsu operator-( const Bunsu& ); このように前に書くだけでよいのでしょうか? Bunsu operator-( const Bunsu& );これはメンバ関数であって非メンバ関数ではないのでfriendのしようがないのではないとおもいますが。 書くとしたら friend const Bunsu operator-( const Bunsu& lhs, const Bunsu& rhs ); のように...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 俺、私の自己流C言語コーディング
返信数: 7
閲覧数: 3953

Re: 俺、私の自己流C言語コーディング

見やすいのを目指しますが、あんま考えないこともあります。 // 関数の最初にコメントを入れるが、極力関数名で何をやる関数かわかるようにする。 int Function1( int Argument1, int Argument2[], float Argument3, double Argument4 ) { //むしろ変数名タブでそろえることがある int j; // 変数宣言時は右側にコメント int Variable1[IndexNum]; // スラッシュ位置はできるだけ合わせる int Variable2=0; // 変数や関数名は最初が大文字 double Variable3, V...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 円と矩形が衝突した際にスムーズに移動させるには
返信数: 10
閲覧数: 3939

Re: 円と矩形が衝突した際にスムーズに移動させるには

>>Tatuさん なんかもはや言うことがなくなってしまいました。ありがとうございますw //AABBと位置から最近傍点を求める Vec GetClosestPointAABB( AABB aabb, Vec p ) { for( int i = 1; i <= 2; ++i ) /////2回処理を行うのはX,Yの二回でしょうか・・・? { if( p[i] < aabb.s_[i] - aabb.l_[i] ) ////中心ー各辺の長さの半分 > 方向ベクトル・・・、ここの処理が難しいですorz p[i] = aabb.s_[i] - aabb.l_[i]; if( p[i] > aabb...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 円と矩形が衝突した際にスムーズに移動させるには
返信数: 10
閲覧数: 3939

Re: 円と矩形が衝突した際にスムーズに移動させるには

自然なスライドというのがどういうことなのかを明文化する必要があると思いますが、 取りあえず当たったら補正というだけならこんな感じはどうでしょう? 以下コード #include <DxLib.h> #include <Vector.h> typedef Linear::Vector<double> Vec; const double dt = 1.0/60.0; struct AABB { AABB( Vec s, Vec l) :s_(s),l_(l / 2.0) { } void Draw() const { DxLib::DrawBox( int( s_.x - l_.x ), int( ...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 進数
返信数: 5
閲覧数: 2487

Re: 進数

なぜコンピューターは2進数でかんがえるのかという疑問があるのならば、 なぜ我々は10進数でかんがえるのかということを考えてみることをおすすめします。 質問の内容に具体的に答えるのでしたら、 ①整数を整数として使う限りなら2進数を詳しく知る必要性はあんまりない ②分数や小数についていえば、10進数では循環しない小数(たとえば0.1など)が循環するので、  誤差を考えたりする必要があるのであれば詳しく知る必要がある。  そこらへんが大雑把でいいのであれば、別に知らなくても当面プログラムはかける。 ③C言語でビット演算をするのであれば、(数学的な定義云々よりもこれが一番必要性を感じることになりそうで...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: ■ 新年の挨拶トピック~2013~ ■ 今年の抱負 ■ [雑談]
返信数: 25
閲覧数: 11549

Re: ■ 新年の挨拶トピック~2013~ ■ 今年の抱負 ■ [雑談]

明けましておめでとうございます。
今年もよろしくお願いいたします。
全く関係ないですが今年は取りあえず院試に受かることが目標ですw
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 敵を中心とした自機の回転運動
返信数: 3
閲覧数: 2459

Re: 敵を中心とした自機の回転運動

まずは自分で問題を簡単にしていくことが大事だと思います。 3Dとありますが、 Y軸については考慮せずxz平面で考えています とした時点で1自由度減っているのでこれは2Dの問題です。 リンクされたトピックにはカメラワークに関する記述があるようですが、 与えられた情報(自機の座標及び敵の座標)をもとにして 「敵の座標を中心として自機の座標を回転させる」 ということのみを考えるのであれば関係ないことです。 2Dにおいて、任意の座標を中心として他の任意の座標を任意の角度で回転させる手法というのは それこそ調べればたくさん出てくると思いますが、 まずは簡略化された以下の問題は解けますでしょうか? 問:点...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: constを付けるべきか
返信数: 3
閲覧数: 1799

Re: constを付けるべきか

場合にもよるとおもいますが、そもそも論で そこが気になるのであればラッパを一回かませればいいんじゃないかと思います。 #include <iostream> class HogeLibWrapper { public: void SetColor(...) { HogeLib::SetColor(...); } void Draw() const { HogeLib::Draw(); } }; class Hoge { private: HogeLibWrapper hogeLib_; public: void setColor() { hogeLib_.SetColor(...); } vo...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 確率の分母を代入する為の変数の命名についての相談です
返信数: 6
閲覧数: 3799

Re: 確率の分母を代入する為の変数の命名についての相談です

確率の話ですよね?一般に分数の話をしたければ、分母はdenominatorというよりほかありません。
全事象をもって確率の分母を表したいのならば、分母の変数名は全事象を表すwhole_eventでいいと思います。

約分しちゃったら、もはや分母とか分子とかそういう話ではなく、
分数全体をもってprobabilityですから分母がどうという話をするのはナンセンスだと思います。
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 【TMP(?)】クラスのテンプレート引数でメンバ関数を特殊化
返信数: 4
閲覧数: 3007

Re: 【TMP(?)】クラスのテンプレート引数でメンバ関数を特殊化

ぶっちゃけ、引数のtrue or falseによって呼び出す関数を変えたいだけならこれだけなきが・・・ #include <iostream> using namespace std; template< bool isEnable > struct A{ void func(); /*その他とても多くの関数など…*/ }; template<> void A<true>::func() { cout << "なんか処理" << endl; } template<> void A<false>::func() { cout << "エラー?" << endl; } int main(){ A<...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: クラスの関数内の変数について
返信数: 10
閲覧数: 5206

Re: クラスの関数内の変数について

そもそも論なんですけど、メンバ変数が特定の関数にのみ必要で、しかもその変数をそのクラスが保持することに違和感を覚えるのだとしたら
それはより細かくクラス分けをするべき時なんじゃないですかね?
もちろん規模によるでしょうが。
その意味ではたかぎさんのコードが近いですけれど、
自分的には普通にコンポジットパターンでいいんじゃないかと思ってしまいます。
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: デフォルトコンストラクタが消えてない?
返信数: 4
閲覧数: 1625

Re: デフォルトコンストラクタが消えてない?

①ユーザー定義のコンストラクタを定義している場合、コンストラクタをdeleted functionにすることは冗長です。 これは規格8.4.3のexampleにも書いてあります これで動きます。 #include <iostream> using namespace std; struct Hoge { Hoge( int i = 0 ) { cout << "hoge.Constructor" << endl; } }; int main() { Hoge hoge; } ②同じ個所にこう書いてあります A program that refers to a deleted function ...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: C#で簡単に実現可能が、C++11は実現できない機能、、、
返信数: 10
閲覧数: 5071

Re: C#で簡単に実現可能が、C++11は実現できない機能、、、

自分も大学でマトラボは使いますが、 あれをC++やC#と比較するのはちょっと・・・と思います。 (極端な話ExcelとC++を比較してるのとあんまり変わんない。) C#で自分が感動した機能はといえばtry-catch-finallyですかね。C#のラムダ式は便利といえば便利ですが あとめんどくさいという点でいえば、C++の暗黙のキャストは抑制が面倒なので、C#の型に対する厳しさは楽です。 言語仕様についていえば、むしろC++11のほうが自由度は高いと感じますが・・・ (だからこそC#が便利だともいえるので、自分は別にどっちがいいとも思いません。) 双方とも工夫次第で似た機能は手に入れられると思...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: [雑談?]c++の分かりやすいプログラム
返信数: 25
閲覧数: 11579

Re: [雑談?]c++の分かりやすいプログラム

自分に限って言えば、C++を使うのは最近数値計算をする時に限られてきましたが、(ゲーム等は作っていないので) 気を付けていることは、式が直観的に書けるかどうかということですかね? A = B × Cと手計算で書くならば、プログラムもA = B * C と書けるようにするべきだと思っています。 これは演算子のオーバーロードレベルの話ですが、たとえば"関数の内積"だとか、"合成関数"とか"変換"だとか その他独特な書き方をどうやって(自分にとって)直観的に書くことができるかということを最近考えてます。 (でないとあとから読めたものじゃない) まぁ人に見せるものじゃないので、別に自分が分かればいいの...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 多倍長演算を用いた平方数
返信数: 34
閲覧数: 10790

Re: 多倍長演算を用いた平方数

ぶっちゃけ誰かが絶対言うだろうと思ってたのですが、 そもそも質問に対する突込みって違いますよね。 「多倍長が必要になるところまで1~nまでの二乗を表示する」 というということそのものが無理だと思います。 時間的に。 そもそもunsigned long longの最大値ですらとんでもない数ですからね。 1年ほど前に、暇つぶしに作った多倍長変数を扱うクラスを見つけたので(C++ですが)参考程度に乗せておきます。 ただし実装しているアルゴリズムはいわゆる筆算であり、出来のいいものではありません・・・。 一応加減乗除はでき、1000!くらいまでは頑張って計算できます。 しかし多倍長が必要になる領域まで...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: エアホッケーみたいなゲームの当たり判定について
返信数: 39
閲覧数: 17600

Re: エアホッケーみたいなゲームの当たり判定について

朝起きてコードを見返してみたら、簡単なミスが何か所かあったので修正しました。 //C言語はあまり得意ではないのですが、できる限りC++の構文を使わないように努めます。 #include <cmath> #include <DxLib.h> static const double e = 0.9; //反発係数 static const double CdS = 0.001; //空気抵抗係数x面積(適当) //ベクトルを表す構造体 struct Vector { union{ struct{ double x_; double y_; }; double x[2]; }; }; Vector ...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: エアホッケーみたいなゲームの当たり判定について
返信数: 39
閲覧数: 17600

Re: エアホッケーみたいなゲームの当たり判定について

掲示板を見ているとよく思うのですが、ソースコードはスポイラーで隠しておくべきだと思います。 というのも単純に見にくいのです。 スクロールバーを動かすのは最小限にしたくないですかね? 一応それっぽくできました。 壁付近での挙動が示されていないので如何ともしがたかったのですが、 一応ラケットとボールは移動量によらず判定できるはず(?)だと思います。 ただ保証はしません。 壁付近では何を優先するべきかよくわからなかったので処理は適当です。 よって壁付近ではすり抜けが生じることがあります。 それ以外の場所では(つまり壁からラケットまで移動するのに1フレーム以上かかる位置では) 例外を見つけたら教えてほ...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: エアホッケーみたいなゲームの当たり判定について
返信数: 39
閲覧数: 17600

Re: エアホッケーみたいなゲームの当たり判定について

自分なりにコードを書いてみます。 ①移動する円盤と長方形のあたり判定を実装する ②長方形はマウスに追従する ③円盤の速度には長方形の速度が加算される ④すり抜けを回避する これらを実装するよう頑張ります。 基本的にはカプセルとAABBの衝突判定に、衝突点を計算するようなプログラムになると思います。 現段階では衝突点検知に一部問題があるようなので、完全ではありませんが、衝突そのものの検知はできているようです。 (今からしばらく大学に行くので、帰ってきてから続きを書きます。) //C言語はあまり得意ではないのですが、できる限りC++の構文を使わないように努めます。 #include <cmath>...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: エアホッケーみたいなゲームの当たり判定について
返信数: 39
閲覧数: 17600

Re: エアホッケーみたいなゲームの当たり判定について

  速度の加算は簡単に1フレームで動いた分をそのまま速度にして100以上の場合はデフォルトで100を設定しております。   速度の減算は無条件でデフォルトのボールの速度しようと思います。0にはならないようにしようかと思います。 ・・・ たとえば上の一点に関して言っても、 もしラケットの速度が100を超えている場合に、明らかな矛盾がありますよね。 だってラケットの速度が100を超えていればどう頑張っても食い込みを回避できないわけですから(ボールの速度が100を超える) ラケットにあたっている場合だけラケットに追従させることもできるでしょうが・・・ 減算の条件で0にならないというのもイメージがで...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: エアホッケーみたいなゲームの当たり判定について
返信数: 39
閲覧数: 17600

Re: エアホッケーみたいなゲームの当たり判定について

GRAMさんへ   どんなものかというと完全にエアホッケーのルールです。   今は四角ラケットで丸ボールとの当たり判定をしていますが、ラケットはマウスで操作していて   ラケットの移動速度が速いときにボールを貫通しています。   ちなみにこの他にひし形と円のラケットの当たり判定も残っています^^; 言葉通りに受け取ってみます。 たとえば、円とおっしゃってますが点じゃなくて大きさのある円なのですね。 速度の加算や減算はどうするのでしょうか? ラケットの速度を加算するのですか? ラケットは回転するのですか? 円がラケットの頂点に当たったらどういう挙動をするのが理想なのでしょうか? 1フレームの間...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: エアホッケーみたいなゲームの当たり判定について
返信数: 39
閲覧数: 17600

Re: エアホッケーみたいなゲームの当たり判定について

具体的な絵を描いてください。
あたり判定は、幾何学です。
絵を描かなくては始まりません。
どういった形状の物体にどういった衝突判定をしたく、
それぞれの物体はどのように運動し、衝突後どのような応答をするのですか?

コードも大事ですが、AKIЯAさんの期待する動作をまず示すことが重要だと思います。
出なければ、回答する側は完成していないコードを読んで期待する動作を想像しなければなりません。
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 連打プログラム
返信数: 3
閲覧数: 2947

Re: 連打プログラム

おそらく考え方を提示することは容易ですが、 Octopusさんがどのような加速と減速を想定しているかにアルゴリズムは大きく依存します。 現実の現象に当てはめて加減速のイメージを説明していただくか、もしくは イメージされている挙動そのものを説明していただかないと提案しづらいです。 特に減速の挙動はパターンがいくつもあります。 例えば僕が思う加減速だと次のようなものがあります ①ボタンを連打すると、ボタンを押すたびにスピードが回数に比例して上がる。 しばらく入力がないと、時間に比例して減速を始める。 ②ボタンを連打すると、押す間隔が短いほどスピードが上がる。 時間に対して速度低下が線形になるよう一...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: DxLibで自作物理演算
返信数: 36
閲覧数: 15538

Re: DxLibで自作物理演算

物理演算という点に絞って話が進んでしまいましたが、本質的なことを一つ。 人の歩行に対し本当に必要な知識は物理ではありません。 簡単に言えば物理など知っていて当然のものなのです。 人の歩行をシミュレーションしようとお考えでしたら、本当に必要になるのは「制御工学(Control Engineering)」です。 フィードバックという単語がちらっと出てきていますが、フィードバックも制御工学の用語です。 とはいえここで挙げられている制御ですら、伝達関数などを用いたいわゆる古典制御と呼ばれる分野の範疇で、 いわば初歩中の初歩であり、人間の動きを再現するにはあまりにも陳腐です。 (一般に人間は小脳を使って...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]ADLについて
返信数: 13
閲覧数: 4825

Re: [C++]ADLについて

>>かずまさん ご返信ありがとうございます。 質問内容の不明確さにつきまして、大変お手数をおかけしました。 かずまさんの考え方は確かにADLを適用するうえでの法則性として納得のいくものだと感じました。 一方で(これは標準がそうなってる以上、かずまさんにいってもしょうがないことですが・・・)明確なメリットがないかもしれない、 もしくはここに挙げられている以上の何らかの理由が存在するかもしれないが現時点ではやはり不明である ということに関しては少々腑に落ちない点も残ります。 (もし本当にメリットがないとすると僕はこれを「よくない機能」だと考えせざるを得ません。) とはいえ、自分にとって新に有意義な...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: [雑談]プログラミングで一番嫌な経験は?
返信数: 24
閲覧数: 9332

Re: [雑談]プログラミングで一番嫌な経験は?

コンパイラが考えるのをやめた瞬間ですかね?

VC++でしたが複雑なコードを書きすぎて、
コンパイラ内部で問題が起きましたという趣旨の内容がたったの1行吐き出されるだけで、
具体的なエラーの内容を全く表示しなくなったとき
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]ADLについて
返信数: 13
閲覧数: 4825

Re: [C++]ADLについて

<追記>
よく読むと誤解を招く言い方をしている節があったので、質問の意図を明確にするためNo1の記事を一部修正いたします。
申し訳ありません。

内容:
テンプレート引数という表現を、クラステンプレートにおけるテンプレート実引数に限定します。
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]ADLについて
返信数: 13
閲覧数: 4825

Re: [C++]ADLについて

>>かずまさん ご返信ありがとうございます。 すみません。僕には理解力が足りていないようです。 その例ではどのタイミングでテンプレート引数にADLを適用したのかお教え願えますか? ①"abc" は char[4] だが、const char * に暗黙の変換をします。 了解です。 ②operator+(const char *, std::string) の定義はどこにあるのか探します。 これも了解です。 ③namespace の外側には見つからないので、第2引数に std:: がついていることから namespace std を探しに行きます。 これも了解。ADLはstd空間の探索を行います...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]ADLについて
返信数: 13
閲覧数: 4825

Re: [C++]ADLについて

おっしゃっていることがよく理解できません。A::operator+ が呼ばれる、あるいは コンパイルエラーとなる具体的なコードをお願いします。 コンパイルエラー自体は、最初のコードにおいて、T const&をT&に書き換えることにより発生します。 また以下のようなコードはA::operator+が呼ばれます。 このようなコードはnamespaceAにおけるoperator+の適用範囲があまりにも広いということが問題ですが、十分に考えられます。 #include <iostream> #include <string> namespace A { struct Char { }; templa...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]ADLについて
返信数: 13
閲覧数: 4825

Re: [C++]ADLについて

返信が遅れましてすみません >>かずまさん ご返信ありがとうございます。 メリットは、std::string str; のとき、"abc" + str と書けることです ・・・ これについては、おっしゃる通りです。 ADLの必要性として一般に知られている事例として、理解できます。 次に、string は本当は basic_string<char> というテンプレートクラスであり、 operator+ もテンプレート関数です。 したがって、テンプレート引数にも ADL は必要なんだと思います。 問題はこちらであり、これがまさに質問の内容となります。 そしてかずまさんのおっしゃる内容について、申し...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]ADLについて
返信数: 13
閲覧数: 4825

[C++]ADLについて

いつもお世話になっております。GRAMです 今回、実引数依存の名前探索(以下ADL)について2つお聞きしたいことがあり、質問させていただきました。 ①クラス内部で定義されたfriend関数について 以下のようなコードはADLのおかげでコンパイルできます。 namespace A { struct Hoge { friend void Foo(Hoge) { } }; } int main() { A::Hoge h; Foo( h ); return 0; } この場合Fooはnamespace Aに所属する関数だというところは理解できています。 自分にとって細かい規格を理解することは、まだな...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: A*探索アルゴリズム
返信数: 3
閲覧数: 9584

Re: A*探索アルゴリズム

A*アルゴリズムとはダイクストラ法と呼ばれる探索アルゴリズムの改良なので まずはダイクストラ法を理解することが大切です。 (というかダイクストラさえ分かればA*に変えるのは簡単です) ダイクストラ法に関する説明は上記サイト(特に2番目)にある通りですので、 プログラムにするときに自分が考えることを挙げておきます。 まず、ダイクストラ法ですが僕が思うに次の3つの機構からなります。 どの言語を使うにしろ、この3つの機構が作れればできたも同然です。 ①そこに行きつくまで合計コストが最小となる次の探索ノードを取り出す機構(プライオリティーキュー) ②取り出したノードがゴールかどうか判定し、またそこから...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 名称を教えてください
返信数: 9
閲覧数: 4398

Re: 名称を教えてください

変数の名前でしたら、自分は lhs,rhsとします
たかぎさんのおっしゃるように left-hand-sideとright-hand-sideの略です
自分が考えたものかというとそうではなくて、Effective~で有名な
スコットメイヤーズさんがおんなじように命名していてかっこいいと思ったのでつかってます。
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 回転する四角形同士の当たり判定について
返信数: 4
閲覧数: 4527

Re: 回転する四角形同士の当たり判定について

上記の判定方法ははっきり言うと微妙だと思います。
というより筆者が単にもっと良い方法を知らないだけかと。明らかに冗長でよくない仮定が含まれています。
分離軸判定というものを調べてみればよろしいかと。
長方形ならよほどベクトルの縮退がない限り(アスペクトレシオが10の何十乗とか)確実に判定できます。
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: 爆発の判定
返信数: 3
閲覧数: 1953

Re: 爆発の判定

2Dか3Dかで難易度がまるで異なります。 まずはそこですね。 2Dでそういったことをしたければそんなに難しくないと思いますが、次に考えることは形の複雑さです。 障害物が円、凸多角形、線分といった簡単な図形であれば、判定の例を示せますが、 凹んだ部分を含む多角形を認める場合は、あらかじめそれらを凸多角形に分解してやる必要があると思います。 自分の思いつく限り、判定方法は次のようなものです。 前の回答者さんが示している通り、爆心から障害物をつなぐ2半直線のうち、障害物内のすべての点が2半直線の間に収まるような もっとも間の角度が小さい2つの半直線を求めればいいでしょう。 無題.png 今仮に爆心が...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: c++を使ったプログラミング!できる方いませんか??
返信数: 51
閲覧数: 14204

Re: c++を使ったプログラミング!できる方いませんか??

まぁよくわかりませんけど、プログラミングを使う必要はなさそうですね。 多分問題ないと思いますが、数学あんま好きじゃないんでなんかおかしかったら突っ込んでくださいm(_ _)m A 1 = 1, A n+1 = 2*A n + 1 ・・・で定義される数列A n を定義する。 A n+1 + 1= 2*( A n + 1 ) であり、一般項A n は A n = 2^n - 1 ・・・①で表すことができる。(ただしK^n は Kのn乗を表す) また次のような数列C n を定義する。 C n+1 = (3*C n + 1) / 2 この数列はC 0 を、ある定数αとおいた場合、n回目の操作後における...
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: n角形の図形を三角形の集合にわける方法
返信数: 13
閲覧数: 5588

Re: n角形の図形を三角形の集合にわける方法

このとき、1回交差したことにすべきか2回、3回、あるいはそれ以上交差(平行に交わった場合に有りうる)したことにすべきかは、状況によって判断する必要があり、それをプログラム上で判断する方法は今のところ思いつきません。
そうでしょうか?
n角形に対し、
1定点からn+1本の異なる半直線を引けば必ず妥当な半直線が1本あるはずですが。
(頂点はn個しかないから)

追記:
180°境界を超えない限りのくだりは僕の勘違いですね。
よく考えたら、図形が変形したら、もう一度凸包を考える必要がありそうです。
回転に関しては問題ないですね。
by GRAM
11年前
フォーラム: C言語何でも質問掲示板
トピック: n角形の図形を三角形の集合にわける方法
返信数: 13
閲覧数: 5588

Re: n角形の図形を三角形の集合にわける方法

まぁ横槍なんですけれど、次のような凸多角形を使うアルゴリズムもあるにはあります。 (凸多角形とは内角がすべて180°未満で構成された多角形) ①与えられた図形が凸多角形の時 高速で判定できます。 与えられた座標が各辺のどちら側にいるかを判定します。つまり、右回りに辺を巡っていって、すべて右手に与えられた座標があれば多角形の中にいます。 ベクトルの外積を使えば簡単に求まります。 ②与えられた図形が凸多角形でない場合。 まず与えられたすべての頂点を含むような凸多角形を求めます。これを図形Aとします。 これは凸包のアルゴリズムを調べればいくらでも出てくると思います。 凸多角形に含まれていない頂点は、...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: luabindでstd::shared_ptrを使いたいのですが
返信数: 2
閲覧数: 1862

Re: luabindでstd::shared_ptrを使いたいのですが

8.7 Smart pointers 「スマートポインタ」 get_pointer() overloads are provided for the smart pointers in Boost, and std::auto_ptr<>. Should you need to provide your own overload, note that it is called unqualified and is expected to be found by argument dependent lookup. Thus it should be defined in the same n...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 動く線分と「点」の衝突
返信数: 5
閲覧数: 3366

Re: 動く線分と「点」の衝突

衝突対象が点だから、フレーム毎に衝突判定をするとすり抜けちゃって判定できないんじゃないでしょうか? 問題の難易度は前回と変わっておらず、どうせ大雑把な判定しかできないので ある瞬間に、当たっているかどうかの判定だけならば微小時間tの間に 線分が作る四角形領域、もしくは三角形領域2つ分(見かけ上微小時間内に線分が回転しているように見える場合) の中に、点が存在するか否かを確かめればいいでしょう。 あるフレームと次のフレーム(もしくは前のフレーム)の線分の位置を調べれば、 (ごくまれにすり抜ける場合もあるが)だいたい判定できると思います。 ある多角形領域内に点が存在するかどうかを判定するのは簡単...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 動く円と動く線分の衝突判定
返信数: 6
閲覧数: 4311

Re: 動く円と動く線分の衝突判定

一つお聞きしてもいいでしょうか。図の線分の左側の端を点Q,逆をRとします。ここでQをQ 0 で固定し、RとOの動きからベクタAを引く・・・という方法は使えますか。 使えるならLの掃く領域が三角形になり簡単になるような・・・ですが、これでも三次式は必須になりそうな気がします。どうでしょうか。 無理ならば、とりあえず線分を静止させた方法を考えます。 いっそのことなので、計算手法を提示しておきます。 円の中心の速度ベクトルvrを各線分の端点より減算し、 さらに、円の中心が座標系の中心に来るよう平行移動を行います。 この時点で問題は 「移動する線分と原点との距離がある値rになるときの時刻tを求める」...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 動く円と動く線分の衝突判定
返信数: 6
閲覧数: 4311

Re: 動く円と動く線分の衝突判定

実例を挙げるのに若干苦労しましたが、直線で考えたとしても、
簡単な思考実験により最低でも時間tの4次式になると考えられます。
(画像参照)
(ちょっとした手計算ではtの6次の項が出てきたので、もっと複雑な解があるのかもしれません。)


ということで、両方移動している限りではちょっと難しいでしょう。
ある瞬間を絵にとって、当たっているかを判定するだけなら問題はもっとずっと簡単です。
http://dixq.net/forum/blog.php?u=240&b=2728
この辺で自分が返信したやり方があります。
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: メンバ変数のconst
返信数: 44
閲覧数: 15940

Re: メンバ変数のconst

>>tkmakwins15さん、a5ua さん、ISLeさん ご指摘ありがとうございます。誠おっしゃる通りです。 そしてzxzyさん。謝ります。本当にすみませんm(_ _)m 忘れてください!! これならいけるんじゃね?とおもってVC++で動いたときは、これでいいや。と思ったんですが、 あろうことか、基本的な要件を満たせていないのですね。やれやれ。 あやうくzxzyさんを未定義の闇に引きずり込むところでした。 しかし結局特にこれといった注意を払わなくてよくて、安全で かつzxzyさんの要件を満たすような魔法の方法はないのでしょうかね? (なんか自分が勉強不足なだけで古今東西議論されつくしてそう...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: メンバ変数のconst
返信数: 44
閲覧数: 15940

Re: メンバ変数のconst

vectorにすることの欠点はないのですか。しかし、やはり配列より複雑で長くなりますね。 それと.ではなく->を使うことになるのですね。 ・・・ ところで、GRAMさんは「reserveしてpush_backで加えていければ」 と書かれていましたがreserveは使わなくても大丈夫なのでしょうか? 自分ならこう書くという書き方を提示します。 参考にどうぞ C++で好きなように書けるような環境だとしたら(そこそこ速いPCで動かして、十分なリソースがあるなら)、 これが最善だと僕は信じています。 #include <iostream> #include <vector> using namesp...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: メンバ変数のconst
返信数: 44
閲覧数: 15940

Re: メンバ変数のconst

別にAの配列じゃなくてchar[1000]とかでもいいわけです。とにかく静的にメモリを確保することが重要なわけです。 横槍をスミマセンがそれは微妙です。 アライメントの問題があるので微妙というより基本的にはNGだと思います。 もちろんヒープから生のメモリを確保するのなら、そもそもデフォルトコンストラクタの問題も発生しないのですが。 ついでに空のコンストラクタを作ってしまうと、本来引数なしのコンストラクタを使いたくないのに コンストラクタの引数なしでインスタンスが作成できてしまうようになるという問題も起きると思います。 結局、この場合プレースメントnew使えるのは ①そのクラスでユーザー定義の...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: dynamic_castについて
返信数: 3
閲覧数: 3273

Re: dynamic_castについて

そもそもどういった場合にダウンキャストが必要になるのでしょうか? 「オブジェクト指向の思想的理由」かどうかはわかりませんが、 通常はアップキャストしてしまったら、基底クラスのポインタもしくは参照からは どの派生クラスからアップキャストされたものかわからないような使い方をするものなのでは? (アップキャストしたら抽象化されてしまうから、ふつうそのキャストは非可逆になるはず。) ・・・しかしどうなんでしょう?オブジェクト指向を無視して単に使い方だけ考えれば、 確実にダウンキャストが安全でチェック機構が要らないような実装もありそうな気がします。 たとえば ①抽基底クラスのテンプレート引数に派生クラス...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: (物理)3D振り子を実装したい
返信数: 1
閲覧数: 2621

Re: (物理)3D振り子を実装したい

説明するのが難しいですが、物理的に考えればいいと思います たるんだりする方が自分にとっては都合がいいので(というか昔作ったのがそうなっているので)、そう考えますね。 まず、速度ベクトルが紐が作る球の接線方向に近い場合、 これは次の微小時間も球の接線方向に運動するように運動を修正します。 修正方法としては、速度ベクトルを球の接線方向と、球の中心方向に分解し、 中心方向の成分を0に、接線方向の速度を現在の速度と同じになるように調整します。 次に速度ベクトルが、球の接線方向から大きく外れている場合、 この場合は、中心方向の速度ベクトルに反発係数をかけ、さらに反転させてやればいい感じになると思います。...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 【雑談】気分転換の方法は?
返信数: 28
閲覧数: 9751

Re: 【雑談】気分転換の方法は?

自分は基本的にいくつかタスクをためておいて(悪い意味じゃなく、かなり先のものも含めて) 今やってることがめんどくさくなったら、つぎの作業へ⇒まためんどくさくなったら次の作業へ ・・・ってやってます。それぞれの作業がほかの作業の気分転換って感じですね。 僕に関して言えば、結構な効率で物事が進みます。だいたい3~4個ぐらいを並列でやるのが理想かなぁ。 同系統のものだったり、おんなじ場所にいたりするとどうしても飽きてくるので、 できるだけそうならないように気を付けたりします。まぁでもこれって、今だからそうできるんであって就職とかしたらほかの方法を考えないといけないのかも。 後は作業しながら話してたり...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 探索に一番適してるデータ構造
返信数: 1
閲覧数: 1400

Re: 探索に一番適してるデータ構造

普通に答えるならstd::setとかstd::mapになると思われます

探索時間はlogNに比例するので
10個の要素を調べるのに1の時間がかかるなら
100個で2
1000個で3
10000個で4
といった具合です。(±倍くらい違う時はあります)

findというメンバ関数で簡単に調べられます。
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: クラス配列のconstメンバ変数
返信数: 4
閲覧数: 2792

Re: クラス配列のconstメンバ変数

こういうことができなくはないですが、お勧めはできません・・・ #include <iostream> using namespace std; class C_Enemy{ private: const int Index; public: C_Enemy( int num ) : Index( num ){} void ShowNum(){ cout << Index << endl; } }; int main(){ C_Enemy* p = (C_Enemy*)operator new( sizeof( C_Enemy ) * 1024 ); for( int i = 0; i < 10...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 関数の返値の有効範囲について
返信数: 9
閲覧数: 3952

Re: 関数の返値の有効範囲について

仮にstringで拾ったとしても、文字列の内容がコピーされることはないのではないかと思います。
string内部には普通参照カウントがありますので、(そして一時オブジェクトが破棄される前に変更されることもないので)
コピーは浅く行われると予想できます。(予想ですが・・・)
ということでオーバーヘッドは大したことないのではないかと。

追記:
確かにこの場合はNRVOが適応されますね。失礼しました。
自分の話は仮に関数がもっと複雑で、複数のreturn文で異なる名前のインスタンスを返したとしてもと受け取ってください・・・。
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 簡単な問題です。
返信数: 38
閲覧数: 15251

Re: 簡単な問題です。

流れに乗ってみる #include <iostream> using namespace std; int main(){ int n, r; cin >> n >> r; cout << "#include <iostream> \n" << "using namespace std; \n " << "template< int N > \n " << "struct Int{ \n " << " enum { value = N }; \n " << "}; \n " << "template< typename T > \n " << "struct Factorial{ \n " <...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 簡単な問題です。
返信数: 38
閲覧数: 15251

Re: 簡単な問題です。

えぇ。簡単ですね。
とても簡単です。あなたにも答えは分かっているのでしょう?
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 3DゲームのAI
返信数: 20
閲覧数: 8145

Re: 3DゲームのAI

コンパイルして実行できるようにまとめました。 よろしければどうぞ #include <DxLib.h> #include <math.h> #define OFFS_X 320 #define OFFS_Y 240 // 1/100の精度でランダムな数を得る double GetRandomD( double max ){ return (double)GetRand( max * 100 ) /100.0; } //xとyの値を持つ構造体 struct Vector{ double x,y; }; //円 struct Circle{ Vector Position; double radi...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 3DゲームのAI
返信数: 20
閲覧数: 8145

Re: 3DゲームのAI

①半径10m内のどこかに目標地点を定める。
②目標地点まで敵を移動させる
③目標地点に到達したら①へ戻る

という動作を繰り返すとかはどうですか?
①の目標地点の定め方を調整することである程度調整もできると思います
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: オーバーヘッドの最適化全般について学びたい
返信数: 12
閲覧数: 5278

Re: オーバーヘッドの最適化全般について学びたい

「EfficientC++パフォーマンスプログラミングテクニック」
という本に(あくまでもC++についてでしたら)ある程度の一般論は載っているんじゃないかと・・・
その本も「こういう部分に着目するといいよ」的な感じで、結局「測れ」ということを言ってますが・・・
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: コンポジションについて
返信数: 3
閲覧数: 2020

Re: コンポジションについて

CParamに限らず一般のスタンスでいえば場合によって使い分けたらいいと思います(ほかの人の意見も仰いでください) コードレベルでいうと後者のほうはもう少し安全なコードに書き換えるべきでしょう 前者のほうはメリットとして ①速い(コンストラクタでの動的確保がないために) ②単純 デメリットとして ①代入時の例外に対する保障が弱くなる (所有するクラスが代入時に例外を投げないことを保証しない限り代入に失敗した場合失敗前の状態に戻れる保証がない) ②所有するクラスの定義が必要(つまりCParamの内容を書き換えるたびにそれを使う全ファイルの再コンパイルが必要) 後者のほうはメリットとして ①代入時...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体のvectorのsortについて
返信数: 5
閲覧数: 3765

Re: 構造体のvectorのsortについて

vectorを使う以上C++の知識が多少なりいります。 関数オブジェクトというものを使用すれば解決しますが、(C++11ではラムダ式でうまく書けますがここでは割愛します) C言語にこだわるのでしたらもうこういうもんだと思っていただくのが一番早いです #include <iostream> #include <vector> #include <cmath> #include <algorithm> using namespace std; struct ufo{ ufo( int x, int y, int r, int v): x_(x),y_(y),r_(r),v_(v){} int x_...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: C++ 動的配列の生成方法
返信数: 5
閲覧数: 3056

Re: C++ 動的配列の生成方法

また、もし②の方法を使うべきではないとすれば、コンストラクタで動的確保なんてことはできなくなりますよね? 方法はほかにもあります。配置newを使う方法です 利点: hogeのインスタンスが連続してメモリ上に存在する コンストラクタ呼び出しが1度きり もちろんoperator = の呼び出しも存在しない 欠点: めんどくさい。注意を払わなくては簡単にバグを生み出す。 #include <iostream> #include <new> using namespace std; class hoge{ int a; public: hoge(){} hoge(int v_a){ a = v_a;...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 超初心者でもc++のお薦めの本
返信数: 7
閲覧数: 3384

Re: 超初心者でもc++のお薦めの本

softya(ソフト屋) さんが書きました:組み込み分野でマイコンを使うなら、まずC言語をちゃんと勉強したほうが良いでしょう。
あぁこれは本当ですね。自分もそのために今Cを勉強しようというところです
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 超初心者でもc++のお薦めの本
返信数: 7
閲覧数: 3384

Re: 超初心者でもc++のお薦めの本

GRAMさんがC言語を知らなくて困ることは何でしょうか? 結構C言語で書かれたサンプルなどがサイトになどに転がっていたり、オープンソースなどはC言語だったりしますけど。 龍神録などもC言語ですね。 そうですね。なかなか答えにくい質問ではありますが。 まずサンプルについては問題ないです。 たとえばCに限らずC#だろうがJavaだろうがActionScriptだろうが文法が近い言語は その言語を知らなくても「だいたいの意味を理解することができます」 これはおよそ伝わるかと思います。 サンプルコードなるものはコメントや関数名、変数名などで少なくとも読み手に理解されるように書かれているはずですのでね...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: 超初心者でもc++のお薦めの本
返信数: 7
閲覧数: 3384

Re: 超初心者でもc++のお薦めの本

まぁboxさんとsoftyaさんはああおっしゃっていますが、自分はC++から初め、今でもまともにCでは書けない人間です。 どれくらいC言語を知らないかというと、printfの詳しい使い方や、ファイル操作の方法を知らないくらいC言語を知りません。 というかそもそもC++のどの機能がCで使えないのかを知りません。Cのどの機能がC++で使えないのかも知りません。 しかしC++では難なく書けます。これは極論であって、自分が勉強をサボった結果なわけですが、言いたいことはC言語を知らなくてもC++は書けるということです。 ぶっちゃけCとC++は全く別の言語なので、むしろC++を学ぶにあたっCの知識はかえっ...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: C言語プログラムの不明点
返信数: 17
閲覧数: 4953

Re: C言語プログラムの不明点

「お互いが及ぼす静電気力に対して電荷自身の質量が膨大なので、単位時間あたりの影響は無視出来る。」って解釈はどうでしょう? 十分に狭い空間で、かつ質点が接近しないのであれば、 質点の質量は関係ありません。あくまで質点のもつ-1qの電荷の大きさが空間に固定されている電荷に対して無視できるのか否かが問題なのです。 上のプログラムには単位がないので私には何とも言えませんが、たとえば固定された電荷が10000qを持っていたとしましょう。 この時質点同士の距離が、固定された電荷と同じくらい離れているという仮定の下では、ほかの質点からの力は無視できるほど小さくなります。 (もちろん質点同士が接近すると力の...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: C言語プログラムの不明点
返信数: 17
閲覧数: 4953

Re: C言語プログラムの不明点

やりたいことは最後のプログラムで大体わかりますが、 質点というのは少なくとも「クーロン定数kに対して、kの質量をもつ」として計算するようですね。 「その中を質点(持っている力ー1)」 この表現がいまいちわかりませんが、上のプログラムを見るかぎりでは 質点の性質として「単位電荷をもつ点として静電気力を受けるが、自分は静電気力を与えない」という性質があるように思えます。 もしくは「質点の持つ電荷は固定点の電荷よりもはるかに小さく無視できる」という条件が与えられているかどちらかでしょう。 もしも、質点が無視できないほどに電荷をもっていて、ほかの質点にも静電気力を及ぼすのならば、上のプログラムは誤りだ...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: メンバ関数ポインタへの代入
返信数: 6
閲覧数: 3464

Re: メンバ関数ポインタへの代入

非staticなメンバ関数と、非メンバ関数及びstaticなメンバ関数は関数ポインタの使い方が少し違います。

これは非staticなメンバ関数ではその関数内でthisポインタを使えるためです。
具体的な解決策はa5uaさんが示した通りですし、もしくはHormingLaserActの前にstaticを付けて
static void HormingLaserAct();とすればコンパイルは通ります。
(この場合コードを見ただけではどういう解決策が適切かよくわかりませんでしたので一応)
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: C++ STL vectorのstatic_castについて
返信数: 5
閲覧数: 8064

Re: C++ STL vectorのstatic_castについて

コンストラクタにはイテレーターをとるものがあります。 実際に使われる場合が説明からはよくわかりませんが、 この場合はキャストではなくて初期化なのでこれでいいでしょう。 本当にキャストが必要ですか? #include <iostream> #include <vector> #include <algorithm> void Output( double d){ std::cout << d << '\n'; } int main(){ std::vector<float> vec_float; vec_float.push_back(1.0); vec_float.push_back(2.0)...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: decltypeを使ってのプログラミングについて
返信数: 3
閲覧数: 2606

Re: decltypeを使ってのプログラミングについて

>>a5uaさん ありがとうざいます!! 関数テンプレートのオーバーロードは最良マッチのもののみインスタンス化されるかと思ったのですがそうでもないのですね。 一つ賢くなりました。 Vectorのテンプレート引数となるクラスにはデフォルトコンストラクタを要求しないので、二つ目の解決法はちょっと嫌だなぁと思っていたのですが、 そうですか・・・ 3っつ目の方法があるのですね・・・ いやはや、部分特殊化で何とかしてしまうというのは思いつきませんでした。 新しい構文についてはC++0xならば書くであろうということは知っていたのですが、 VSがまだ対応していないようでしてこのようなビミョーなことをしていた...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: decltypeを使ってのプログラミングについて
返信数: 3
閲覧数: 2606

decltypeを使ってのプログラミングについて

いつもお世話になっております。GRAMです。 VisualStudioではC++0xの拡張機能がいくつかあり、それら及び テンプレートを使って、ベクトルのクラスをカスタマイズしているのですが 半日以上デバッグしても以下のような、ほんの数行のプログラムのコンパイルを通すことができません。 やりたいこと: ベクトルの内積、および定数倍の実装を行う。 しかし戻り値の型は 二つの引数の型によって決まるようにしたい。 動機は以下のようなものです たとえば、変位のベクトルと力のベクトルの内積をとると、仕事量が出てくるといった具合です。 ベクトルに頼らずとも、 Newton f; Metre dr; とした...
by GRAM
12年前
フォーラム: C言語何でも質問掲示板
トピック: C++クラスメンバ関数の関数ポインタの使い方
返信数: 10
閲覧数: 7259

Re: C++クラスメンバ関数の関数ポインタの使い方

メンバ関数のポインタは、それを呼び出すインスタンスも指定してやらなければなりません。 std::bind1stなどを使えばいいのですが、引数が二つ以上あるとなるとstd::bindを使うのがよい解法となるかと。 (実際にはtr1::bindやboostなどでもよいですがVSなどは0xの機能先取りとして実装されています) おそらくそこそこ美しい解法だと思います。 #include <functional> #include <iostream> using namespace std; //ソルバーよくわからなかったので実装は適当です^^; template <typename T> class...

詳細検索ページへ移動する