bool Ship::addImpulse(Brick* brick, vec3 pos, vec3 impulse) { if (brick == m_base) return false; Transform t = invTransform(m_body->getTransform()); vec3 _pos = transformVec3(pos, t); vec3 _impulse = rotate(impulse, t.q); m_minAxis = abs(_impulse.x) > abs(_impulse.z) ? X : Z; // clear flow network clearFlowNetwork(brick, _impulse, _pos, g_tick++); //bool destroy = false; bool destroy = checkAxis(brick, impulse, pos, X); if (!destroy) destroy = checkAxis(brick, impulse, pos, Z); //if (!destroy) // destroy = checkVertical(brick, abs(_impulse.y), impulse, pos); //if (destroy) //{ // m_body->applyImpulse(-impulse, pos); //} return destroy; }
bool pointInCuboid(GLfloat *p, GLfloat *ecke1, GLfloat *ecke2) { for(int i = 0; i < 3; i++) { if(checkAxis(p[i], ecke1[i], ecke2[i]) == false) return false; } return true; }
bool DistArrayProtocol::one_to_one(int axis) const { checkAxis(axis); return dim_data[axis].one_to_one; }
bool DistArrayProtocol::periodic(int axis) const { checkAxis(axis); return dim_data[axis].periodic; }
int DistArrayProtocol::block_size(int axis) const { checkAxis(axis); return dim_data[axis].block_size; }
PaddingType DistArrayProtocol::padding(int axis) const { checkAxis(axis); return dim_data[axis].padding; }
IndicesType DistArrayProtocol::indices(int axis) const { checkAxis(axis); return dim_data[axis].indices; }
int DistArrayProtocol::stop(int axis) const { checkAxis(axis); return dim_data[axis].stop; }
int DistArrayProtocol::proc_grid_rank(int axis) const { checkAxis(axis); return dim_data[axis].proc_grid_rank; }
DistributionType DistArrayProtocol::dist_type(int axis) const { checkAxis(axis); return dim_data[axis].dist_type; }