Exemple #1
0
//Spell4「高速ばらまき弾」
void shot_E3(){
	int t=spcount;

	if(t>=120){
		E3();

		if(t%20==0)
			se_flag[0]=1;
	}

	for(int i=0;i < BULLET_MAX;i++){
		if(bullet[i].flag==1){
			if(bullet[i].cnt<20){//20フレーム間加速
				bullet[i].spd*=1.01;
			}
		}
	}
}
Exemple #2
0
	void var_SB_izo::force(const double Ti, const vector<double> &X, vector<double> & F)
	{
		SB sv = SB(X);

		double r = sv.q.getAbs();
		double r2 = r*r;
		triple v3d = sv.p / r;

		//acceleration and acceleration partials
		ForceIzo f_(sv.t, sv.q, v3d);
		triple f = f_.force_pert();
		Matrix ddFdy = f_.get_ddFdsv();

		Matrix F3d(f);
		Matrix  Q(sv.q), P(sv.p), A(sv.a);

		//Vector 2 Matrix
		Matrix dYdY0(11, 11), dqdY0(3, 11), dpdY0(3, 11), dadY0(3, 11), dhdY0(1, 11);

		dYdY0.setFromVec(11, X);
		dqdY0.setFromVec(11, X);
		dpdY0.setFromVec(44, X);
		dadY0.setFromVec(77, X);
		dhdY0.setFromVec(110, X);

		Matrix E3(3, 3);
		E3.Identy();

		Matrix dydY = sv.dydY();
		Matrix dFdY0 = ddFdy*dydY*dYdY0;

		//Equations 0-10
#pragma region Equations 0-10

		triple dpds = (2.0*sv.h)*sv.q - sv.a + r2*f;
		double dhds = sv.p*f;
		double qtf = sv.q*f;
		double qtp = sv.q*sv.p;
		triple dads = (2.0*dhds)*sv.q - (qtf)*sv.p - qtp*f;

		for (int i = 0; i < 3; i++)
		{
			F[i] = sv.p[i];
			F[i + 3] = dpds[i];
			F[i + 6] = dads[i];
		}
		F[9] = dhds;
		F[10] = r;
#pragma endregion

		Matrix fqt = triple::xxt(f, sv.q);
		Matrix q_pt = triple::xxt(sv.q, sv.p);

		Matrix D = sv.h*E3 + fqt;
		D *= 2.0;
		Matrix D1 = (2.0*dhds)*E3 - triple::xxt(sv.p, f) - triple::xxt(f, sv.p);
		Matrix D2 = 2.0*triple::xxt(sv.q, f) - qtf*E3 - fqt;
		Matrix D3 = 2.0*q_pt - q_pt.Transpose() - qtp*E3;

		//Equations 11-43
		//Matrix ddqdY0 = dpdY0;

		//Equations 44-76
		Matrix ddpdY0 = D*dqdY0 + 2.0*Q*dhdY0 - dadY0 + r2*dFdY0;

		//Equations 77-109
		Matrix ddadY0 = D1*dqdY0 + D2*dpdY0 + D3*dFdY0;

		//Equations 110-120
		Matrix ddhdY0 = F3d.Transpose()*dpdY0 + P.Transpose()*dFdY0;

		//Equations 120-131
		Matrix ddtdY0 = (Q.Transpose()*dqdY0) / r;

		dpdY0.copyToVec(11, F);
		ddpdY0.copyToVec(44, F);
		ddadY0.copyToVec(77, F);
		ddhdY0.copyToVec(110, F);
		ddtdY0.copyToVec(120, F);

		Global::N_rp++;
	}
Exemple #3
0
  ~E2() noexcept(false) = default; // expected-error {{exception specification of explicitly defaulted destructor does not match the calculated one}}
};

// If a function is explicitly defaulted on its first declaration
//   -- it is implicitly considered to have the same exception-specification as
//      if it had been implicitly declared
struct E3 {
  E3() = default;
  E3(const E3&) = default;
  E3(E3&&) = default;
  E3 &operator=(const E3&) = default;
  E3 &operator=(E3&&) = default;
  ~E3() = default;
};
E3 e3;
static_assert(noexcept(E3(), E3(E3()), E3(e3), e3 = E3(), e3 = e3), "");
struct E4 {
  E4() noexcept(false);
  E4(const E4&) noexcept(false);
  E4(E4&&) noexcept(false);
  E4 &operator=(const E4&) noexcept(false);
  E4 &operator=(E4&&) noexcept(false);
  ~E4() noexcept(false);
};
struct E5 {
  E5() = default;
  E5(const E5&) = default;
  E5(E5&&) = default;
  E5 &operator=(const E5&) = default;
  E5 &operator=(E5&&) = default;
  ~E5() = default;