本文整理汇总了C++中TileIndex::contains_time方法的典型用法代码示例。如果您正苦于以下问题:C++ TileIndex::contains_time方法的具体用法?C++ TileIndex::contains_time怎么用?C++ TileIndex::contains_time使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TileIndex
的用法示例。
在下文中一共展示了TileIndex::contains_time方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: read_tile_samples
void read_tile_samples(KVS &store, int uid, std::string full_channel_name, TileIndex requested_index, TileIndex client_tile_index, std::vector<DataSample<T> > &samples, bool &binned)
{
Channel ch(store, uid, full_channel_name);
Tile tile;
TileIndex actual_index;
bool success = ch.read_tile_or_closest_ancestor(requested_index, actual_index, tile);
if (!success) {
log_f("gettile: no tile found for %s", requested_index.to_string().c_str());
} else {
log_f("gettile: requested %s: found %s", requested_index.to_string().c_str(), actual_index.to_string().c_str());
for (unsigned i = 0; i < tile.get_samples<T>().size(); i++) {
DataSample<T> &sample=tile.get_samples<T>()[i];
if (client_tile_index.contains_time(sample.time)) samples.push_back(sample);
}
}
if (samples.size() <= 512) {
binned = false;
} else {
// Bin
binned = true;
std::vector<DataAccumulator<T> > bins(512);
for (unsigned i = 0; i < samples.size(); i++) {
DataSample<T> &sample=samples[i];
bins[(int)floor(client_tile_index.position(sample.time)*512)] += sample;
}
samples.clear();
for (unsigned i = 0; i < bins.size(); i++) {
if (bins[i].weight > 0) samples.push_back(bins[i].get_sample());
}
}
}
示例2: combine_samples
void combine_samples(unsigned int n_samples,
TileIndex parent_index,
std::vector<DataSample<T> > &parent,
const std::vector<DataSample<T> > &left_child,
const std::vector<DataSample<T> > &right_child)
{
std::vector<DataAccumulator<T> > bins(n_samples);
const std::vector<DataSample<T> > *children[2];
children[0]=&left_child; children[1]=&right_child;
int n=0;
for (unsigned j = 0; j < 2; j++) {
const std::vector<DataSample<T> > &child = *children[j];
for (unsigned i = 0; i < child.size(); i++) {
// Version 1: bin samples into correct bin
// Version 2: try gaussian or lanczos(1) or 1/4 3/4 3/4 1/4
const DataSample<T> &sample = child[i];
assert(parent_index.contains_time(sample.time));
unsigned bin = (unsigned) floor(parent_index.position(sample.time) * n_samples);
assert(bin < n_samples);
n++;
bins[bin] += sample;
assert(bins[bin].weight>0);
}
}
n = 0;
int m=0;
parent.clear();
for (unsigned i = 0; i < bins.size(); i++) {
if (bins[i].weight > 0) {
parent.push_back(bins[i].get_sample());
assert(parent.size());
n++;
} else {
m++;
}
}
if (left_child.size() || right_child.size()) assert(parent.size());
}