void Model::bbox() { matrix=makeMatrix(); if(mesh!=NULL) { Vector4f p; Matrix4f m=matrix; m.transpose(); min_x=1000000; max_x=-1000000; min_y=1000000; max_y=-1000000; min_z=1000000; max_z=-1000000; for(GLuint i=0;i < mesh->indexCount();i++) { p.set((mesh->vertexData())[(mesh->indexData())[i]*3] ,mesh->vertexData()[mesh->indexData()[i]*3+1] ,mesh->vertexData()[mesh->indexData()[i]*3+2],1.0); p=m*p; if(p[0]<min_x) min_x=p[0]; if(p[0]>max_x) max_x=p[0]; if(p[1]<min_y) min_y=p[1]; if(p[1]>max_y) max_y=p[1]; if(p[2]<min_z) min_z=p[2]; if(p[2]>max_z) max_z=p[2]; } /* if(min_x<0) { m_position[0]-=min_x; min_x=0; } if(min_y<0) { m_position[1]-=min_y; min_y=0; } if(min_z<0) { m_position[2]-=min_z; min_z=0; } */ box.setExtreme(min_x,min_y,min_z,max_x,max_y,max_z); } }
void determineDetail (int atomScale, const AtomicName& name, Vector4f& detail) { detail.set(MoleculeLoader::getAtomicDetailFromName(name), atomScale * Constants::DEFAULT_RADIUS); }