66void tworects(valarray<double>& X, valarray<double>& Y,
Hull& expectedHull) {
70 X[0]=330.011898, Y[0]=203.250425;
71 X[1]=330.011898, Y[1]=237.250425;
72 X[2]=276.011898, Y[2]=237.250425;
73 X[3]=276.011898, Y[3]=203.250425;
74 X[4]=459.998300, Y[4]=203.250425;
75 X[5]=459.998300, Y[5]=237.250425;
76 X[6]=405.998300, Y[6]=237.250425;
77 X[7]=405.998300, Y[7]=203.250425;
78 unsigned hull[]={3,4,5,2};
79 unsigned m=
sizeof(
hull)/
sizeof(
unsigned);
80 expectedHull.resize(m);
81 copy(
hull,
hull+m,expectedHull.begin());
122 const valarray<double>& Xin,
const valarray<double>& Yin,
124#ifdef CAIRO_HAS_SVG_SURFACE
125 unsigned n=Xin.size();
126 assert(Yin.size()==n);
129 valarray<double> X=Xin, Y=Yin;
135 Cairo::RefPtr<Cairo::SvgSurface>
surface =
138 Cairo::RefPtr<Cairo::Context> cr = Cairo::Context::create(
surface);
141 cr->set_source_rgba(0.0, 0.0, 0.0, 0.7);
143 for(
unsigned i=0;i<n;i++) {
147 cr->set_source_rgba(0.0, 0.0, 0.0, 0.3);
149 for(
unsigned i=1;i<
hull.size();i++) {
154 cr->set_source_rgba(0.0, 0.0, 0.0, 1.);
155 for(vector<unsigned>::const_iterator i=
hull.begin();i!=
hull.end();++i) {
159 printf(
"p[%d]=(%f,%f)\n",j,X[j],Y[j]);
161 cr->show_text(ss.str());
168 cout <<
"Wrote SVG file \"" << fname <<
"\"" << endl;
173 cout <<
"You must compile cairo with SVG support for this example to work."
void randTest(unsigned n, valarray< double > &X, valarray< double > &Y)
generates a random set of n points in X and Y.
void tworects(valarray< double > &X, valarray< double > &Y, Hull &expectedHull)
generates a set of 8 points (actually the vertices of two rectangles) which lineup horizontally.