本文整理汇总了C++中Board2D::drawLine方法的典型用法代码示例。如果您正苦于以下问题:C++ Board2D::drawLine方法的具体用法?C++ Board2D::drawLine怎么用?C++ Board2D::drawLine使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Board2D
的用法示例。
在下文中一共展示了Board2D::drawLine方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: convexHull
/**
* Algorithms that computes the convex hull
* of a point set
*/
void convexHull()
{
//Digitization of a disk of radius 6
Ball2D<Z2i::Space> ball(Z2i::Point(0,0), 6);
Z2i::Domain domain(ball.getLowerBound(), ball.getUpperBound());
Z2i::DigitalSet pointSet(domain);
Shapes<Z2i::Domain>::euclideanShaper(pointSet, ball);
//! [Hull2D-Namespace]
using namespace functions::Hull2D;
//! [Hull2D-Namespace]
//! [Hull2D-Functor]
typedef InHalfPlaneBySimple3x3Matrix<Z2i::Point, DGtal::int64_t> Functor;
Functor functor;
//! [Hull2D-Functor]
{ //convex hull in counter-clockwise order
vector<Z2i::Point> res;
//! [Hull2D-StrictPredicateCCW]
typedef PredicateFromOrientationFunctor2<Functor, false, false> StrictPredicate;
StrictPredicate predicate( functor );
//! [Hull2D-StrictPredicateCCW]
//according to the last two template arguments, neither strictly negative values, nor zeros are accepted:
//the predicate returns 'true' only for strictly positive values returned by the underlying functor.
//! [Hull2D-AndrewAlgo]
andrewConvexHullAlgorithm( pointSet.begin(), pointSet.end(), back_inserter( res ), predicate );
//! [Hull2D-AndrewAlgo]
//![Hull2D-Caliper-computeBasic]
double th = DGtal::functions::Hull2D::computeHullThickness(res.begin(), res.end(), DGtal::functions::Hull2D::HorizontalVerticalThickness);
//![Hull2D-Caliper-computeBasic]
//![Hull2D-Caliper-computeAnti]
Z2i::Point antipodalP, antipodalQ, antipodalS;
th = DGtal::functions::Hull2D::computeHullThickness(res.begin(), res.end(), DGtal::functions::Hull2D::HorizontalVerticalThickness, antipodalP, antipodalQ, antipodalS);
//![Hull2D-Caliper-computeAnti]
trace.info() <<" ConvexHull HV thickness: " << th << std::endl;
//display
Board2D board;
drawPolygon( res.begin(), res.end(), board );
//![Hull2D-Caliper-display]
board.setPenColor(DGtal::Color::Red);
board.drawCircle( antipodalS[0], antipodalS[1], 0.2) ;
board.setPenColor(DGtal::Color::Blue);
board.drawCircle(antipodalP[0], antipodalP[1], 0.2);
board.drawCircle(antipodalQ[0], antipodalQ[1], 0.2);
board.drawLine(antipodalP[0], antipodalP[1], antipodalQ[0], antipodalQ[1]);
//![Hull2D-Caliper-display]
board.saveSVG( "ConvexHullCCW.svg" );
#ifdef WITH_CAIRO
board.saveCairo("ConvexHullCCW.png", Board2D::CairoPNG);
#endif
}
{ //convex hull in counter-clockwise order with all the points lying on the edges
vector<Z2i::Point> res;
//! [Hull2D-LargePredicateCCW]
typedef PredicateFromOrientationFunctor2<Functor, false, true> LargePredicate;
LargePredicate predicate( functor );
//! [Hull2D-LargePredicateCCW]
//according to the last template argument, zeros are accepted so that
//the predicate returns 'true' for all the positive values returned by the underlying functor.
//andrew algorithm
andrewConvexHullAlgorithm( pointSet.begin(), pointSet.end(), back_inserter( res ), predicate );
//display
Board2D board;
drawPolygon( res.begin(), res.end(), board );
board.saveSVG( "ConvexHullCCWWithPointsOnEdges.svg" );
#ifdef WITH_CAIRO
board.saveCairo("ConvexHullCCWWithPointsOnEdges.png", Board2D::CairoPNG);
#endif
}
{ //convex hull in clockwise order
vector<Z2i::Point> res;
//! [Hull2D-StrictPredicateCW]
typedef PredicateFromOrientationFunctor2<Functor, true, false> StrictPredicate;
StrictPredicate predicate( functor );
//! [Hull2D-StrictPredicateCW]
//according to the last two argument template,
//the predicate returns 'true' only for strictly negative values returned by the underlying functor.
//andrew algorithm
andrewConvexHullAlgorithm( pointSet.begin(), pointSet.end(), back_inserter( res ), predicate );
//display
//.........这里部分代码省略.........
示例2: main
int main( int argc, char** argv )
{
using namespace DGtal;
using namespace DGtal::Z2i;
typedef ImageContainerBySTLVector<Domain,unsigned char> GrayLevelImage2D;
typedef ImageContainerBySTLVector<Domain,float> FloatImage2D;
typedef DistanceToMeasure<FloatImage2D> Distance;
if ( argc <= 3 ) return 1;
GrayLevelImage2D img = GenericReader<GrayLevelImage2D>::import( argv[ 1 ] );
double mass = atof( argv[ 2 ] );
double rmax = atof( argv[ 3 ] );
FloatImage2D fimg( img.domain() );
FloatImage2D::Iterator outIt = fimg.begin();
for ( GrayLevelImage2D::ConstIterator it = img.begin(), itE = img.end();
it != itE; ++it )
{
float v = ((float)*it) / 255.0;
*outIt++ = v;
}
trace.beginBlock( "Computing delta-distance." );
Distance delta( mass, fimg, rmax );
const FloatImage2D& d2 = delta.myDistance2;
trace.endBlock();
float m = 0.0f;
for ( typename Domain::ConstIterator it = d2.domain().begin(),
itE = d2.domain().end(); it != itE; ++it )
{
Point p = *it;
float v = sqrt( d2( p ) );
m = std::max( v, m );
}
GradientColorMap<float> cmap_grad( 0, m );
cmap_grad.addColor( Color( 255, 255, 255 ) );
cmap_grad.addColor( Color( 255, 255, 0 ) );
cmap_grad.addColor( Color( 255, 0, 0 ) );
cmap_grad.addColor( Color( 0, 255, 0 ) );
cmap_grad.addColor( Color( 0, 0, 255 ) );
cmap_grad.addColor( Color( 0, 0, 0 ) );
Board2D board;
board << SetMode( d2.domain().className(), "Paving" );
for ( typename Domain::ConstIterator it = d2.domain().begin(),
itE = d2.domain().end(); it != itE; ++it )
{
Point p = *it;
float v = sqrt( d2( p ) );
v = std::min( (float)m, std::max( v, 0.0f ) );
board << CustomStyle( p.className(),
new CustomColors( Color::Black, cmap_grad( v ) ) )
<< p;
RealVector grad = delta.projection( p );
board.drawLine( p[ 0 ], p[ 1 ], p[ 0 ] + grad[ 0 ], p[ 1 ] + grad[ 1 ], 0 );
}
std::cout << endl;
board.saveEPS("delta2.eps");
return 0;
}
示例3: main
int main( int argc, char** argv )
{
using namespace DGtal;
using namespace DGtal::Z2i;
typedef ImageContainerBySTLVector<Domain,unsigned char> GrayLevelImage2D;
typedef ImageContainerBySTLVector<Domain,double> DoubleImage2D;
typedef DistanceToMeasure<DoubleImage2D> Distance;
if ( argc <= 3 ) return 1;
GrayLevelImage2D img = GenericReader<GrayLevelImage2D>::import( argv[ 1 ] );
double mass = atof( argv[ 2 ] );
double rmax = atof( argv[ 3 ] );
double R = atof( argv[ 4 ] );
double r = atof( argv[ 5 ] );
double T1 = atof( argv[ 6 ] );
double T2 = atof( argv[ 7 ] );
DoubleImage2D fimg( img.domain() );
DoubleImage2D::Iterator outIt = fimg.begin();
for ( GrayLevelImage2D::ConstIterator it = img.begin(), itE = img.end();
it != itE; ++it )
{
double v = ((double)*it) / 255.0;
*outIt++ = v;
}
trace.beginBlock( "Computing delta-distance." );
Distance delta( mass, fimg, rmax );
const DoubleImage2D& d2 = delta.myDistance2;
trace.endBlock();
double m = 0.0f;
for ( typename Domain::ConstIterator it = d2.domain().begin(),
itE = d2.domain().end(); it != itE; ++it )
{
Point p = *it;
double v = sqrt( d2( p ) );
m = std::max( v, m );
}
GradientColorMap<double> cmap_grad( 0, m );
cmap_grad.addColor( Color( 255, 255, 255 ) );
cmap_grad.addColor( Color( 255, 255, 0 ) );
cmap_grad.addColor( Color( 255, 0, 0 ) );
cmap_grad.addColor( Color( 0, 255, 0 ) );
cmap_grad.addColor( Color( 0, 0, 255 ) );
cmap_grad.addColor( Color( 0, 0, 0 ) );
Board2D board;
board << SetMode( d2.domain().className(), "Paving" );
for ( typename Domain::ConstIterator it = d2.domain().begin(),
itE = d2.domain().end(); it != itE; ++it )
{
Point p = *it;
double v = sqrt( d2( p ) );
v = std::min( (double) m, std::max( v, 0.0 ) );
board << CustomStyle( p.className(),
new CustomColors( Color::Black, cmap_grad( v ) ) )
<< p;
RealVector grad = delta.projection( p );
board.drawLine( p[ 0 ], p[ 1 ], p[ 0 ] + grad[ 0 ], p[ 1 ] + grad[ 1 ], 0 );
}
std::cout << endl;
board.saveEPS("dvcm-delta2.eps");
board.clear();
trace.beginBlock( "Computing delta-VCM." );
typedef DeltaVCM< Distance > DVCM;
typedef DVCM::Matrix Matrix;
DVCM dvcm( delta, R, r );
trace.endBlock();
{
GrayLevelImage2D pm_img( dvcm.myProjectedMeasure.domain() );
DoubleImage2D::ConstIterator it = dvcm.myProjectedMeasure.begin();
DoubleImage2D::ConstIterator itE = dvcm.myProjectedMeasure.end();
GrayLevelImage2D::Iterator outIt = pm_img.begin();
for ( ; it != itE; ++it )
{
double v = std::max( 0.0, std::min( (*it) * 255.0, 255.0 ) );
*outIt++ = v;
}
GenericWriter< GrayLevelImage2D >::exportFile( "dvcm-projmeasure.pgm", pm_img );
}
typedef EigenDecomposition<2,double> LinearAlgebraTool;
typedef functors::HatPointFunction<Point,double> KernelFunction;
KernelFunction chi( 1.0, r );
// Flat zones are metallic blue, slightly curved zones are white,
// more curved zones are yellow till red.
double size = 1.0;
GradientColorMap<double> colormap( 0.0, T2 );
colormap.addColor( Color( 128, 128, 255 ) );
colormap.addColor( Color( 255, 255, 255 ) );
colormap.addColor( Color( 255, 255, 0 ) );
colormap.addColor( Color( 255, 0, 0 ) );
Matrix vcm_r, evec, null;
RealVector eval;
for ( Domain::ConstIterator it = dvcm.domain().begin(), itE = dvcm.domain().end();
it != itE; ++it )
//.........这里部分代码省略.........