📄 geowin_genpoly.c
字号:
#include <LEDA/geowin.h>#include <LEDA/plane_alg.h>static void f_unite( const list<rat_gen_polygon>& Lin, rat_gen_polygon& Lout){ if( Lin.length() < 2 ) return; rat_gen_polygon p1=Lin[Lin[0]]; rat_gen_polygon p2=Lin[Lin[1]]; Lout =p1.unite(p2);}static void f_intersec( const list<rat_gen_polygon>& Lin, rat_gen_polygon& Lout){ if( Lin.length() < 2 ) return; rat_gen_polygon p1=Lin[Lin[0]]; rat_gen_polygon p2=Lin[Lin[1]]; Lout=p1.intersection(p2);}static void f_diff( const list<rat_gen_polygon>& Lin, rat_gen_polygon& Lout){ if( Lin.length() < 2 ) return; rat_gen_polygon p1=Lin[Lin[0]]; rat_gen_polygon p2=Lin[Lin[1]]; Lout=p1.diff(p2);}static void f_sym_diff( const list<rat_gen_polygon>& Lin, rat_gen_polygon& Lout){ if( Lin.length() < 2 ) return; rat_gen_polygon p1=Lin[Lin[0]]; rat_gen_polygon p2=Lin[Lin[1]]; Lout=p1.sym_diff(p2);}int main(){ GeoWin GW("Boolean operations on generalized polygons"); list<rat_gen_polygon> L; geo_scene input = geowin_new_scene(GW, L); GW.set_fill_color(input, invisible); geowin_update<list<rat_gen_polygon>, list<rat_gen_polygon> > Unite(f_unite); geowin_update<list<rat_gen_polygon>, list<rat_gen_polygon> > Inter(f_intersec); geowin_update<list<rat_gen_polygon>, list<rat_gen_polygon> > Diff(f_diff); geowin_update<list<rat_gen_polygon>, list<rat_gen_polygon> > SymDiff(f_sym_diff); geo_scene output1= geowin_new_scene(GW, Unite,input,"Union"); GW.set_color( output1, blue ); GW.set_color2( output1, blue ); GW.set_fill_color( output1, green); geo_scene output2= geowin_new_scene(GW, Inter,input, "Intersection"); GW.set_color( output2, blue ); GW.set_color2( output2, blue ); GW.set_fill_color( output2, blue); geo_scene output3= geowin_new_scene(GW, Diff,input, "Difference"); GW.set_color( output3, violet ); GW.set_color2( output3, violet ); GW.set_fill_color( output3, violet); geo_scene output4= geowin_new_scene(GW, SymDiff,input, "SymDiff"); GW.set_color( output4, violet ); GW.set_color2( output4, violet ); GW.set_fill_color( output4, violet); GW.set_all_visible(true); GW.edit(input); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -