This action might not be possible to undo. Are you sure you want to continue?

subject wise. Here we have many books for each subject. But by experience we are going to give one book for each subject/topic. Our intention is not to say other books are not recommended, but we are recommending these. We took old question papers analysis, and depending on that we give preference to each. Paper-I 1. Material Science and Components: Book: Material Science by Indulkar. All over one book is sufficient for this Material science subject as marks coming are less. Even we can leave this subject for Descriptive paper. For objective: They decreased importance of this subject from last years. So, we can expect around 10 to 12 questions from this area. 200 4 20 2005 2006 2007 2008 2009 19 14 16 7 10

For Descriptive: For this also they decreased importance from past years. We can expect around 25 marks from this area. 2004 40 2005 60 2006 25 2007 25 2008 15

2. Physical Electronics, Electronic Devices and ICs: Books: Theory from Milliman & Halkies Black Pad, and Problems from Sedra & Smith. For Integrated Circuits (ICs)- Pucknell. For Objective: By seeing below we can expect around 20 marks. 200 4 19 2005 2006 2007 2008 2009 25 24 23 24 20

For Descriptive: By seeing below table we can say that, importance for ICs is increasing and EDC part is decreasing. At any cost we have to study this subject for Descriptive. 2004 60 10 2005 50 10 2006 85 10 2007 25 40 2008 25 40

EDC Ics

1. Signals & Systems:

Books: Oppenheim for both theory and problems. This is the only book sufficient for this subject. For Objective: By seeing the following table we can expect around 20 questions from this subject. 200 4 24 2005 2006 2007 2008 2009 21 18 19 20 20

For Descriptive: By seeing the following table we can say that, importance is increasing. So, we should not leave this subject. 2004 0 2005 35 2006 10 2007 40 2008 80

2. Network Theory:

Books: Hayt & Kemmerly for topics like KCL,KVL, Nodal, Mesh, 1st order and 2nd order transients. Van Valkenberg for topics Two port parameters, Laplace Transform Techniques, Chakravarthi for topics Theorems, Mutual Inductance, Graph Theory etc., For Objective: By seeing the following table we can expect 25 to 30 questions. 200 4 19 2005 2006 2007 2008 2009 19 18 20 28 25

For Descriptive: As importance is varying between 40 to 80 marks, we should not leave this subject also. As this is completely problematic subject, we need to practice a lot. Else we may do silly mistakes and may lose more marks. 2004 85 2005 40 2006 40 2007 80 2008 40

3. Electro Magnetic Theory:

Books: Sadique for Electric and Magnetic Fields for both theory and problems, Jordan & Ballman for Transmission lines for problems and theory also. Antennas K D Prasad. As formulae is only important here. Formulae like Power Equation, Standing Wave Equn, Reflection, Aperture, Lengh of Antennas, Radiation Resistance, Power Radiated ,Antenna Arrays are important.

Measurements subjects are more important. Paper –II 1. So. Most of the questions are from Electronic Measurements only. By observing below table we can say Electronic Measurements are more important than Electrical Measurements. Signals & Systems. they give more formulae based questions. 200 4 20 2005 2006 2007 2008 2009 19 22 27 14 18 For Descriptive: Fields are not much important. For Objective: Around 20 questions we can expect. 200 4 18 2005 2006 2007 2008 2009 18 20 20 21 20 For Descriptive: This subject is very important and at any cost we should not leave this subject. we should study each subject for Objective and EDC & ICs. we can directly solve problems and leave theory also. Analog Electronic Circuits: More problems will come compared to theory. Electrical Measurements and Instrumentation: Books: A K Sawhney is enough. Milliman & Halkies yellow pad need not be studied.For Objective: We can expect 18 to 25 questions from this area. Even we can leave this subject completely for Descriptive except Transmission lines. But transmission lines are important. Network Theory. As subject is problematic and they are not allowing calculator means. Fieds Transmission Lines Antennas 10 25 10 0 40 0 0 40 0 30 10 0 0 0 0 4. Books: Sedra & Smith or Boylsted for Problems. 2004 Electrical Measurements Electronic Measurements 10 30 2005 25 15 2006 15 25 2007 25 15 2008 15 65 By observing all the subjects in Paper-I. .

2004 21 25 2005 18 25 2006 8 28 2007 20 36 2008 14 31 Combo Sequential 3. 200 4 23 2005 2006 2007 2008 2009 21 22 20 20 19 For Descriptive: As number of marks coming from this area is considerable. We should read this subject.theory. Digital Electronics: Books: Morris Mano for Combinational Logic for theory. we can say that Sequential is more important than Combinational logic. 200 4 21 2005 2006 2007 2008 2009 21 19 20 22 23 Descriptive: Compared to Frequency domain. Even reduction by prime implicants method also can be prepared from this book. we should practice this subject a lot. 200 4 19 2005 2006 2007 2008 2009 20 21 22 18 20 Descriptive: By seeing the following table. R P Jain for problems. .For Objective: We can expect around 20 questions from this area. At any cost we have to practice a lot in Sequential logic. Objective: We can expect 20 to 25 questions this year. Time domain is more important. Objective: We can expect around 20 questions from this. Control Systems: Books: Nagrath & Gopal for Theory Nagoorkani or Jayrath or B S Manke for Problems. 2004 66 2005 60 2006 66 2007 40 2008 66 2. Kohavi for Sequential Logic .

But for Satellite and Optical. For Digital Communication Problems: Sklar Objective: We can expect 20 to 30 questions from this area. Microwave: Book: Kulkarney. . we can expect repetitive questions/important questions only.Time Domain Frequency Domain 2004 30 18 2005 40 0 2006 30 18 2007 38 10 2008 40 8 4. Computer Engineering and Microprocessors: Books: Goankar and B Ram for Microprocessors V Rajaraman for Computer Engineering. Communication Systems: Books: Simen & Haykin for Theory and either Schaums Series or Kennedy for Problems. 2004 18 0 30 8 2005 0 20 15 0 2006 8 30 30 8 2007 10 26 0 20 2008 15 10 23 10 Analog Digital Satellite Optical 5. 200 4 22 2005 2006 2007 2008 2009 24 28 13 28 23 For Descriptive: All parts are important only. 2004 Microwave Engineering 46 2005 55 2006 43 2007 38 2008 41 6. we can leave this subject as basically it’s a dry subject and hard to get interest into this. 200 4 18 2005 2006 2007 2008 2009 16 10 19 18 18 Descriptive: Here though marks coming from this area is considerable. We should study this subject. Objective: We can expect 15 to 18 questions from this area.

Digital Electronics. Halkias (BLOCK PAD) For IES aspirants above book is enough.Jacob Millman & Christos C. Solid State Electronic Devices by Ben Streetman This book is little bit tougher than First book if you understands streatman book your EDC is over 3) ANALOG circuits If you are good in network theory and EDC then this is very easy subject for you. if you are perfect in this subject your 20 percent preparation is over. Donot forget to read complete instruction set at the end of Goankar.Objective: We can expect 10 to 20 questions from this area. Halkias (YELLOW PAD) 2. Preparation tips for Engineering Services Exam Books and some small suggetions for GATE and IES by ramchander. 2010 3:32 pm 1) NETWORK THEORY This is the most important and basic subject for any one. 200 4 18 2005 2006 2007 2008 2009 16 10 19 18 18 Descriptive: 2004 Computer Engineering Micro processor 25 33 2005 48 0 2006 26 20 2007 18 20 2008 43 0 All over we can say that. pulse and digital circuits by Jacob Miliman and taub's (White pad) 3. later solve chapter wise alternate problems which have answers. Electronic Devices and Circuits & Analog Electronics-. (but takes time to complete the book) 4) EMT . Posted by Institute of Engineering Studies (IES) at 5:11 AM Labels: IES Preparation ECE/TCE. 1)Engineering Circuit Analysis -->Hayt first read above book and solve both solved and unsolved example problems. for Synthesis and graphs fallow other books 2) EDC 1. For IES aspirants above book will not cover total syllabus. and Communications for Descriptive paper.com » Thu Jul 15.Jacob Millman & Christos C. but this have huge syllabus 1. linear integrated circuits by roy chowdhury (for OPAMPS) For GATE aspirants i will prefer sedra and smith book it is very good book. Electronic Devices and Circuits & Analog Electronics-.iitb@gmail. Control Systems. for GATE aspirants above book is not sufficient 2. we should prepare Analog Electronics.

kohavi for other topics many good books are there but i prefers 2)Sequential circiuts .S.C. and commonly ECE students makes mistake they neglects coordinate and Basics in electrostatics and magnetics. Programming & Application --> Ramesh S. with problems solving not only useful for getting good ranks and also it will improves your subject knowledge also . Gaonkar (This is the best book for 8085) 6) Signals and Systems 1) Signal and System --> Oppenheim and Willsky Read above book and solve example problems and also solve chapter wise basic prolems 2) Communication System by Simon Haykins 2nd edition (2nd edition is good for signals and system also) This book for random process topic 7) Communications 1) Communication System by Simon Haykins 2nd edition Read this book and try to solve back problems (even though u r unable to solve problems no problem take solutions and look the solutions it will give idea how to solve the problems ) For IES aspirants solving back problems not required .RPJAIN 3) Remaining topics MORIS mano and RPJAIN 4)Microprocessor Architecture. Grewal Read this book and solve only Example problems no need to solve exercise problem (if you are interested then it is good) And finally every one knows reading books is only not enough to get good ranks but problems practicing is also most important. Dr. Kuo ( i prefers this book) 2) Nagrath and gopal book is also very good book 9)MATHS 1) Higher Engineering Mathematics. fallow this book very well and solve all solved and unsolved example problems read from starting for antenna basics also this book is enough 5)Digital 1)Boolean algebra and number system .B. but GATE aspirants it is required and above book is good for Signals and System also 8)Control System 1) Automatic Control System -->B.Every student will feel it is very tough. my feel is that if you are good in above topics rest of the EMT you can understands easily 1) Elements of Electromagnetics --> Sadiku It is very good book.

com Posts: 2 Joined: Wed Jul 07. Thank you very much E Ramchandar Reddy Design Engineer ramchander. But one thing when you starts reading any book first love that book then start read I will post other subjects (IES) books later.iitb@gmail. 2010 3:19 pm Following are number of questions expected for GATE 2011: For ECE Branch*: 1mark 2mark Subject Questions Questions %Weightage Mathematics 3 2 7 Network Analysis 3 3 9 EDC 4 2 8 Analog Electronics 3 4 11 Digital Electronics 1 4 9 Signals & Systems 3 3 9 Control Systems 3 4 11 Communications Electro Magnetic Theory Microprocessor 2 5 12 2 1 2 1 6 3 .for problems solving i will suggest 1) All shyam series books 2) RK KANODIA book (This is the most important) above books are my suggestions only because i fallowed when i was prepared for GATE . if you are comfortable with some other books fallow those books only .

The person who smokes Pall Mall rears birds. of Questions 5 30 5 35 15 100 ALBERT EINSTEIN'S RIDDLE ARE YOU IN THE TOP 2% OF INTELLIGENT PEOPLE IN THE WORLD? SOLVE THE RIDDLE AND FIND OUT. 15. The man who smokes Blends lives next to the one who keeps cats. Milk. just pure logic. Blend. 6. first letter of beverage. 8. first letter of pet Example : White. The owner of the Yellow house smokes Dunhill. In each house lives a person of different nationality 3. 14. 13. 11. The man living in the center house drinks milk. The Swedish man keeps dogs as pets. The man who keeps horses lives next to the man who smokes Dunhill. right side to someone who is facing the white house) 5. The Danish man drinks tea.com/account/logout Navigation: Up Table of Contents Package Overview Bibliography Index Title Acknowledging CGAL Chapter 2D Minkowski Sums Ron Wein 24 . The British man lives in a red house. 2. so good luck and don't give up. THE QUESTION: WHO OWNS THE FISH? HINTS 1. 7. The man who smokes Blue Master drinks beer. ALBERT EINSTEIN WROTE THIS RIDDLE EARLY DURING THE 19th CENTURY. first letter of smoke.first letter of nationality. Cat Password: wgmbc http://www. 9. 3. 1. painted five different colours. The Norwegian lives in the first house. 2. Submit your answers as a comment in the following format: first letter of color. 4. 12. These five homeowners each drink a different kind of beverage. There are no tricks. 10. The Green house is next to. German. The Blends smoker lives next to the one who drinks water. and on the left of the White house.Aptitude & Verbal Total No. In a street there are five houses. smoke different brand of cigar and keep a different pet. The owner of the Green house drinks coffee.(with respect to house. The Norwegian lives next to the blue house.lumosity. HE SAID THAT 98% OF THE WORLD POPULATION WOULD NOT BE ABLE TO SOLVE IT. The German smokes Prince.

their edges are already sorted by the angle they form with the x-axis.2 Computing the Exact Offset 24. denoted by A ⊕ B.2 Decomposition Strategies 24. 24. Introduction 1 24.Table of Contents 24.3 Computing Inner Offsets 24.1 Introduction Given two sets A.2. is the set { a + b | a ∈ A. their Minkowski sum. Offsetting a Polygon 3 24.2 Computing the Minkowski Sum of Two Polygons Computing the Minkowski sum of two convex polygons P and Q with m and n vertices respectively is very easy. and these edges are sorted by the angle they form with the x-axis.1 Approximating the Offset with a Guaranteed Error-Bound 24.B ∈ ℝd. Minkowski sums are used in many applications. Computing the Minkowski Sum of Two Polygons 2 24.3. This package contains functions for computing planar Minkowski sums of two polygons (namely A and B are two closed polygons inℝ2).3. as P ⊕ Q is a convex polygon bounded by copies of the m + nedges.2. by starting from two bottommost vertices in P and in Q and performing ``merge sort'' on the edges. such as motion planning and computer-aided design and manufacturing.1 Computing Minkowski Sum using Convolutions 24. The Minkowski sum can therefore be computed in O(m + n) time. b ∈ B }. . and for a polygon and a disc (an operation also known as offsetting or dilating a polygon). As the two input polygons are convex.3.

e. is a collection of line segments of the form [pi + qj. The Minkowski sum of the two polygons is shaded. We assume that both P and Q have positive orientations (i. qn-1 ). … . denoted P * Q. The convolution of these two polygons [GRS83]. pi+1 + qj]. and 1 2 . it is possible to use one of the following approaches: Decomposition: We decompose P and Q into convex sub-polygons. namely we obtain two sets of convex polygons P1. … . Convolution: Let us denote the vertices of the input polygons by P = ( p0. This approach relies on a decomposition strategy that computes the convex decomposition of the input polygons and its performance depends on the quality of the decomposition.Figure 24. … . where the vector pi pi+1 lies between qj-1 qj and qj qj+1. … .1: Computing the convolution of a convex polygon and a nonconvex polygon (left). drawn as a sequence of arrows (right). pm1 ) and Q = ( q0. Pk and Q1. If the polygons are not convex. Qℓ such that ∪i 1 k = and ∪i = jℓQj = Q. their boundaries wind in a counterclockwise order around their interiors) and compute the convolution of the two polygon boundaries. We then calculate the pairwise sums Sij = Pi ⊕ Qj using the simple procedure described above. The winding number associated with each face of the arrangement induced by the segments forming the cycle appears in dashed circles. The convolution consists of a single self-intersecting cycle. and compute the Pi = P union P ⊕ Q = ∪ijSij.

1.2. and its polygonal holes are given by the range [S. The segments of the convolution form a number of closed (not necessarily simple) polygonal curves called convolution cycles. See Figure 24.1 for an illustration. S is therefore an instance of the Polygon_with_holes_2<Kernel. . As both approaches construct the arrangement of these segments and extract the sum from this arrangement.symmetrically . where the vector qj qj+1 lies between pi-1 pi and pi pi+1.outer_boundary(). The Minkowski sum P ⊕ Q is the set of points having a non-zero winding number with respect to the cycles of P * Q.holes_begin(). Q) accepts two simple polygons P and Q.Container> class-template. their Minkowski sum may not be simply connected and contain polygonal holes.Container> class-template and uses the convolution method in order to compute and return their Minkowski sum S = P ⊕ Q.1 Computing Minkowski Sum using Convolutions The function minkowski_sum_2 (P.number_of_holes() holes in its interior). defined in the Boolean Set-Operations package: The outer boundary of S is a polygon that can be accessed usingS. 3 The number of segments in the convolution of two polygons is usually smaller than the number of segments that constitute the boundaries of the sub-sums Sij when using the decomposition approach. see for example Figure 24. S.of segments of the form [pi + qj. computing Minkowski sum using the convolution approach usually generates a smaller intermediate arrangement. represented using the Polygon_2<Kernel. hence it is faster and consumes less space. 24. As the input polygons may not be convex.holes_end()) (where S contains S. pi + qj+1].

P.push_back (Point_2 (2. int main () { // Construct the first polygon (a triangle). Q. Q). Polygon_with_holes_2 sum = minkowski_sum_2 (P. Q. Polygon_2 P.push_back (Point_2 (6. The file print_util. std::cout << "P = ". The result in this case is a convex hexagon. 0)). // Construct the second polygon (a triangle). print_polygon (Q).push_back (Point_2 (0. 5)). 0)).cpp #include #include #include #include "ms_rational_nt. std::cout << "P (+) Q = ".h includes auxiliary functions for printing polygons. Q. std::cout << "Q = ". This program. as other example programs in this chapter. } . P. Polygon_with_holes_2. return (0). The following example program constructs the Minkowski sum of two triangles. CGAL_assertion (sum. as depicted in Figure 24.outer_boundary()). -2)).push_back (Point_2 (3. Polygon_2. 2)).push_back (Point_2 (0.2.number_of_holes() == 0).cpp.push_back (Point_2 (2.h which defines Number_type as either Gmpq or Quotient<MP_Float>. // Compute the Minkowski sum.Figure 24. File: examples/Minkowski_sum_2/sum_triangles.2: Computing the Minkowski sum of two triangles. Polygon_2 Q. as done in the example program Minkowski_sum_2/sum_triangles. print_polygon (P).h" typedef typedef typedef typedef CGAL::Cartesian<Number_type> Kernel::Point_2 CGAL::Polygon_2<Kernel> CGAL::Polygon_with_holes_2<Kernel> Kernel. includes the auxiliary header file ms_rational_nt. P.h" <CGAL/Cartesian. 0)). Point_2.h> <iostream> #include "print_utils. depending on whether theGMP library is installed or not. print_polygon (sum.h> <CGAL/minkowski_sum_2.

h" struct {}.cpp andMinkowski_sum_2/sum_by_dec omposition. typedef Kernel::Point_2 typedef CGAL::Polygon_2<Kernel> .3: Computing the Minkowski sum of two non-convex polygons P and Q.Figure 24.h> <CGAL/minkowski_sum_2. In this case.h> <iostream> <fstream> #include "print_utils. as illustrated in Figure 24. In the following program we compute the Minkowski sum of two polygons that are read from an input file. instantiating polygons with this kernel yields the fastest running times for Minkowski-sum computations.cpp.3.cpp #include #include #include #include <CGAL/Exact_predicates_exact_constructions_kernel. the sum is not simple and contains four holes. Polygon_2. Kernel : public CGAL::Exact_predicates_exact_constructions_kernel Point_2. In general. Note that this example uses the predefined CGAL kernel with exact constructions. as done in the example programs Minkowski_sum_2/sum_with_holes. File: examples/Minkowski_sum_2/sum_with_holes.

is_open()) { std::cerr << "Failed to open the input file. it is possible to call the function minkowski_sum_2 (P. decomp).2 Decomposition Strategies In order to compute Minkowski sums using the decomposition method. The Minkowski-sum package includes four models of the concept PolygonConvexDecomposition_2. where decomp is an instance of a class that models the concept PolygonConvexDecomposition_2. return (1). print_polygon_with_holes (sum). The class Hertel_Mehlhorn_convex_decomposition<Kernel> implements .typedef CGAL::Polygon_with_holes_2<Kernel> int main () { // Open the input file. Q. in_file. in_file >> P >> Q. std::cout << "P (+) Q = ".close(). // Compute and print the Minkowski sum. if (! in_file. The first three are classes that wrap the decomposition functions included in the Planar Polygon Partitioning package.2. Polygon_with_holes_2 sum = minkowski_sum_2 (P. Q). while the fourth is an implementation of a decomposition algorithm introduced in [AFH02]. The convex decompositions that it creates usually yield efficient running times for Minkowski sum computations: • • The class Optimal_convex_decomposition<Kernel> uses the dynamic-programming algorithm of Greene [Gre83] for computing an optimal decomposition of a polygon into a minimal number of convex sub-polygons. } // Read the two polygons from the file and compute their Minkowski sum. Polygon_2 P. 24. } return (0). The main drawback of this strategy is that it runs in O(n4) time and O(n3) in the worst case. namely it should provide a method named decompose() that receives a planar polygon and returns a range of convex polygons that represents its convex decomposition." << std::endl.dat").where n is the number of vertices in the input polygon. std::ifstream in_file ("rooms_star. Polygon_with_holes_2. Q.

h> <iostream> <fstream> #include "print_utils.cpp (as depicted in Figure 24.• • the approximation algorithm suggested by Hertel and Mehlhorn [HM83].h> <CGAL/minkowski_sum_2. which runs in O(n2) time. The class Greene_convex_decomposition<Kernel> is an implementation of Greene's approximation algorithm [Gre83]. and has the same approximation guarantee as Hertel and Mehlhorn's algorithm. Polygon_with_holes_2. which computes a convex decomposition of the polygon based on its partitioning into y-monotone polygons. typedef Kernel::Point_2 typedef CGAL::Polygon_2<Kernel> typedef CGAL::Polygon_with_holes_2<Kernel> int main () { . Polygon_2. using the small-side angle-bisector decomposition strategy: File: examples/Minkowski_sum_2/sum_by_decomposition. The class Small_side_angle_bisector_convex_decomposition<Kernel> us es a heuristic improvement to the angle-bisector decomposition method suggested by Chazelle and Dobkin [CD85]. Out of all available pairs. In case it is not possible to eliminate two reflex vertices at once any more. The following example demonstrates the computation of the Minkowski sum of the same input polygons as used in Minkowski_sum_2/sum_with_holes. each reflex vertex is eliminated by a diagonal that is closest to the angle bisector emanating from this vertex. the vertices pi and pj are selected such that the number of reflex vertices from pi to pj (or from pj to pi) is minimal.cpp #include #include #include #include #include <CGAL/Exact_predicates_exact_constructions_kernel. which triangulates the input polygon and proceeds by throwing away unnecessary triangulation edges. It starts by examining each pair of reflex vertices in the input polygon such that the entire interior of the diagonal connecting these vertices is contained in the polygon. This algorithm requires O(n) time and space and guarantees that the number of subpolygons it generates is not more than four times the optimum.3). The polygon is split by the diagonal pi pj and we continue recursively on both resulting sub-polygons. Kernel : public CGAL::Exact_predicates_exact_constructions_kernel Point_2.h> <CGAL/Small_side_angle_bisector_decomposition_2. This algorithm runs in O(n log n) time and O(n) space.h" struct {}.

24. std::ifstream in_file ("rooms_star.dat"). } // Read the two polygons from the file and compute their Minkowski sum. print_polygon_with_holes (sum). pn . Polygon_2 P. std::cout << "P (+) Q = ".3 Offsetting a Polygon The operation of computing the Minkowski sum P ⊕ Br of a polygon P with br. (a) (b) (c) Figure 24. in_file >> P >> Q. Q. namely to the right side of the edge.// Open the input file. in_file. The convolution cycle induces an arrangement with three faces. is widely known as offsetting the polygon P by a radius r. ssab_decomp). // Compute the Minkowski sum using the decomposition approach. … . ordered in a counterclockwise orientation around its interior.is_open()) { std::cerr << "Failed to open the input file.1 ) be the polygon vertices. As a result we obtain a collection . a disc of radius r centered at the origin. } return (0).close(). (c) Offsetting a non-convex polygon by computing its convolution with a disc.4: (a) Offsetting a convex polygon." << std::endl. whose winding numbers are shown enclosed in dashed circles. if (! in_file. (b) Computing the offset of a non-convex polygon by decomposing it to convex sub-polygons. Polygon_with_holes_2 sum = minkowski_sum_2 (P. return (1). Let P = ( p0. If P is a convex polygon the offset is easily computed by shifting each polygon edge by r away from the polygon. Q. CGAL::Small_side_angle_bisector_decomposition_2<Kernel> ssab_decomp.

see Figure 24..∠(pi-1.xi)2 + (y yi)2 = r2. pi+1). However.3. are connected by a circular arc of radius r. where ℓ is the length of the edge pi pi+1 and is in general not a rational number. where r is also a rational number. Each line segment is supported by a line parallel to one of the polygon edges pi pi+1. for each vertex pi = (xi. The boundary of this sum is comprised of line segments and circular arcs. induced by pi-1 pi and pi pi+1. where a. pi. pi+1). whose supporting circle is centered at pi. . If we denote the supporting line of pi pi+1 by ax + by + c = 0.∠(pi-1.4(c) for an illustration. which lies at distance r from this edge.1 Approximating the Offset with a Guaranteed Error-Bound Let us assume that we are given a counterclockwise-oriented polygon P = ( p0. here it is also more efficient to compute theconvolution cycle of the polygon with the disc Br. The angle that defines such a circular arc equals 180° . which can be constructed by applying the process described in the previous paragraph. then the offset edge is supported by the line ax + by + (c + ℓ ⋅ r) = 0. We finally compute the winding numbers of the faces of the arrangement induced by the convolution cycle to obtain the offset polygon. and we wish to compute its Minkowski sum with a disc of radius r. yi) we havexi. … Pm such that ∪i=1mPi = P. Each pair of adjacent offset edges. as was the case with the Minkowski sum of a pair of polygons. … . yi ∈ ℚ. pi. The only difference is that a circular arc induced by a reflex vertex pi is defined by an angle 540° . The line segments that comprise the offset boundaries therefore cannot be represented as segments of lines with rational coefficients. whose vertices all have rational coordinates (i. see Figure 24. its offset can be obtained by decomposing it to convex sub-polygons P1.e. We mention that the locus of all points that lie at distance r from the line ax + by + c = 0 is given by: (ax + by + c)2 a2 + = r2 .4(b)). The equation of this circle is (x .of n disconnected offset edges. 4 24. and has only rational coefficients. b. The running time of this simple process is of course linear with respect to the size of the polygon. If P is not convex. computing the offset of each sub-polygon and finally calculating the union of these sub-offsets (see Figure 24. where: • • Each circular arc is supported by a circle of radius r centered at one of the polygon vertices. c ∈ ℚ.4(a) for an illustration. pn-1 ).

We select two points o'1 and o'2 with rational coordinates on the two circles centered at p1 and p2. It should be instantiated with a geometric kernel that employs exact rational arithmetic.5: Approximating the offset edge o1 o2 induced by the polygon edge p1 p2 by two line segments o'1 q' and q' o'2. such that each irrational line segment is approximated by two rational segments: Consider the example depicted in Figure 24. 1. union. In Section 24.) on such general polygon. such that the curves that comprise the polygon edges should be arcs of circles with rational coefficients or segments of lines with rational coefficients.g. where the exact offset edge o1 o2 is obtained by shifting the polygon edge p1 p2 by a vector whose length is r that form an angleΦ with the x-axis. etc. The class-template Gps_circle_segment_traits_2<Kernel>. . These points are selected such that if we denote the angle that the vector pj oj forms with the x-axis by Φ'j (for j = 1. we apply a simple approximation scheme. intersection.3. respectively.2 we use this representation to construct the offset polygon in an exact manner using the traits class for conic arcs. included in the Boolean Set-Operations package is used for representing general polygons whose edges are circular arcs or line segments. Figure 24. This curve is actually a pair of the parallel linesax + by + (c ± ℓ ⋅ r) = 0. the linear offset edges are segments of curves of an algebraic curve of degree 2 (a conic curve) with rational coefficients. As in our case the line segments do not satisfy this requirement. 2).5.b2 • Thus. 2. and for applying set operations (e. We construct two tangents to the two circles at o'1 and o'2. The tangent lines have rational coefficients. respectively. we have Φ'1 < Φ< Φ'2.

which considerably speeds up the (approximate) construction of the offset polygon and the application of set operations on such polygons. Figure 24.cpp.6. it is guaranteed that the approximation error. eps) accepts a polygon P. Using filtering considerably speeds up the construction of the offset. It constructs an approximation for the offset of P by the radius r using the procedure explained above.h" .cpp and Minkowski_sum_2/exact_offse t. its offset may not be simple and may contain holes. denoted q'. whose boundary is also comprised of line segments and circular arcs). The function approximated_offset_2 (P. as depicted in Figure 24. The input polygon is shaded and the boundary of its offset is drawn in a thick black line. File: examples/Minkowski_sum_2/approx_offset. an offset radius r and ε> 0. r. The following example demonstrates the construction of an approximated offset of a non-convex polygon. The function returns an object of the nested type Gps_circle_segment_traits_2<Kernel>::Polygon_with_holes_2 represe nting the approximated offset polygon (recall that if P is not convex.6: The offset computation performed by the example programs Minkowski_sum_2/approx_offset. namely the distance of the point q' from o1 o2 is bounded by ε. We compute the intersection point of the two tangents. The two line segments o'1 q' and q' o'2 approximate the original offset edge o1 o2. Furthermore. Note that we use a geometric kernel parameterized with a filtered rational number-type.cpp #include "ms_rational_nt. we are capable of working with the Gps_circle_segment_traits_2<Kernel> class. Using this function.3.

number_of_holes() << " holes. std::ifstream in_file ("spiked. timer. typedef Gps_traits_2::Polygon_2 Offset_polygon_2. const double err_bound = 0. offset = approximated_offset_2 (P. } // Read the input polygon. err_bound).h> <CGAL/Cartesian. // Approximate the offset polygon.size() << " vertices. if we treat their edges as arcs of conic curves with . radius. typedef CGAL::Gps_circle_segment_traits_2<Kernel> Gps_traits_2.h> <CGAL/approximated_offset_2.dat").h> <iostream> Lazy_exact_nt. typedef CGAL::Lazy_exact_nt<Number_type> struct Kernel : public CGAL::Cartesian<Lazy_exact_nt> {}." << std::endl. if (! in_file.start(). return (1).h> <CGAL/Timer.h> <CGAL/offset_polygon_2. it is possible to represent offset polygons in an exact manner.stop()." << std::endl. Polygon_2 P. in_file >> P.time() << " seconds. const Number_type radius = 5. "The offset polygon has " offset. "Offset computation took " timer.size() << " vertices. CGAL::Timer timer.00001." << std::endl.2 Computing the Exact Offset As we previously mentioned. timer. Offset_polygon_with_holes_2 offset.outer_boundary(). } 24. in_file. " offset. std::cout << "Read an input polygon with " << P.3." << std::endl. typedef CGAL::Polygon_2<Kernel> Polygon_2.is_open()) { std::cerr << "Failed to open the input file.close(). int main () { // Open the input file.#include #include #include #include #include #include <CGAL/Lazy_exact_nt. typedef Gps_traits_2::Polygon_with_holes_2 Offset_polygon_with_holes_2. std::cout << << << std::cout << << return (0).

Nt_traits> {}.h> <CGAL/Timer.6). The functionoffset_polygon_2 (P. .cpp #include <CGAL/basic. using the Arr_conic_traits_2 class with the number types provided by the CORE library is the preferred option.h> <CGAL/CORE_algebraic_number_traits. The following example demonstrates the construction of the offset of the same polygon that serves as an input for the example program Minkowski_sum_2/approx_offset. struct Alg_kernel : public CGAL::Cartesian<Algebraic> {}. this example needs CORE . Offset_polygon_2." << std::endl. } #else #include #include #include #include #include #include <CGAL/Cartesian. typedef CGAL::CORE_algebraic_number_traits typedef Nt_traits::Rational typedef Nt_traits::Algebraic struct Rat_kernel : public CGAL::Cartesian<Rational> {}. Rational. presented in the previous subsection (see also Figure 24. but the offset computation is considerably slower: File: examples/Minkowski_sum_2/exact_offset. The traits parameter should be an instance of an arrangement-traits class that is capable of handling conic arcs in an exact manner. Algebraic..h> <iostream> Nt_traits.rational coefficients. The function returns an object of the nested type Gps_traits_2<ArrConicTraits>::Polygons_with_holes_2 (see the documentation of the Boolean Set-Operations package for more details on the traits-class adapter Gps_traits_2).h> <CGAL/offset_polygon_2. struct Conic_traits_2 : public CGAL::Arr_conic_traits_2<Rat_kernel.. Gps_traits_2. Offset_polygon_with_holes_2. Alg_kernel.h> <CGAL/Arr_conic_traits_2. Note that the resulting polygon is smaller than the one generated by the approximated-offset function (recall that each irrational line segment in this case is approximated by two rational line segments).cpp. r. typedef CGAL::Polygon_2<Rat_kernel> typedef CGAL::Gps_traits_2<Conic_traits_2> typedef Gps_traits_2::Polygon_2 typedef Gps_traits_2::Polygon_with_holes_2 Polygon_2. traits) computes the offset of the polygon P by a rational radius r in an exact manner. return (0).h> #ifndef CGAL_USE_CORE #include <iostream> int main () { std::cout << "Sorry. which represented the exact offset polygon.

std::cout << << << std::cout << << return (0). CGAL::Timer timer.start(). radius." << std::endl.int main () { // Open the input file.stop().time() << " seconds. is at least r . // Compute the offset polygon." << std::endl.size() << " vertices.size() << " vertices.3. denoted ∂P.namely: { p ∈ P | dist(p.close().outer_boundary(). std::ifstream in_file ("spiked. std::cout << "Read an input polygon with " << P. and are only included in the package for the sake of completeness. } #endif Both functions approximated_offset_2() and offset_polygon_2() also have overloaded versions that accept a decomposition strategy and use the polygon-decomposition approach to compute (or approximate) the offset. const Rational radius = 5. } // Read the input polygon. timer. "The offset polygon has " offset. is obtaining the inner offset of a polygon." << std::endl. 24. return (1).dat"). These functions are less efficient than their counterparts that employ the convolution approach. if (! in_file. Conic_traits_2 traits. offset = offset_polygon_2 (P.number_of_holes() << " holes. in_file. traits). in_file >> P. ∂P) ≥ r }. Note that the resulting set may not be connected in case Pis a non-convex .is_open()) { std::cerr << "Failed to open the input file. "Offset computation took " timer.3 Computing Inner Offsets An operation closely related to the offset computation. Polygon_2 P. timer. Offset_polygon_with_holes_2 offset." << std::endl. or insetting it by a given radius. The inset of a polygon P with radius r is the set of points iside P whose distance from the polygon boundary. " offset.

close(). if (! in_file. and thus is characterized by a (possibly empty) set of polygons whose edges are line segments and circular arcs of radius r. typedef CGAL::Polygon_2<Kernel> Polygon_2. whose value-type must be Gps_circle_segment_traits_2<Kernel>::Polygon_2 representing the polygons that approximates the inset polygon. return (1). } // Read the input polygon. Polygon_2 P.h> <CGAL/Cartesian. typedef CGAL::Gps_circle_segment_traits_2<Kernel> Gps_traits_2.cpp #include #include #include #include #include #include #include "ms_rational_nt.polygon that has some narrow components.dat"). As in case of the offset functions." << std::endl.h> <CGAL/offset_polygon_2. int main () { // Open the input file. eps.is_open()) { std::cerr << "Failed to open the input file. in_file. as done in case of ofsetting a polygon). std::ifstream in_file ("tight.h> <CGAL/approximated_offset_2. File: examples/Minkowski_sum_2/approx_inset. typedef Gps_traits_2::Polygon_with_holes_2 Offset_polygon_with_holes_2. The offset can be computed using the convolution method if we traverse the polygon in a clockwise orientation (and not in counterclockwise orientation. with the approximation error bounded by ε. typedef Gps_traits_2::Polygon_2 Offset_polygon_2.h> <iostream> Lazy_exact_nt. It constructs an approximation for the inset of P by the radius r. in_file >> P.h> <CGAL/Timer.h" <CGAL/Lazy_exact_nt. typedef CGAL::Lazy_exact_nt<Number_type> struct Kernel : public CGAL::Cartesian<Lazy_exact_nt> {}. std::cout << "Read an input polygon with " . The function returns its output via the output iterator oi. r. oi) accepts a polygon P. the Minkowski-sum package contains two functions for insetting a simple polygon: The function approximated_inset_2 (P. an inset radius r and ε> 0.

// Approximate the offset polygon. err_bound = 0. File: examples/Minkowski_sum_2/exact_inset. r. timer. } Similarly. const Number_type const double std::list<Offset_polygon_2> std::list<Offset_polygon_2>::iterator CGAL::Timer radius = 1. iit. traits." << std::endl. timer.h> #ifndef CGAL_USE_CORE #include <iostream> int main () { std::cout << "Sorry." << std::endl. radius.h> <CGAL/Timer." << std::endl. whereas oi's value-type must be Gps_traits_2<ArrConicTraits>::Polygons_2.. and returns its output via the given output iterator oi. oi) computes the exact inset of P with radius r..h> <CGAL/CORE_algebraic_number_traits. err_bound. .end().time() << " seconds. The traits parameter should be an instance of an arrangement-traits class that is capable of handling conic arcs in an exact manner. return (0). ++iit) { std::cout << " Polygon with " << iit->size() << " vertices. the function inset_polygon_2 (P. std::cout << "The inset comprises " << inset_polygons. typedef CGAL::CORE_algebraic_number_traits typedef Nt_traits::Rational typedef Nt_traits::Algebraic struct Rat_kernel : public CGAL::Cartesian<Rational> {}. struct Alg_kernel : public CGAL::Cartesian<Algebraic> {}." << std::endl. } std::cout << "Inset computation took " << timer.h> <CGAL/offset_polygon_2. } #else #include #include #include #include #include #include <CGAL/Cartesian.<< P.start(). return (0). timer.00001. for (iit = inset_polygons.cpp #include <CGAL/basic. std::back_inserter (inset_polygons)).size() << " polygon(s). iit != inset_polygons.size() << " vertices.begin(). approximated_inset_2 (P. inset_polygons.stop(). struct Conic_traits_2 : public CGAL::Arr_conic_traits_2<Rat_kernel. Algebraic.h> <iostream> Nt_traits. this example needs CORE . Rational.h> <CGAL/Arr_conic_traits_2." << std::endl.

const Rational radius = 1. .dat"). std::list<Offset_polygon_2> inset_polygons. typedef CGAL::Polygon_2<Rat_kernel> typedef CGAL::Gps_traits_2<Conic_traits_2> typedef Gps_traits_2::Polygon_2 int main () { // Open the input file. } #endif Polygon_2.is_open()) { std::cerr << "Failed to open the input file." << std::endl." << std::endl.end(). CGAL::Timer timer. Polygon_2 P.Alg_kernel.size() << " polygon(s). inset_polygon_2 (P. return (1). iit != inset_polygons." << std::endl. in_file. timer. } std::cout << "Inset computation took " << timer. } // Read the input polygon. ++iit) { std::cout << " Polygon with " << iit->size() << " vertices. as this method cannot be easily generalized for inset computations." << std::endl. for (iit = inset_polygons. Conic_traits_2 traits.time() << " seconds. std::cout << "The inset comprises " << inset_polygons.close(). std::cout << "Read an input polygon with " << P. std::ifstream in_file ("tight. Gps_traits_2. if (! in_file. Nt_traits> {}. in_file >> P." << std::endl. Offset_polygon_2.begin(). std::back_inserter (inset_polygons)). traits. return (0). timer.stop(). Unlike the offset functions. radius. std::list<Offset_polygon_2>::iterator iit. there are no overloaded versions of the inset functions that use convex polygon decomposition to compute insets.start(). // Compute the inner offset of the polygon.size() << " vertices.

This ofset is obtain by taking the outer offset of P's outer boundary. traits) that accept a polygon with holes P and computed its offset. Footnotes 1 Throughout this chapter. Note that this also covers the case where u has the same direction as v. it is guaranteed that the convolution curve is comprised of a single cycle. we increment or decrement an index of a vertex modulo the size of the polygon. and the latter define the holes within the result. They have also suggested a few algorithmic improvements that made their way into version 3. Acknowledgements Andreas Fabri and Laurent Rineau helped tracing and solving several bugs in the approximated offset function.In this context let us mention that there exist overloaded versions of the functions approximated_offset_2 (P. eps) and offset_polygon_2 (P. 2 3 4 Next: Reference Manual Navigation: Up Table of Contents Package Overview Bibliography Index Title Acknowledging CGAL CGAL Open Source Project. r. the winding number of a point p ∈ ℝ2 with respect to some planar curve γ is an integer number counting how many times does γ wind in a counterclockwise direction around p. Informally speaking.4. 14 October 2010. We say that a vector v lies between two vectors u and w if we reach v strictly before reaching w if we move all three vectors to the origin and rotate u counterclockwise.7. As the disc is convex. Release 3. . and computing the inner offsets of P's holes. yielding a faster approximation scheme. The former polygon defines the output boundary of P ⊕ Br. r.

Sign up to vote on this title

UsefulNot useful- Lecture 8
- 2D Viewing
- SD03 spatial objects
- fg
- hw3-sol
- 2012-artgallery
- computer notes Filled Area Primitives I
- Alternate Routes
- Computer Graphics Cs 602 Lecture 08
- Cse 464 April 2012 Assignment 1
- Explained Nicely
- 6.1 Polygons
- cyrus beck algorith
- ComputerGraphics_2D
- Polygon FIlling
- Exam 2
- Lecture06-2DViewing-1
- jyjjyj
- computer notes Clipping II
- What is a Polygon
- Point in Polygon -Winding Number
- Polygon Area and Centroid
- 2d
- Lecture_5.pdf
- 2DAlgorithms
- 2D Clipping 1
- Polygon
- Additional Mathematics
- dihedral
- Poly Clip
- New Microsoft Office Word 97 - 2003 Document