Lines Matching refs:section
36 unsigned TopoGraph::Vertex::find_section(boost::shared_ptr<Section> section) const {
39 if((*this)[i].section == section) return i;
51 v.erase(v.find_section(ret.section));
78 assert(are_near(e.section->fp, vertices[i].avg, tol) || are_near(e.section->tp, vertices[i].avg, tol));
79 assert(!are_near(e.section->fp, e.section->tp, tol));
80 assert(e.section.get());
81 unsigned oix = vertices[e.other].find_section(e.section);
136 //finds the t-value on a section, which corresponds to a particular horizontal or vertical line
172 //by referencing f / t we are assuming that the section was constructed with 1-dim
195 // splits a section into pieces, as specified by an array of doubles, mutating the section to
271 bool operator()(TopoGraph::Edge const &e1, TopoGraph::Edge const &e2) const { return s(*e1.section, *e2.section); }
283 2) find all of the to-values before the beginning of this section
285 4) add our section into context, splitting on intersections
327 boost::shared_ptr<Section> section;
330 Context(boost::shared_ptr<Section> sect, int from) : section(sect), from_vert(from), to_vert(-1) {}
340 result_type operator()(const Context &a, const second_argument_type &b) const { return comp(a.section, b); }
346 //s_sort = vertical section order
382 boost::shared_ptr<Section> sec = context[i].section;
392 modify_windings(windings, context[j].section, d);
393 if(are_near(sec->tp, context[j].section->tp, tol)) {
395 context[j].section->windings = windings;
397 enters.push_back(Edge(context[j].section, context[j].from_vert));
398 //avg += context[j].section->tp;
403 Vertex v(context[i].section->tp);
430 if(context[i].section == context[context_ix].section) continue;
432 boost::shared_ptr<Section> sec = context[i].section;
448 merge(chops, split_section(context[context_ix].section, ps, this_splits, d), heap_sort);
452 if(context[context_ix].section->tp[d] - context[context_ix].section->fp[d] <= tol) {
453 if(!are_near(context[context_ix].section->tp, context[context_ix].section->fp, tol)) {
454 ix = find_vertex(vertices, context[context_ix].section->tp, tol);
456 boost::shared_ptr<Section> sec = context[context_ix].section;
463 for(unsigned j = 0; j <= context_ix; j++) modify_windings(windings, context[j].section, d);
465 windings = (it-1)->section->windings;
466 modify_windings(windings, (it-1)->section, d);
468 windings = it->section->windings;
475 it2->section->windings = windings;
476 modify_windings(windings, it2->section, d);
492 for(unsigned i = 0; i < context.size(); i++) rem.push_back(*context[i].section);
518 if(v.enters[i].section == s) {
524 if(v.exits[i].section == s) {
539 TopoGraph::Edge next_edge = g[j][1 - g[j].find_section(e.section)];
540 boost::shared_ptr<Section> new_section = boost::shared_ptr<Section>(new Section(*e.section));
541 add_edge_at(g, j, e.section, TopoGraph::Edge(new_section, e.other), false);
542 add_edge_at(g, e.other, e.section, TopoGraph::Edge(new_section, j), true);
567 if(e1.section == e2.section) {
569 Section *new_section = new Section(e1.section->curve,
570 e1.section->f, e2.section->t,
571 e1.section->fp, e2.section->tp);
576 v1->lookup_section(e1.section) = Edge(new_section, v2);
577 v2->lookup_section(e2.section) = Edge(new_section, v1);
610 area.push_back(e.section);
615 e_ix = g[cur].find_section(e.section);