本文整理汇总了C++中Vector3i类的典型用法代码示例。如果您正苦于以下问题:C++ Vector3i类的具体用法?C++ Vector3i怎么用?C++ Vector3i使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Vector3i类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: MyVector3D
void RKCell::preUpdate(double epsilon[], BaseCell* neighbors[], Grid *grid, Vector3i position) {
int model = Shared::instance()->getGridConfig()->getModel();
MyVector3D colorGradient = MyVector3D();
for (int a = 0; a < model; a++) {
Vector3i neighbor = position + LBUtil::C[model][a];
RKCell *cell = dynamic_cast<RKCell*>(grid->getGrid(neighbor.getY(), neighbor.getX(), neighbor.getZ()));
if (cell != 0) {
colorGradient = colorGradient + (LBUtil::C[model][a] ^ cell->getColor());
}
}
for (int i = 0; i < model; i++) {
double fi = red[i] + blue[i];
double p = redP + blueP;
double nextF = fi + 1.0 / epsilon[0] * (LBUtil::f_eq(u, p, model, i) - fi);
double cos = (LBUtil::C[model][i] * colorGradient);
if (colorGradient.norm() > 1e-10 && LBUtil::C[model][i].norm() > 1e-10) {
cos = cos / (LBUtil::C[model][i].norm() * colorGradient.norm());
} else {
//cos = std::sqrt(2.0) / 2;
//cos = 1;
cos = 0;
}
GridConfig *config = Shared::instance()->getGridConfig();
nextF += config->getRkA() * colorGradient.norm() * (2 * cos * cos - 1);
double diff = config->getRkBeta() * redP * blueP / (p * p) * LBUtil::W[model][i] * p * cos;
//double diff = 0;
double newNextRed = redP / p * nextF + diff;
double newNextBlue = blueP / p * nextF - diff;
if (neighbors[i] != 0) {
neighbors[i]->setNextF(i, newNextRed, 0);
neighbors[i]->setNextF(i, newNextBlue, 1);
}
}
}
示例2: set
//----------------------------------------------------------------------------
void Texture::set(void* iPtr, const Vector3i& iS,
GLenum iInternalFormat,
GLenum iFormat,
GLenum iDataType)
{
vector<int> s(3, 0); s[0] = iS.x(); s[1] = iS.y(); s[2] = iS.z();
set( iPtr, s, iInternalFormat, iFormat, iDataType );
}
示例3: volume
coord_t Box::volume() const {
if (!valid()) {
return 0;
}
Vector3i diagonal = this->diagonal();
return diagonal.x() * diagonal.y() * diagonal.z();
}
示例4: postUpdate
void DepositionCell::postUpdate(Grid *grid, Vector3i position) {
for (int i = 0; i < 9; i++) {
Vector3i neighbor = position + LBUtil::C[9][i];
nextG[i] = g[i] + deposited * (grid->getGrid(neighbor.getY(), neighbor.getX(), neighbor.getZ())->getF(LBUtil::OPPOSITE[9][i], 1) - g[i]);
}
for (int i = 0; i < 9; i++) {
g[i] = nextG[i];
}
}
示例5: value
double Cube::value(const Vector3i &pos) const
{
unsigned int index = pos.x() * m_points.y() * m_points.z()
+ pos.y() * m_points.z() + pos.z();
if (index < m_data.size())
return m_data[index];
else
return 6969.0;
}
示例6: main
int main(int, char**)
{
cout.precision(3);
Vector3i v = Vector3i::Random();
cout << "Here is the vector v:" << endl << v << endl;
cout << "v.rowwise().replicate(5) = ..." << endl;
cout << v.rowwise().replicate(5) << endl;
return 0;
}
示例7: calculateTotalKeyBounds
//------------------------------------------------------------------------------
IntAABB Octree::calculateTotalKeyBounds()
{
IntAABB bounds;
for (auto it = m_roots.begin(); it != m_roots.end(); ++it)
{
OctreeNode & node = *(it->second);
Vector3i pos = it->first;
bounds.addPoint(pos.x(), pos.y());
}
return bounds;
}
示例8: getOctreeDepthForBounding
uint getOctreeDepthForBounding(const Vector3i& maxXYZ) {
coord_t max = ::std::max(maxXYZ.x(), ::std::max(maxXYZ.y(), maxXYZ.z()));
if (max < 0) {
throw ::std::runtime_error("Invalid bounding (all components must not be negative)");
}
// how many bits are required to store numbers from 0 to max
int requiredBits = getMostSignigicantSetBitPos(max) + 1;
return static_cast<uint>(requiredBits);
}
示例9: Setup
void BotBotCollisionGrid::Setup(Vector3i Dimensions)
{
assert(Dimensions.x() > 0 && "Attempting to create a world grid with zero x dimensions");
assert(Dimensions.y() > 0 && "Attempting to create a world grid with zero y dimensions");
SetupLevel(Grid1, Dimensions, 64);
SetupLevel(Grid2, Dimensions, 128);
SetupLevel(Grid3, Dimensions, 256);
SetupLevel(Grid4, Dimensions, 512);
MasterGrid.clear();
}
示例10: SetupLevel
void BotBotCollisionGrid::SetupLevel(vector< vector< list< Robot* > > > &Grid, Vector3i Dimensions, int GridSize)
{
Grid.resize( (Dimensions.x() + GridSize - 1) / GridSize);//round up the number of dimensions needed
for(unsigned int x = 0; x < Grid.size(); x++)
{
Grid[x].resize((Dimensions.y() + GridSize - 1) / GridSize);
for(unsigned int y = 0; y < Grid[x].size(); y++)
{
Grid[x][y].clear();
}
}
}
示例11: storageImplementationDefault
void AbstractTexture::storageImplementationDefault(GLenum target, GLsizei levels, AbstractTexture::InternalFormat internalFormat, const Vector3i& size) {
bindInternal();
/** @todo Re-enable when extension wrangler is available for ES2 */
#ifndef MAGNUM_TARGET_GLES2
glTexStorage3D(target, levels, GLenum(internalFormat), size.x(), size.y(), size.z());
#else
//glTexStorage3DEXT(target, levels, GLenum(internalFormat), size.x(), size.y(), size.z());
static_cast<void>(target);
static_cast<void>(levels);
static_cast<void>(internalFormat);
static_cast<void>(size);
#endif
}
示例12: setLimits
bool Cube::setLimits(const Vector3 &min_, const Vector3i &dim,
const Vector3 &spacing_)
{
Vector3 max_ = Vector3(min_.x() + (dim.x()-1) * spacing_[0],
min_.y() + (dim.y()-1) * spacing_[1],
min_.z() + (dim.z()-1) * spacing_[2]);
m_min = min_;
m_max = max_;
m_points = dim;
m_spacing = spacing_;
m_data.resize(m_points.x() * m_points.y() * m_points.z());
return true;
}
示例13: setLimits
bool Cube::setLimits(const Vector3d &min_, const Vector3i &dim,
double spacing_)
{
Vector3d max_ = Vector3d(min_.x() + (dim.x()-1) * spacing_,
min_.y() + (dim.y()-1) * spacing_,
min_.z() + (dim.z()-1) * spacing_);
m_min = min_;
m_max = max_;
m_points = dim;
m_spacing = Vector3d(spacing_, spacing_, spacing_);
m_data.resize(m_points.x() * m_points.y() * m_points.z());
return true;
}
示例14: coord
void Map::Draw(Gdiplus::Graphics* g)
{
Vector3i northWestTile = mMapViewport->GetNorthWestTileCoordinate();
Vector3i southEastTile = mMapViewport->GetSouthEastTileCoordinate();
Vector2i origin = mMapViewport->GetTileOrigin(northWestTile);
int xTileCount = southEastTile.GetX() - northWestTile.GetX() + 1;
int yTileCount = southEastTile.GetY() - northWestTile.GetY() + 1;
int tileCount = xTileCount*yTileCount;
for(int i = 0; i<xTileCount; i++)
{
for(int j = 0; j<yTileCount; j++)
{
Vector3i coord(northWestTile.GetX() + i, northWestTile.GetY() + j, mMapViewport->GetZoom());
Tile* tile = GetTile(coord);
if(!tile->IsLoaded())
{
tile->SignalReady += [this](Tile* tile) {
std::lock_guard<std::mutex> lock(signal_mutex);
SignalNewTile.emit();
};
continue;
}
Gdiplus::Image* im = tile->GetImage();
if(im)
g->DrawImage(im, origin.GetX() + i*mMapSource->GetTileSize(), origin.GetY() + j*mMapSource->GetTileSize());
}
}
}
示例15: subImageImplementationDefault
void AbstractTexture::subImageImplementationDefault(GLenum target, GLint level, const Vector3i& offset, const Vector3i& size, AbstractImage::Format format, AbstractImage::Type type, const GLvoid* data) {
bindInternal();
/** @todo Get some extension wrangler instead to avoid linker errors to glTexSubImage3D() on ES2 */
#ifndef MAGNUM_TARGET_GLES2
glTexSubImage3D(target, level, offset.x(), offset.y(), offset.z(), size.x(), size.y(), size.z(), static_cast<GLenum>(format), static_cast<GLenum>(type), data);
#else
static_cast<void>(target);
static_cast<void>(level);
static_cast<void>(offset);
static_cast<void>(size);
static_cast<void>(format);
static_cast<void>(type);
static_cast<void>(data);
#endif
}