add vcglib
This commit is contained in:
1 parent
6f6c0c8eb7
commit
af8100f851
1537 files changed
+634197
No files matched your search
@@ -0,0 +1,30 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
project(space_packer)
|
||||
|
||||
find_package(
|
||||
Qt5
|
||||
COMPONENTS OpenGL Svg)
|
||||
|
||||
if (TARGET Qt5::OpenGL AND TARGET Qt5::Svg)
|
||||
|
||||
if (VCG_HEADER_ONLY)
|
||||
set(SOURCES
|
||||
space_packer.cpp
|
||||
${VCG_INCLUDE_DIRS}/wrap/qt/Outline2ToQImage.cpp
|
||||
${VCG_INCLUDE_DIRS}/wrap/qt/outline2_rasterizer.cpp)
|
||||
endif()
|
||||
|
||||
add_executable(space_packer
|
||||
${SOURCES})
|
||||
|
||||
target_link_libraries(
|
||||
space_packer
|
||||
PUBLIC
|
||||
vcglib
|
||||
Qt5::OpenGL
|
||||
Qt5::Svg
|
||||
)
|
||||
else()
|
||||
message(
|
||||
STATUS "VCG examples - Skipping space_packer example")
|
||||
endif()
|
||||
@@ -0,0 +1,125 @@
|
||||
/****************************************************************************
|
||||
* VCGLib o o *
|
||||
* Visual and Computer Graphics Library o o *
|
||||
* _ O _ *
|
||||
* Copyright(C) 2004-2009 \/)\/ *
|
||||
* Visual Computing Lab /\/| *
|
||||
* ISTI - Italian National Research Council | *
|
||||
* \ *
|
||||
* All rights reserved. *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt) *
|
||||
* for more details. *
|
||||
* *
|
||||
****************************************************************************/
|
||||
#include <QtOpenGL/QtOpenGL>
|
||||
#include<vcg/space/box2.h>
|
||||
#include<vcg/space/box3.h>
|
||||
#include<vcg/math/random_generator.h>
|
||||
#include<wrap/qt/col_qt_convert.h>
|
||||
#include <vcg/space/rect_packer.h>
|
||||
#include <vcg/space/outline2_packer.h>
|
||||
#include <vcg/space/rasterized_outline2_packer.h>
|
||||
#include <vcg/complex/algorithms/outline_support.h>
|
||||
#include <wrap/qt/Outline2ToQImage.h>
|
||||
#include <wrap/qt/outline2_rasterizer.h>
|
||||
|
||||
#include <time.h>
|
||||
|
||||
using namespace vcg;
|
||||
using namespace std;
|
||||
|
||||
static void buildRandRectSet(int rectNum, vector<Box2f> &rectVec)
|
||||
{
|
||||
math::MarsenneTwisterRNG rnd;
|
||||
float exp=3.0f;
|
||||
float ratioMin=0.2;
|
||||
float ratioMax=0.9;
|
||||
float sizeMin=0.1;
|
||||
float sizeMax=1.0f;
|
||||
rnd.initialize(time(0));
|
||||
for(int i=0;i<rectNum;++i)
|
||||
{
|
||||
Box2f bb;
|
||||
float ratio=ratioMin+(ratioMax-ratioMin)*rnd.generate01();
|
||||
float size= sizeMin+(sizeMax-sizeMin)*pow((float)rnd.generate01(),exp);
|
||||
bb.min=Point2f(-size*ratio,-size);
|
||||
bb.max=Point2f( size*ratio, size);
|
||||
rectVec.push_back(bb);
|
||||
}
|
||||
}
|
||||
|
||||
int main( int /*argc*/, char **/*argv*/ )
|
||||
{
|
||||
vector<Similarity2f> trVec;
|
||||
vector<Similarity2f> trPolyVec;
|
||||
vector< vector<Point2f> > outline2Vec;
|
||||
vector< vector<Point2f> > multiPolySet;
|
||||
Point2f finalSize;
|
||||
std::vector<Point2f> finalSizeVec;
|
||||
const Point2i containerSize(1024,1024);
|
||||
Outline2Dumper::Param pp;
|
||||
std::vector<int> contInd;
|
||||
|
||||
vector<Box2f> rectVec;
|
||||
buildRandRectSet(10,rectVec);
|
||||
// RectPacker<float>::Pack(rectVec,containerSize,trVec,finalSize);
|
||||
RectPacker<float>::PackMulti(rectVec,containerSize,3,trVec,contInd,finalSizeVec);
|
||||
RectPacker<float>::Stat s = RectPacker<float>::stat();
|
||||
printf("RectPacker attempt %i time %5.3f %5.3f\n",s.pack_attempt_num,s.pack_total_time,s.pack_attempt_time);
|
||||
|
||||
// Outline2Dumper::rectSetToPolySet(rectVec,polySet);
|
||||
|
||||
// Outline2Dumper::multiRectSetToSinglePolySet(rectVec,trVec,contInd,0,polySet,trPolyVec);
|
||||
// Outline2Dumper::dumpPolySetPNG("testpolyEq0.png",polySet,trPolyVec,pp);
|
||||
// Outline2Dumper::multiRectSetToSinglePolySet(rectVec,trVec,contInd,1,polySet,trPolyVec);
|
||||
// Outline2Dumper::dumpPolySetPNG("testpolyEq1.png",polySet,trPolyVec,pp);
|
||||
// Outline2Dumper::multiRectSetToSinglePolySet(rectVec,trVec,contInd,2,polySet,trPolyVec);
|
||||
// Outline2Dumper::dumpPolySetPNG("testpolyEq2.png",polySet,trPolyVec,pp);
|
||||
|
||||
|
||||
// buildRandPolySet(100,polySet);
|
||||
// PolyPacker<float>::PackMultiAsObjectOrientedRect(polySet,containerSize,3,trVec,contInd,finalSizeVec);
|
||||
|
||||
// Outline2Dumper::multiPolySetToSinglePolySet(polySet,trVec,contInd,0,multiPolySet,trPolyVec);
|
||||
// Outline2Dumper::dumpPolySetPNG("testpolyEq0.png",multiPolySet,trPolyVec,pp);
|
||||
|
||||
// Outline2Dumper::multiPolySetToSinglePolySet(polySet,trVec,contInd,1,multiPolySet,trPolyVec);
|
||||
// Outline2Dumper::dumpPolySetPNG("testpolyEq1.png",multiPolySet,trPolyVec,pp);
|
||||
|
||||
// Outline2Dumper::multiPolySetToSinglePolySet(polySet,trVec,contInd,2,multiPolySet,trPolyVec);
|
||||
// Outline2Dumper::dumpPolySetPNG("testpolyEq2.png",multiPolySet,trPolyVec,pp);
|
||||
|
||||
// Outline2Dumper::dumpPolySetPNG("testpolyOO.png",polySet,trVec,pp);
|
||||
|
||||
vcg::tri::OutlineUtil<float>::BuildRandomOutlineVec(25,outline2Vec);
|
||||
|
||||
PolyPacker<float>::PackAsEqualSquares(outline2Vec,containerSize,trVec,finalSize);
|
||||
Outline2Dumper::dumpOutline2VecPNG("testpolyEq.png",outline2Vec,trVec,pp);
|
||||
|
||||
PolyPacker<float>::PackAsAxisAlignedRect(outline2Vec,containerSize,trVec,finalSize);
|
||||
Outline2Dumper::dumpOutline2VecPNG("testpolyAA.png",outline2Vec,trVec,pp);
|
||||
|
||||
PolyPacker<float>::PackAsObjectOrientedRect(outline2Vec,containerSize,trVec,finalSize);
|
||||
Outline2Dumper::dumpOutline2VecPNG("testpolyOO.png",outline2Vec,trVec,pp);
|
||||
|
||||
RasterizedOutline2Packer<float, QtOutline2Rasterizer>::Parameters packingParam;
|
||||
|
||||
packingParam.costFunction = RasterizedOutline2Packer<float, QtOutline2Rasterizer>::Parameters::LowestHorizon;
|
||||
packingParam.doubleHorizon = true;
|
||||
packingParam.rotationNum = 16; //number of rasterizations in 90°
|
||||
|
||||
RasterizedOutline2Packer<float, QtOutline2Rasterizer>::Pack(outline2Vec,containerSize,trVec,packingParam);
|
||||
Outline2Dumper::dumpOutline2VecPNG("testpolyRR.png",outline2Vec,trVec,pp);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
include(../common.pri)
|
||||
TARGET = space_packer
|
||||
SOURCES += space_packer.cpp \
|
||||
../../../../vcglib/wrap/qt/Outline2ToQImage.cpp \
|
||||
../../../../vcglib/wrap/qt/outline2_rasterizer.cpp
|
||||
QT += opengl svg
|
||||
Reference in new issue
Block a user