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(); }
vector_3d Shape::getVelocity() const { return vector_3d(0.0, 0.0, 0.0); }
Ioss::Vector_3D::Vector_3D() : Ioss::VariableType(vector_3d(), 3) {}
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)); }