ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... ·...

16
1 ﻓﻬﺮﺳﺖ ﻣﻄﺎﻟﺐ۱ ( LEDA ۲ - ۱ ( ﻧﺼﺐCGAL ۲ - ۲ ( ﻧﻤﻮﻧﻪ ﮐﺪCGAL ۲ ( CGAL ۲ - ۱ ( ﻧﺼﺐCGAL ۲ - ۲ ( ﻧﻤﻮﻧﻪ ﮐﺪCGAL ﺑﻪ ﻧﺎﻡ ﺧﺪﺍ ﻋﻨﻮﺍﻥ: ﺷﺮﻭﻉ ﺑﻪ ﮐﺎﺭ ﺑﺎ ﮐﺘﺎﺑﺨﺎﻧﻪ ﻫﺎﯼ ﻫﻨﺪﺳﯽLEDA CGAL ﺩﺍﻧﺸﮕﺎﻩ ﺻﻨﻌﺘﯽ ﺷﺮﻳﻒ ﺗﻨﻈﻴﻢ: ﻓﺮﺯﺍﻧﻪ ﻏﻴﻮﺭ) ﻫﻨﺪﺳﻪ ﻣﺤﺎﺳﺒﺎﺗﯽ ﺑﻬﺎﺭ۹۰ (

Upload: others

Post on 15-Mar-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

1

فهرست مطالب

۱( LEDA

CGALنصب ) ۲-۱

CGAL نمونه کد) ۲-۲

۲( CGAL

CGALنصب ) ۲-۱

CGAL نمونه کد) ۲-۲

به نام خدا

دانشگاه صنعتی شريف CGALو LEDAهای هندسی کتابخانه شروع به کار با : عنوان

) ۹۰بهار –هندسه محاسباتی ( فرزانه غيور: تنظيم

Page 2: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

2

۱( LEDA

LEDAنصب )۱-۱

LEDA نسخه ولی. صب و استفاده از آن آسان استکتابخانه هندسی است که نfree ه ساختارهای ساده آن تنها داد

.شودرا شامل می

LEDA زا free هخسن دولناد یارب(١شوددر ويندوز به راحتی با اجرای برنامه نصب کننده آن انجام می LEDAنصب

پس از نصب بايستی . )دينک هعجارم solutions.com/leda/ledak/index.htm-http://www.algorithmic هب

.وارد کنيد Visual Studioلازم را در تنظيمات مسيرهای

را انتخاب propertiesکليک راست کرده و ی پروژه بر رو solution explorerدر قسمت Visual Studio در پروژه

. کنيد

١ زا دولناد یارب .شودآنها نيز ارائه مي لينك دانلود. گنجانده شده CGAL-LEDAدر آرشيو ) VSبه جز (امي نرم افزارهاي مورد نيازمت

egrofecruos سردآ هب http://www.iranrobocup.com/sourceforge/ دينک هعجارم.

Page 3: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

3

.برويدConfiguration Properties -> C/C++ -> Generalبه

.را اضافه کنيد LEDA>\incl>مسير Additional include directoriesبه

Page 4: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

4

.را اضافه کنيد <LEDA>مسير Additional library directoriesبه Linker->Generalدر قسمت

.اضافه کنيد preprocessor Definitionsرا به LEDA_DLL;عبارت C/C++->Preprocessorدر قسمت

Page 5: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

5

Additionalرا به leda_mdd.libو libGeoW_mdd_dll.libنام فايل های Linker->Inputدر قسمت

Dependencies اضافه کنيد

و releaseبرای تنظيمات MD/(ب کنيد ارا انتخ Runtime Libraryبايد , C\C++->Code Generationدر قسمت

/MDd برای تنظيماتdebug (

binروش ديگر کپی آن در پوشه .( پروژه قرار دارد کپی کنيد exe.را در مسيری که فايل leda_mdd.dllفايل

.کامپايلر است

.يکبار انجام دهيد و در دفعات بعدی از کپی آن استفاده کنيد Projectتوانيد اين تنظيمات را برای يک می

Page 6: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

6

LEDAنمونه کد )۱-۲

#include <LEDA/graphics/window.h>

using namespace leda;

void main(){

window W;

int inputK=20;

W.int_item("input k",inputK,1,20,1,"input K");

W.set_bg_color(blue);

W.set_color(red);

W.display(window::center,window::center);

polygon t;

W.clear();

while(W>>t){

W.draw_filled_polygon(t,green);

}

}

تعدادی چند ضلعی از ورودی دريافت و بر روی , بينيد که در يک پنجرهرا می LEDAدر اين جا يک برنامه ساده با

.کندصفحه رسم می

Page 7: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

7

۲( CGAL

CGALنصب )۲-۱

متن باز است ولی CGAL .شودبيان مي Visual Studioبه همراه CGALچگونگي نصب و استفاده از قسمتدر اين

:٢فزارها نياز داريدابراي اين منظور به اين نرم .نيست LEDAنصب و استفاده از آن به سادگی

۱( Visual Studio

۲( CMake

۳( Boost

۴( CGAL

CMakeنصب )۲-۱-۱

CMake توانيد از آدرسرا میx86.exe-win32-2.8.4-http://www.cmake.org/files/v2.8/cmake دانلود

را Add CMake to the system PATH for all usersتوجه کنيد که حتما گزينه CMakeدر هنگام نصب . کنيد

.کنيدانتخاب

٢ .مراجعه شود [1]به CGALبه همراه QTبرای استفاده از .دهيمرا توضيح می QTبدون CGALدر اين مستند نصب

Page 8: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

8

Boostنصب )۲-۱-۲

onlineتوانيد از روش دسترسی داريد می VPNاگر به . وجود دارد offlineو onlineدو روش Boostبرای نصب

.استفاده کنيد که بسيار ساده تر است

توانيد از را می Boostفايل نصب : onlineنصب

http://www.boostpro.com/download/boost_1_44_setup.exe درهنگام نصب نسخه . دانلود کنيدVisual

Studio گزينه های . خود را انتخاب کنيدMultithreaded را نيز انتخاب کنيد .

Page 9: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

9

.را نيز حتما انتخاب کنيد ”Add to Path“هم چنين گزينه

: offlineنصب

.را در آن کپی و از حالت فشرده خارج کنيد boost_1_46_1.zip د کرده و فايلرا ايجا c:\boostپوشه

(cd c:\boost\boost_1_46_1)برويدc:\boost\boost_1_46_1 به پوشه (Start->run->cmd)در خط فرمان

دو دستور زير را به ترتيب اجرا کنيدسپس

Boosttrap

.\bjam --toolset=msvc address-model=64 --build-type=complete --stagedir=stage64 --with-

thread --with-date_time stage

.را از دستور بالا حذف کنيد address-model=64بيتی است ۳۲در صورتی که سيستم شما

Page 10: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

10

CGALنصب )۲-۱-۳

تنها در قسمت . مناسب است CGALتنظيمات پيش فرض برای نصب .باشيد onlineنيز بايد CGALهنگام نصب

Setting Environment Variables گزينهAll Users را انتخاب کنيد.

.سيستم اضافه کنيد PATHرا به CGAL>\auxiliary\gmp\lib>حال بايد مسير

Page 11: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

11

: Windows 7در PATHبرای اصلاح

.را انتخاب کنيد Propertiesکليک راست کرده و ) Startاز منوی ( Computerبر روی )۱

۲( Advanced System Settings را انتخاب کنيد.

۳( Environment Variable را انتخاب کنيد.

.را انتخاب و تغييرات لازم را اعمال کنيد PATHدر قسمت مربوط )۴

:Windows XPدر PATHاصلاح

۱( Start->Control Panel-> System->Advanced

را پيدا و تغييرات لازم را اعمال PATHکليک کرده و در قسمت مربوط Environment Variablesبر روی )۲

.کنيد

Page 12: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

12

) run as administrator( را اجرا کنيد CMakeبرای اين منظور . را کامپايل کنيد CGALحال بايد

را CGALمسير نصب ”"Where to build the binaries"“و ”Where is the source code“برای هر دو قسمت

.وارد کنيد

Page 13: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

13

هم .را وارد کنيد) بدون تيک( Falseبا مقدار WITH_CGAL_Qt4کليک کرده و عبارت Add Entryبر روی

٣.همين کار را تکرار کنيد WITH_CGAL_Qt3چنين برای عبارت و

.کليک کنيد Configureبر روی

.را انتخاب کنيد VSنسخه

٣لازم به تنظيم اين متغيرها , هستيد CGALبه همراه Qtدر صورتی که مايل به استفاده از . است Qtبدون CGALاين روش برای نصب

)است Qtنصب به همراه , پيش فرض(نيست

Page 14: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

14

.را انتخاب کنيد Configure ,Generateبعد از اتمام موفقيت آميز

Solution ای به نامCGAL با . شوددر پوشه ايجاد میVS آن را کامپايل کنيد.

Visual Studioتنظيمات )۲-۱-۴

.برويدTools -> Options -> Projects and Solutions -> VC++ Directories به VSدر

:مسيرهای زير را اضافه کنيد includeدر قسمت

<Boost> (C:\Program Files\boost\boost_1_44)

<CGAL>\include (C:\Program Files\CGAL-3.7\include)

<CGAL>\auxiliary\gmp\include (C:\Program Files\CGAL-3.7\auxiliary\gmp\include)

- در آن نصب شده را قرار دهيد و همين طور برای ديگر نرم boostمسيری است که <Boost> دقت کنيد که به جای

.افزارها

Page 15: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

15

:مسيرها را اضافه کنيد ناي libraryدر قسمت

<CGAL>\lib (C:\Program Files\CGAL-3.7\lib)

<Boost>\lib (C:\Program Files\boost\boost_1_44\lib)

<CGAL>\auxiliary\gmp\lib (C:\Program Files\CGAL-3.7\auxiliary\gmp\lib)

نمونه برنامه )۲-۲

آورده شده که مختصات تعدادی نقطه را از فايل دريافت کرده و مثلث بندی CGALای با استفاده از برنامه در اينجا

.گردانددلونی آنها محاسبه می کند و به عنوان خروجی تعداد نقاط را برمی

#include <CGAL/Triangulation_vertex_base_with_info_2.h>

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>

#include <CGAL/Triangulation_2.h>

#include <CGAL/Triangulation_euclidean_traits_xy_3.h>

#include <CGAL/Delaunay_triangulation_2.h>

#include <CGAL/Triangulation_hierarchy_2.h>

#include <vector>

#include <fstream>

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>

#include <CGAL/Delaunay_triangulation_2.h>

#include <CGAL/Triangulation_hierarchy_2.h>

#include <CGAL/point_generators_2.h>

#include <CGAL/algorithm.h>

#include <cassert>

using namespace std;

using namespace CGAL;

typedef CGAL::Exact_predicates_inexact_constructions_kernel K;

typedef CGAL::Triangulation_vertex_base_with_info_2<int,K> Vbb;

typedef CGAL::Triangulation_hierarchy_vertex_base_2<Vbb> Vb;

typedef CGAL::Triangulation_face_base_2<K> Fb;

typedef CGAL::Triangulation_data_structure_2<Vb,Fb> Tds;

typedef CGAL::Delaunay_triangulation_2<K,Tds> Dt;

typedef CGAL::Triangulation_hierarchy_2<Dt> Triangulation;

typedef Triangulation::Point Point;

typedef Triangulation::Vertex_handle Vertex_handle;

typedef Triangulation::Finite_faces_iterator Finite_faces_iterator;

typedef Triangulation::Face_handle Face_handle;

int main()

{

std::ifstream in("terrain.txt");

Triangulation dt;

float x,y;

Page 16: ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ - Sharifce.sharif.edu/courses/89-90/2/ce735-1/resources/root/... · 2020. 9. 7. · 1 ﺐﻟﺎﻄﻣ ﺖﺳﺮﻬﻓ leda (۱ cgal ﺐﺼﻧ (۱-۲

16

bool first=true;

while(in>>x>>y){

Point tempP(x,y);

dt.insert(tempP);

}

std::cout << dt.number_of_vertices() << std::endl;

return 0;

}

های مناسب است و پس از آن اعمال هندسی با templateقسمت اصلی کار تشخيص .شودهمان طور که مشاهده می

.به راحتی قابل انجام هستند CGALاستفاده از توابع تعريف شده

.است log(n)استفاده شده که عمليات جستجو در آن از مرتبه Delaunay_hierarchyدر برنامه بالا از قالب

.شوند نيز راهنمای مناسبی استارائه می CGALبه همراه exampleنمونه برنامه هايی که در پوشه

مراجع و منابع

[1] http://acg.cs.tau.ac.il/cgal-at-tau/installing-cgal-and-related-programs-on-windows

[2] http://www.boost.org/doc/libs/1_46_1/more/getting_started/windows.html

[3] http://www.algorithmic-solutions.info/free/d1.php3