ページ 11

制約付き誘導弾

Posted: 2016年4月13日(水) 19:36
by 夢幻ノ月夜
最大旋回速度付きの誘導弾をつくろうとしているのですが、
plが自機の情報(ポインタ)
Areaが最大旋回速度
sp+=Acは加速させてるだけです

最大旋回速度が反映されていないようなのですが
if文の中身が間違っていたりするのでしょうか

コード:

void Bullet_Homing::Move(){
	BulletEx::Move();
	BulletEx::Hit();
	Player *pl=(Player*)Object_Manager::GetTask(O_PLAYER,0);
	if(pl==NULL)return;
	float px=pl->GetX() - this->x;
	float py=pl->GetY() - this->y;

	float pa=atan2(py,px);
	float sa=pa-this->a;

	if(sa <= this->Area && sa >= -this->Area){
		this->a+= sa;
	}else{
		this->a+=(sa<0)?this->Area: -this->Area;
	}

	this->sp+=this->Ac;
}

Re: 制約付き誘導弾

Posted: 2016年4月13日(水) 23:01
by みけCAT
this->Areaが非負の有効な実数の場合は13行目と15行目でsaの符号とthis->aに足す値の符号の関係が逆になっており、
this->Areaが負の有効な実数であり、saが有効な実数の場合は12行目の条件式が真になることは無さそうです。
これは意図した仕様ですか?
(ここでの「有効な実数」 = 「NaN、Infなどの特殊な値でない浮動小数点数」)

Re: 制約付き誘導弾

Posted: 2016年4月14日(木) 16:33
by 夢幻ノ月夜
みけCAT さんが書きました:this->Areaが非負の有効な実数の場合は13行目と15行目でsaの符号とthis->aに足す値の符号の関係が逆になっており、
this->Areaが負の有効な実数であり、saが有効な実数の場合は12行目の条件式が真になることは無さそうです。
これは意図した仕様ですか?
(ここでの「有効な実数」 = 「NaN、Infなどの特殊な値でない浮動小数点数」)
saの符号とthis->aに足す値の符号が逆になっているのはミスです
this->Areaはコンストラクタの中で絶対値にしています