Ejemplo n.º 1
0
void PlaneOfCells::initCells()
{
	cell.resize(iNumOfCellsX*iNumOfCellsZ);
	// Set cell's material to draw.
	// Grid material.
	vector_3d ambient = vector_3d(0.0, 10.0, 0.0);
	vector_3d diffuse = vector_3d(0.0, 10.0, 0.0);
	vector_3d specular = vector_3d(0.0, 10.0, 0.0); 
	float shine = 50;
	float alpha = 0.8;

	std::tr1::shared_ptr<Material> pMaterialGrid = 
		std::tr1::shared_ptr<Material>(new Material(ambient, diffuse, specular, shine, alpha) );

	// Filling material.
	ambient = vector_3d(0.0, 5.0, 0.0);
	diffuse = vector_3d(0.0, 5.0, 0.0);
	specular = vector_3d(0.0, 5.0, 0.0); 
	shine = 50;
	alpha = 0.8;
	std::tr1::shared_ptr<Material> pMaterialFill = 
		std::tr1::shared_ptr<Material>(new Material(ambient, diffuse, specular, shine, alpha) );

	// Reset all the cube indexes to -1.
	for(int ix = 0; ix < iNumOfCellsX; ix++)
		for(int iz = 0; iz < iNumOfCellsZ; iz++){	// z-direction is the fast-scan direction.
			cell[ix*iNumOfCellsX + iz].setCubeSize(cubeSize);
			cell[ix*iNumOfCellsX + iz].setMaterials(pMaterialGrid, pMaterialFill);
		}
}
/* The second part of the Velocity verlet algorithm, updates velocity */
void integrator::verlet_integration_velocity(verlet_list particle)
{
	verlet_list *current = particle.next;
	vector_3d tmp_force = vector_3d(0,0,0);

	while(current != NULL){
		vector_3d r = particle.data->pos.diff(current->data->pos, x_dim, y_dim, z_dim);
		if(r*r < cutoff*cutoff){
			/* Update velocity and acceleration of the particle */
			tmp_force = calculate_force(particle.data, current->data);
//			std::cout << "Calculating force: " << tmp_force;
			particle.data->incr_next_acc(tmp_force/particle.data->mass);
			current->data->decr_next_acc(tmp_force/current->data->mass);
		}
		current = current->next;
	}	
	
	particle.data->vel += 0.5*(particle.data->acc + particle.data->get_next_acc())*h;
	particle.data->update_acceleration();

}
Ejemplo n.º 3
0
vector_3d Shape::getVelocity() const
{
    return vector_3d(0.0, 0.0, 0.0);
}
Ejemplo n.º 4
0
Ioss::Vector_3D::Vector_3D()
  : Ioss::VariableType(vector_3d(), 3) {}
Ejemplo n.º 5
0
BRule::BRule(short l, short rhs0_, short rhs1_, double prob) :
  AnnotatedRule(l), rhs0(rhs0_), rhs1(rhs1_),
  probabilities(vector_3d(1, std::vector< std::vector<double> >(1,std::vector<double>(1,prob))))
{}
vector_3d vector_3d::operator- (vector_3d v)
{
	return vector_3d(this->x - v.x, this->y - v.y, this->z - v.z);
}
vector_3d vector_3d::operator+ (vector_3d v)
{
	return vector_3d(this->x + v.x, this->y + v.y, this->z + v.z);
}
vector_3d vector_3d::operator* (float a)
{
	return vector_3d(a*(this->x), a*(this->y), a*(this->z));
}