本文整理汇总了C++中Poly::At方法的典型用法代码示例。如果您正苦于以下问题:C++ Poly::At方法的具体用法?C++ Poly::At怎么用?C++ Poly::At使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Poly
的用法示例。
在下文中一共展示了Poly::At方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
vector<Point> Design::FindUnblockedPoints(Point point, int block_index) const{
vector<Point> points;
points.push_back(point);
Poly block = blocks_.at(block_index);
for (unsigned int i = 0; i < block.Size(); ++i){
Edge edge = block.GetEdge(i);
//only take one end for each edge to avoid duplicates
if (point.IsProjectedOn(edge) && !point.PointsOnSameLine(block.At(i))){
points.push_back(point.Projection(edge));
}
}
return points;
}
示例2: PlotAndSave
void Design::PlotAndSave(const vector<Node> & nodes)const{//generate line doc for gnu
//return;
if (nodes.size() == 0)
return;//Nothing to do with an empty tree
static int count = -1;
count++;//Every time plotTree got called, count+1. Then we can save picture with different name
FILE * fp = popen ("gnuplot -persist", "w");
//Plot the current tree edge
DTYPE plot_x_min = INT_MAX, plot_x_max = 0, plot_y_min = INT_MAX, plot_y_max = 0;
for (int i = 1; i < nodes.size(); ++i) {
Node node = nodes.at(i);
Node parent_node = nodes.at(node.parent_);
fprintf(fp, "set arrow from %f,%f to %f,%f nohead\n",(double)node.point_.x,(double)node.point_.y,
(double)parent_node.point_.x, (double)parent_node.point_.y);
plot_x_min = min(plot_x_min, min(node.point_.x, parent_node.point_.x));
plot_x_max = max(plot_x_max, max(node.point_.x, parent_node.point_.x));
plot_y_min = min(plot_y_min, min(node.point_.y, parent_node.point_.y));
plot_y_max = max(plot_y_max, max(node.point_.y, parent_node.point_.y));
}
//Only plot the range around this tree. It will include all blocks in this range
fprintf (fp, "set xrange [ %f : %f ]\n",
(double)plot_x_min-0.2*(plot_x_max-plot_x_min)-30, (double)plot_x_max+0.2*(plot_x_max-plot_x_min)+30.0);//30 is for test04
fprintf (fp, "set yrange [ %f : %f ]\n",
(double)plot_y_min-0.2*(plot_y_max-plot_y_min)-30, (double)plot_y_max+0.2*(plot_y_max-plot_y_min)+30);
for (vector<Poly>::const_iterator it2 = blocks_.begin(); it2 != blocks_.end(); ++it2){
Poly block = *it2;
fprintf (fp, "set object %d polygon from ", 1 + it2-blocks_.begin());//from 1
for (unsigned int i=0; i<block.Size();++i){
Point point = block.At(i);
fprintf (fp, "%f,%f", (double)point.x, (double)point.y);
fprintf (fp," to ");
}
assert (block.Size() > 0);//Block with size 0 shouldn't exist
if (block.Size() > 0){
Point start_point = block.At(0);
fprintf (fp, " %f,%f fs pattern 1 bo 2 fc rgbcolor \"cyan\"\n",
(double)start_point.x, (double)start_point.y);//to close the Polygon
}
}
//Plot node in blue and root in red
//This one use plot function, so it has to be done at last
for (int i = 0; i < nodes.size();) {
if (i == 0)
fprintf (fp, "plot ");
Node node = nodes.at(i);
Node parent_node = nodes.at(node.parent_);
if (i == 0){//root
fprintf(fp, "\"<echo '%f %f'\" notitle with points pointtype 7 pointsize 1 linecolor rgb \"red\"",
(double)node.point_.x,(double)node.point_.y);
}else if (node.type_ == Node::SINK){
fprintf(fp, "\"<echo '%f %f'\" notitle with points pointtype 4 pointsize 1 linecolor rgb \"green\"",
(double)node.point_.x,(double)node.point_.y);
}else{
fprintf(fp, "\"<echo '%f %f'\" notitle with points pointtype 4 pointsize 1 linecolor rgb \"blue\"",
(double)node.point_.x,(double)node.point_.y);
}
i++;
if (i != nodes.size()){
fprintf (fp, ", ");
}
}
//Plot buffers in purple
list<pair<Point,Buffer> > buffer_locations = best_solution_.get_buffer_locations();
printf ("The buffer number is %d\n", buffer_locations.size());
if (buffer_locations.size() !=0 ){
for (list<pair<Point,Buffer> >::const_iterator buffer_location = buffer_locations.begin(); buffer_location != buffer_locations.end(); ){
Point buffer_location_point = buffer_location->first;
printf ("The location is at %f %f\n", (double)buffer_location_point.x,(double)buffer_location_point.y);
fprintf (fp, ", ");
fprintf(fp, "\"<echo '%f %f'\" notitle with points pointtype 6 pointsize 1 linecolor rgb \"purple\"",
(double)buffer_location_point.x,(double)buffer_location_point.y);
buffer_location++;
}
}
fprintf (fp, "\n");
//Save to file
fprintf (fp, "set terminal png\n");
fprintf (fp, "set output \"%s/my_plot_%d.png\"\n", benchmark_path_, count);//gthumb Erint
//Plot on screen
fprintf (fp, "replot\n");
fprintf (fp, "set terminal x11\n");
fprintf (fp, "pause -1\n");
pclose (fp);
return;
}