本文整理汇总了C++中array2d::resize方法的典型用法代码示例。如果您正苦于以下问题:C++ array2d::resize方法的具体用法?C++ array2d::resize怎么用?C++ array2d::resize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类array2d
的用法示例。
在下文中一共展示了array2d::resize方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ParaDividing
int HMatrix::ParaDividing(
const array2d &vec2,
array2d &product
) const
{
if(nColumns != (int)vec2[0].size())
{
// cout << "MatrixParaProduct has different columns for vec1 and vec2!" << endl;
return -1;
}
product.resize( vec2.size(), array1d(nRows) );
for (int i=0; i<(int)vec2.size(); i++)
{
for (int j=0; j<nRows; j++)
{
product[i][j] = 0.0;
for (int k=0; k<nColumns; k++)
{
product[i][j] += data[j][k] / vec2[i][k];
}
if(product[i][j] == 0.0) product[i][j] = EPS;
}
}
return 1;
}
示例2: init_light_groups
int init_light_groups()
{
const int num_light_groups = 16;
const int num_ligting_groups = 16;
m_LightToObject.resize( num_light_groups, num_ligting_groups );
return 0;
}
示例3: Dividing
int VMatrix::Dividing(
const array2d &scaler,
array2d &result
) const
{
result.resize( nRows, array1d(nColumns) );
for (int i=0; i<nRows; i++)
{
for (int j=0; j<nColumns; j++)
{
result[i][j] = data[i][j] / scaler[i][j];
}
}
return 1;
}
示例4: RenderUTF8TextToBuffer
/// Sets up char rects as well
void RenderUTF8TextToBuffer( const FT_Face& face,
const std::string &text,
int char_height,
array2d<U8>& dest_bitmap_buffer, ///< [out] buffer to render the text to
vector<TrueTypeTextureFont::CharRect>& char_rect
)
{
LOG_FUNCTION_SCOPE();
float top, left, bottom, right;
int _top, _left, _bottom, _right;
FT_GlyphSlot slot = face->glyph; // a small shortcut
// FT_UInt glyph_index;
int pen_x, pen_y, n;
const int num_chars = (int)text.size();
int error = 0;
vector<U32> utf8_code_points;
string::const_iterator itr = text.begin();
while( itr != text.end() )
{
U32 cp = utf8::next( itr, text.end() );
utf8_code_points.push_back( cp );
}
const int num_utf8_chars = (int)utf8_code_points.size();
char_rect.resize( num_utf8_chars );
/// Shouldn't we change the character codes?
// for( size_t i=0; i<text.size(); i++ )
// {}
int img_width = 1600;
int img_height= 256;
dest_bitmap_buffer.resize( img_width, img_height, 0 );
int sx = 0;
int sy = char_height;
pen_x = sx;
pen_y = sy;
int margin = 4;
for ( n = 0; n < num_utf8_chars; n++ )
{
/* load glyph image into the slot (erase previous one) */
FT_ULong char_code = utf8_code_points[n];
// FT_ULong char_code = text[n];
error = FT_Load_Char( face, char_code, FT_LOAD_RENDER );
if ( error )
continue;
if( slot->bitmap_left < 0 )
{
// some chars have negative left offset
// - add the offset to make sure that x coords of their bounding box
// do not overlap with those of other chars
pen_x += (int)slot->bitmap_left * (-1);
}
// ignore errors
_left = pen_x + slot->bitmap_left;
_top = pen_y - slot->bitmap_top;
clamp( _top, 0, 4096 );
left = (float)pen_x / (float)img_width;
top = (float)(pen_y - slot->bitmap_top) / (float)img_width;
// now, draw to our target surface
DrawBitmap( &slot->bitmap, pen_x + slot->bitmap_left, pen_y - slot->bitmap_top, dest_bitmap_buffer );
// increment pen position
pen_x += slot->bitmap_left + slot->bitmap.width;//slot->advance.x >> 6;
right = (float)pen_x / (float)img_width;
bottom = (float)pen_y / (float)img_width;
_right = _left + slot->bitmap.width;
_bottom = _top + slot->bitmap.rows;
pen_x += margin;
if( img_width - char_height * 2 < pen_x )
{
// line feed
pen_x = sx;
pen_y += (int)(char_height * 1.5f); // Not sure if x1.5 is always sufficient
}
// DrawRect( dest_bitmap_buffer, RectLTRB( _left, _top, _right, _bottom ), 0x90 );
char_rect[n].tex_min = TEXCOORD2( (float)_left, (float)_top ) / (float)img_width;
char_rect[n].tex_max = TEXCOORD2( (float)_right, (float)_bottom ) / (float)img_width;
char_rect[n].rect.vMin = Vector2( (float)slot->bitmap_left, (float)char_height - slot->bitmap_top );
char_rect[n].rect.vMax = Vector2( (float)slot->bitmap_left + slot->bitmap.width, (float)char_height - slot->bitmap_top + slot->bitmap.rows );
//.........这里部分代码省略.........
示例5: load_ascii_data
int load_ascii_data(std::string filename, array2d<T> &elevations){
std::ifstream fin;
size_t file_size;
int rows,columns;
Timer load_time;
ProgressBar progress;
load_time.start();
diagnostic_arg("Opening input ASCII-DEM file \"%s\"...",filename.c_str());
fin.open(filename.c_str());
if(!fin.good()){
diagnostic("failed!\n");
exit(-1);
}
diagnostic("succeeded.\n");
diagnostic("Calculating file size...");
fin.seekg(0, fin.end);
file_size=fin.tellg();
fin.seekg(0, fin.beg);
diagnostic("succeeded.\n");
// posix_fadvise(fileno(fin),0,0,POSIX_FADV_SEQUENTIAL);
diagnostic("Reading DEM header...");
fin>>must_be("ncols") >>columns;
fin>>must_be("nrows") >>rows;
fin>>must_be("xllcorner") >>elevations.xllcorner;
fin>>must_be("yllcorner") >>elevations.yllcorner;
fin>>must_be("cellsize") >>elevations.cellsize;
try {
fin>>must_be("NODATA_value") >>elevations.no_data;
} catch (std::string e) {
std::cerr<<e<<std::endl;
std::cerr<<"Continuing without a NoData value!"<<std::endl;
}
diagnostic("succeeded.\n");
diagnostic_arg("The loaded DEM will require approximately %ldMB of RAM.\n",columns*rows*((long)sizeof(float))/1024/1024);
diagnostic("Resizing elevation matrix..."); //TODO: Consider abstracting this block
elevations.resize(columns,rows);
diagnostic("succeeded.\n");
diagnostic("%%Reading elevation matrix...\n");
progress.start(file_size);
elevations.data_cells=0;
for(int y=0;y<rows;y++){
progress.update(fin.tellg()); //Todo: Check to see if ftell fails here?
for(int x=0;x<columns;x++){
fin>>elevations(x,y);
if(elevations(x,y)!=elevations.no_data)
elevations.data_cells++;
}
}
diagnostic_arg(SUCCEEDED_IN,progress.stop());
fin.close();
diagnostic_arg(
"Read %ld cells, of which %ld contained data (%ld%%).\n",
elevations.width()*elevations.height(), elevations.data_cells,
elevations.data_cells*100/elevations.width()/elevations.height()
);
load_time.stop();
diagnostic_arg("Read time was: %lfs\n", load_time.accumulated());
return 0;
}
示例6: read_floating_data
int read_floating_data(
const std::string basename,
array2d<T> &grid
){
Timer io_time;
ProgressBar progress;
std::string fn_header(basename), fn_data(basename);
//TODO: The section below should work, but is something of an abomination
if(typeid(T)==typeid(float)){
fn_header+=".hdr";
fn_data+=".flt";
} else if (typeid(T)==typeid(double)){
fn_header+=".hdr";
fn_data+=".dflt";
} else {
std::cerr<<"Cannot read floating type data into this format!"<<std::endl;
exit(-1);
}
int columns, rows;
std::string byteorder;
io_time.start();
{
std::ifstream fin;
diagnostic_arg("Opening floating-point header file \"%s\" for reading...",fn_header.c_str());
fin.open(fn_header.c_str());
if(fin==NULL){
diagnostic("failed!\n");
exit(-1);
}
diagnostic("succeeded.\n");
diagnostic("Reading DEM header...");
fin>>must_be("ncols") >>columns;
fin>>must_be("nrows") >>rows;
fin>>must_be("xllcorner") >>grid.xllcorner;
fin>>must_be("yllcorner") >>grid.yllcorner;
fin>>must_be("cellsize") >>grid.cellsize;
fin>>must_be("NODATA_value") >>grid.no_data;
fin>>must_be("BYTEORDER") >>byteorder;
diagnostic("succeeded.\n");
fin.close();
}
diagnostic_arg("The loaded DEM will require approximately %ldMB of RAM.\n",columns*rows*((long)sizeof(float))/1024/1024);
diagnostic("Resizing grid..."); //TODO: Consider abstracting this block
grid.resize(columns,rows);
diagnostic("succeeded.\n");
diagnostic_arg("Opening floating-point data file \"%s\" for reading...",fn_data.c_str());
{
std::ifstream fin(fn_data.c_str(), std::ios::binary | std::ios::in);
if(!fin.is_open()){
diagnostic("failed!\n");
exit(-1); //TODO: Need to make this safer! Don't just close after all that work!
}
diagnostic("succeeded.\n");
diagnostic("%%Reading data...\n");
progress.start(columns*rows);
grid.data_cells=0;
for(int y=0;y<rows;++y){
progress.update(y*columns); //Todo: Check to see if ftell fails here?
for(int x=0;x<columns;++x){
fin.read(reinterpret_cast<char*>(&grid(x,y)), std::streamsize(sizeof(T)));
if(grid(x,y)!=grid.no_data)
grid.data_cells++;
}
}
io_time.stop();
diagnostic_arg(SUCCEEDED_IN,progress.stop());
}
diagnostic_arg(
"Read %ld cells, of which %ld contained data (%ld%%).\n",
grid.width()*grid.height(), grid.data_cells,
grid.data_cells*100/grid.width()/grid.height()
);
diagnostic_arg("Read time was: %lf\n", io_time.accumulated());
return 0;
}