コード例 #1
0
ファイル: NPC.cpp プロジェクト: ptitSeb/caveexpress
b2Body* NPC::createBody (const b2Vec2 &pos, bool setOnGround, bool fixedRotation)
{
	if (!_bodies.empty()) {
		error(LOG_SERVER, "there are already bodies defined for this npc");
		return nullptr;
	}

	b2BodyDef bodyDef;
	bodyDef.type = getBodyType();
	bodyDef.position.Set(pos.x, pos.y);
	b2Body* body = _map.getWorld()->CreateBody(&bodyDef);
	b2PolygonShape dynamicBox;
	const b2Vec2& size = getSize();
	dynamicBox.SetAsBox(size.x / 2.0f, size.y / 2.0f);
	b2FixtureDef fixtureDef;
	fixtureDef.shape = &dynamicBox;
	fixtureDef.density = getDensity();
	fixtureDef.friction = 0.0f;
	fixtureDef.restitution = 0.0f;
	body->SetUserData(static_cast<void*>(this));
	body->CreateFixture(&fixtureDef);
	body->SetFixedRotation(fixedRotation);
	addBody(body);

	if (setOnGround) {
		static const b2Vec2 unitdir(0, 1);
		const b2Vec2 end = pos + 1 * unitdir;
		SetOnGroundRayCastCallback c(this);
		_map.getWorld()->RayCast(&c, pos, end);
		setPos(pos);
	}

	_initialPosition = pos;
	return body;
}
コード例 #2
0
ファイル: GroundFog.cpp プロジェクト: ghoulsblade/vegaogre
	void GroundFog::updateSkyFogging() {
		Ogre::GpuProgramParametersSharedPtr params = 
			mDomeMaterial->getBestTechnique()->getPass(0)->getFragmentProgramParameters();
		params->setNamedConstant("fogDensity", getDensity());
		params->setNamedConstant("fogColour", getColour());
		params->setNamedConstant("fogVerticalDecay", getVerticalDecay());
		params->setNamedConstant("fogGroundLevel", getGroundLevel());
	}
コード例 #3
0
ファイル: Emerald.cpp プロジェクト: samantond/OOP
void Emerald::print()
{
	std::cout << "Имя: " << getName() << std::endl;
	std::cout << "Плотность: " << getDensity() << std::endl;
	std::cout << "Вес: " << getWeight() << std::endl;
	std::cout << "Стоимость: " << getCost() << std::endl;
	std::cout << "Прозрачность: " << getOpacity() << std::endl;
}
コード例 #4
0
void NetPattern::printPattern(ofstream& outfile) const{
	for(vector<int>::const_iterator cit=bipartite_A.begin(); cit<bipartite_A.end(); cit++)
		outfile<<*cit<<" ";
	outfile<<"; ";
	for(vector<int>::const_iterator cit=bipartite_B.begin(); cit<bipartite_B.end(); cit++)
		outfile<<*cit<<" ";
	outfile<<"; density: "<<getDensity();
	
}
コード例 #5
0
void FogChunk::activate(DrawEnv *pEnv, UInt32 /* index */)
{
#if !defined(OSG_OGL_COREONLY) || defined(OSG_CHECK_COREONLY)
    glFogi (GL_FOG_MODE,    getMode   ()                );
    glFogf (GL_FOG_DENSITY, getDensity()                );
    glFogf (GL_FOG_START,   getStart  ()                );
    glFogf (GL_FOG_END,     getEnd    ()                );
    glFogfv(GL_FOG_COLOR,   getColor  ().getValuesRGBA());

    glEnable(GL_FOG);
#endif
}
コード例 #6
0
 void read_initial_conditions(const char* filename, int NUM, double** y_host, double** variable_host) {
    (*y_host) = (double*)malloc(NUM * NN * sizeof(double));
    (*variable_host) = (double*)malloc(NUM * sizeof(double));
    FILE *fp = fopen (filename, "rb");
    if (fp == NULL)
    {
        fprintf(stderr, "Could not open file: %s\\\n", filename);
        exit(-1);
    }
    double buffer[NN + 2];

    // load temperature and mass fractions for all threads (cells)
    for (int i = 0; i < NUM; ++i)
    {
        // read line from data file
        int count = fread(buffer, sizeof(double), NN + 2, fp);
        if (count != (NN + 2))
        {
            fprintf(stderr, "File (%s) is incorrectly formatted, %d doubles were expected but only %d were read.\\n", filename, NN + 1, count);
            exit(-1);
        }
        //apply mask if necessary
        apply_mask(&buffer[3]);
        //put into y_host
        (*y_host)[i * NN] = buffer[1];
#ifdef CONP
        (*variable_host)[i] = buffer[2];
#elif CONV
        double pres = buffer[2];
#endif
        for (int j = 0; j < NSP; j++)
        {
            (*y_host)[i * NN + j + 1] = buffer[j + 3];
        }

        // if constant volume, calculate density
#ifdef CONV
        double Yi[NSP];
        double Xi[NSP];

        for (int j = 1; j < NN; ++j)
        {
            Yi[j - 1] = (*y_host)[i * NN + j];
        }

        mass2mole (Yi, Xi);
        (*variable_host)[i] = getDensity ((*y_host)[i], pres, Xi);
#endif
    }
    fclose (fp);
}
コード例 #7
0
ファイル: CoriFlow.cpp プロジェクト: DESY-FH-ELab/cmstkmodlab
float CoriFlow::getMeasure( void ) const {

  #ifdef __CORIFLOW_DEBUG
  std::cout << "[CoriFlow::test] -- DEBUG: Called." << std::endl;
  #endif

  char buffer[1000];

  usleep( uDelay_ );
  comHandler_->SendCommand( ":06030401210120" );

  usleep( uDelay_ );
  comHandler_->ReceiveString( buffer );
  StripBuffer( buffer );

  return ToInt(buffer)*getCapacity()/32000/60/(getDensity()*0.001);
}
コード例 #8
0
std::vector<real_t> ExprSystemInitFunction::operator()( const Cell & globalCell )
{
   // update variables
   setGlobalCell( globalCell );

   // get results
   const auto velocity = getVelocity();
   const auto density  = getDensity();

   // store in std::vector and return
   std::vector<real_t> results;
   results.push_back( density     );
   results.push_back( velocity[0] );
   results.push_back( velocity[1] );
   results.push_back( velocity[2] );

   return results;
}
コード例 #9
0
bool FogChunk::operator == (const StateChunk &other) const
{
    FogChunk const *tother = dynamic_cast<FogChunk const *>(&other);

    if(tother == NULL)
        return false;

    if(getMode() != tother->getMode())
        return false;

    if(getDensity() != tother->getDensity())
        return false;

    if(getStart() != tother->getStart())
        return false;

    if(getEnd() != tother->getEnd())
        return false;

    if(getColor() != tother->getColor())
        return false;

    return true;
}
コード例 #10
0
 openstudio::Quantity MasslessOpaqueMaterial_Impl::density_IP() const {
   return getDensity(true);
 }
コード例 #11
0
  openstudio::Quantity MasslessOpaqueMaterial_Impl::density_SI() const {
   return getDensity(false);
 }
コード例 #12
0
ファイル: rpihuang2004.C プロジェクト: amjjam/rpihuang2004
/*=============================================================================
  double getDensity(double L, double lambda) - get the density, in
  cm^-3 as a function of L-shell and magnetic latitude of a point on
  the field line.
  
  double L - L-shell in Earth radii
  double lambda - magnetic latitude in degrees
  ============================================================================*/
double RPIHUANG2004::getDensity(double L, double lambda){
  double lambdainv=acos(1.0/sqrt(L))/M_PI*180;
  return getDensity(L,lambda,lambdainv);
}
コード例 #13
0
// calculating daily 'atm' data for ONE year at yearly time-step - called in 'RunCohort.cpp'
void Atmosphere::prepareDayDrivingData(const int & yrcount, const int & usedatmyr, const bool & changeclm, const bool &changeco2){

	float tad1[31], vapd1[31], precd1[31];
    float pvalt, cvalt, nvalt;
    float pvalv, cvalv, nvalv;
    float pvalp, cvalp, nvalp;
    int dinmprev, dinmcurr, dinmnext;

    //
    if (!changeclm) {
    	for(int im =0; im<12;im++){
    		cvalt = eq_tair[im];
    		cvalv = eq_vapo[im];
    		cvalp = eq_prec[im];
    		dinmcurr = DINM[im];
    		if(im==0){
    		  	  pvalt = eq_tair[11];
    		  	  pvalv = eq_vapo[11];
    		  	  pvalp = eq_prec[11];
    		  	  
    		  	  nvalt = eq_tair[im+1];
    		  	  nvalv = eq_vapo[im+1];
    		  	  nvalp = eq_prec[im+1];
    		  	  
    		  	  dinmprev = DINM[11];
    		  	  dinmnext = DINM[im+1];

    		  	  
    		}else if (im==11){
    		  	  pvalt = eq_tair[im-1];
    		  	  pvalv = eq_vapo[im-1];
    		  	  pvalp = eq_prec[im-1];
    		  	  
    		  	  nvalt = eq_tair[0];
    		  	  nvalv = eq_vapo[0];
    		  	  nvalp = eq_prec[0];
    		  	  
    		  	  dinmnext = DINM[0];
    		  	  dinmprev = DINM[im-1];
    		  	  
    		}else{
    		  	  pvalt = eq_tair[im-1];
    		  	  pvalv = eq_vapo[im-1];
    		  	  pvalp = eq_prec[im-1];
    		  	  
    		  	  nvalt = eq_tair[im+1];
    		  	  nvalv = eq_vapo[im+1];
    		  	  nvalp = eq_prec[im+1];
    		  	  
    		  	  dinmprev = DINM[im-1];
    		  	  dinmnext = DINM[im+1];
    		  	  
    		}
              
            autil.updateDailyDriver(tad1, pvalt ,cvalt, nvalt,
                       dinmprev, dinmcurr, dinmnext);
  			autil.updateDailyDriver(vapd1,  pvalv ,cvalv, nvalv,
                    dinmprev, dinmcurr, dinmnext);
  			autil.updateDailyPrec(precd1, dinmcurr, cvalt, cvalp);
  		   	
  		   	for (int id =0; id<31; id++){
  		      	ta_d[im][id]  = tad1[id];
  		      	vap_d[im][id] = vapd1[id];
  		      	precsplt(ta_d[im][id], precd1[id], snow_d[im][id], rain_d[im][id]);
  		      
  		      	rhoa_d[im][id]= getDensity(tad1[id]);
  		      	svp_d[im][id] = getSatVP(tad1[id]);
  		       	vpd_d[im][id] = getVPD(svp_d[im][id], vap_d[im][id]);
  		       
  		      	dersvp_d[im][id]= getDerSVP(tad1[id], svp_d[im][id]);
  		      	abshd_d[im][id] = getAbsHumDeficit(svp_d[im][id], vap_d[im][id], tad1[id]);

  				//not yet interpolated variable
	      		par_d[im][id]  = eq_par[im];
  				nirr_d[im][id] = eq_nirr[im];

  		   	}
  		   
    	}

    } else { // for spinup/transient/scenario

			int iy= yrcount;

    	    iy = yrcount%usedatmyr;    //this will reuse the first 'usedatmyr' period of whole atm data set

      		for(int im =0; im<12;im++){
    		 	cvalt = tair[iy][im];
    		 	cvalv = vapo[iy][im];
    		 	cvalp = prec[iy][im];
    		 	dinmcurr = DINM[im];
    		  	if(im==0){
    		  	  	if(iy==0){
    		  	  		pvalt = tair[0][0];
    		  	  		pvalv = vapo[0][0];
    		  	  		pvalp = prec[0][0];
    		  	  	}else{
    		  	  		pvalt = tair[iy-1][11];
    		  	  		pvalv = vapo[iy-1][11];
    		  	  		pvalp = prec[iy-1][11];
    		  	  	}
    		  	  	nvalt = tair[iy][im+1];
    		  	  	nvalv = vapo[iy][im+1];
    		  	  	nvalp = prec[iy][im+1];
    		  	  	dinmnext = DINM[im+1];
    		  	  	dinmprev = DINM[11];
    		  	  
    		  	  
    		  	}else if (im==11){
    		  	  	pvalt = tair[iy][im-1];
    		  	  	pvalv = vapo[iy][im-1];
    		  	  	pvalp = prec[iy][im-1];
    		  	 	if(iy==usedatmyr-1){
    		  	  		nvalt = tair[iy][11];
    		  	  		nvalv = vapo[iy][11];
    		  	  		nvalp = prec[iy][11];
    		  	  	}else{
    		  	  		nvalt = tair[iy+1][0];
    		  	  		nvalv = vapo[iy+1][0];
    		  	  		nvalp = prec[iy+1][0];
    		  	  	}
    		  	  	dinmnext = DINM[0];
    		  	  	dinmprev = DINM[im-1];
    		  	  
    		  	}else{
    		  	  	pvalt = tair[iy][im-1];
    		  	  	pvalv = vapo[iy][im-1];
    		  	  	pvalp = prec[iy][im-1];
    		  	  
    		  	  	nvalt = tair[iy][im+1];
    		  	  	nvalv = vapo[iy][im+1];
    		  	  	nvalp = prec[iy][im+1];
    		  	  
    		  	  	dinmnext = DINM[im+1];
    		  	  	dinmprev = DINM[im-1];
    		  	  
    		  	}
                autil.updateDailyDriver(tad1, pvalt ,cvalt, nvalt,
                       dinmprev, dinmcurr, dinmnext);
  				autil.updateDailyDriver(vapd1,  pvalv ,cvalv, nvalv,
                     dinmprev, dinmcurr, dinmnext);
  				autil.updateDailyPrec(precd1, dinmcurr, cvalt, cvalp);
  		   		
  		   		for (int id =0; id<dinmcurr; id++){
  		      		ta_d[im][id] = tad1[id];
  		      		vap_d[im][id] = vapd1[id];
  		      		precsplt(ta_d[im][id], precd1[id],snow_d[im][id], rain_d[im][id]);
  		      
  		      		rhoa_d[im][id] = getDensity(tad1[id]);
  		      		svp_d[im][id] = getSatVP(tad1[id]);
  		      		vpd_d[im][id] = getVPD(svp_d[im][id], vap_d[im][id]);
  		      		dersvp_d[im][id] = getDerSVP(tad1[id], svp_d[im][id]);
  		      		abshd_d[im][id] = getAbsHumDeficit(svp_d[im][id], vap_d[im][id] , tad1[id]);

  	  				//not yet interpolated variable
  		      		par_d[im][id]  = par[iy][im];
  	  				nirr_d[im][id] = nirr[iy][im];

  		   		} //id
    		}//im
    }

	if (changeco2) {
		if (yrcount<MAX_CO2_DRV_YR) {
			co2  = cd->rd->co2[yrcount];
		} else {
			co2  = cd->rd->co2[MAX_CO2_DRV_YR-1];	//this reuse the last CO2 data
		}
	} else {
	   	co2  = cd->rd->initco2;
	}

};