1. Trang chủ
  2. » Giáo án - Bài giảng

computer graphics and geometric modelling implementation algorithms agoston 2005 01 04 Cấu trúc dữ liệu và giải thuật

919 38 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 919
Dung lượng 15,02 MB

Nội dung

Max K Agoston Computer Graphics and Geometric Modeling Implementation and Algorithms CuuDuongThanCong.com Max K Agoston, MA, MS, PhD Cupertino, CA 95014, USA British Library Cataloguing in Publication Data Agoston, Max K Computer graphics and geometric modeling:implementation & algorithms Computer graphics Geometry—Data processing Computer-aided design Computer graphics—Mathematics I Title 006.6 ISBN 1852338180 Library of Congress Cataloging-in-Publication Data Agoston, Max K Computer graphics & geometric modeling/Max K Agoston p cm Includes bibliographical references and index Contents: Implementation & algorithms ISBN 1-85233-818-0 (v : alk paper) Computer graphics Geometry—Data processing Mathematical models systems I Title T385.A395 2004 006.6—dc22 CAD/CAM 2004049155 Apart from any fair dealing for the purposes of research or private study, or criticism or review, as permitted under the Copyright, Designs and Patents Act 1988, this publication may only be reproduced, stored or transmitted, in any form or by any means, with the prior permission in writing of the publishers, or in the case of reprographic reproduction in accordance with the terms of licences issued by the Copyright Licensing Agency Enquiries concerning reproduction outside those terms should be sent to the publishers ISBN 1-85233-818-0 Springer is part of Springer Science+Business Media springeronline.com © Springer-Verlag London Limited 2005 Printed in the United States of America The use of registered names, trademarks, etc in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant laws and regulations and therefore free for general use The publisher makes no representation, express or implied, with regard to the accuracy of the information contained in this book and cannot accept any legal responsibility or liability for any errors or omissions that may be made Typesetting: SNP Best-set Typesetter Ltd., Hong Kong 34/3830-543210 Printed on acid-free paper SPIN 10971451 CuuDuongThanCong.com CuuDuongThanCong.com vi Preface geometry of two- and three-dimensional manifolds Both programs were written using the Microsoft Visual C++ compiler (and OpenGL) and run under Microsoft Windows 98 or later Their source code and documentation are included on the CD The ReadMe file on the CD lists what all is on the CD and also contains instructions for how to use what is there As I began to develop this book on geometric modeling, one concern obviously was to a good job in presenting a thorough overview of the practical side of the subject, that is, the algorithms and their implementation details However, there were two other goals that were important from the very beginning One was to thoroughly explain the mathematics and the other, to make the material as self-contained as possible In other words, pretty much every technical term or concept that is used should be defined and explained The reason for putting all the computer graphics–related material into one book and all the mathematics into the other rather than interweaving the material was to keep the structure of the implementation of a modeling program as clear as possible Furthermore, by separating out the mathematics it is easier for readers to skip those mathematical topics that they are already familiar with and concentrate on those with which they are not In general, though, and in particular as far as instructors using this book are concerned, the intent is that the material in the two books be covered in parallel This is certainly how I always taught my courses An added motivation for the given division was that the applied part of geometric modeling was often a moving target because, largely due to improvements in hardware (faster CPUs, more memory, more hard disk space, better display devices), the way that one deals with it is changing and will continue to change in the future This is in contrast to the supporting mathematics There may be new mathematics relevant to computer graphics in the future but it will be a long time before the mathematics I discuss will lose its relevance A lot of it, in fact, is only now starting to be used as hardware becomes capable of dealing with computationally expensive algorithms One property that sets this book apart from others on geometric modeling is its breadth of coverage, but there is another The combined books, this one and [AgoM05], differ from other books on computer graphics or geometric modeling in an important way Some books concentrate on implementation and basically add the relevant mathematics by tossing in appropriate formulas or mathematical algorithms Others concentrate on some of the mathematical aspects I attempt to be as comprehensive on both the implementation and theory side In [AgoM05] I provide a complete reference for all the relevant mathematics, but not in a cookbook fashion A fundamental guiding principle was to present the mathematics in such a way that the reader will see the motivation for it and understand it I was aiming at those individuals who will want to take the subject further in the future and this is not possible without such understanding Just learning a few formulas is not good enough I have always been frustrated by books that throw the reader some formulas without explaining them Furthermore, the more mathematics that one knows, the less likely it is that one will end up reinventing something There are instances (such as in the case of the term “geometric continuity”) where unfamiliarity with what was known caused the introduction of confusing or redundant terminology The success or failure of the two books should be judged on how much understanding of the mathematics and algorithms the reader gets In the case of this book by itself, it is a question of whether or not the major topics were covered adequately In any case, because I CuuDuongThanCong.com Preface vii emphasize understanding what is going on, there is a natural emphasis on theory and not on tricks of the trade The reader will also not find any beautiful glossy pictures Clearly, no one book can cover all that falls under the general heading of geometric modeling As usual, the topics that are in fact covered and the degree to which they are covered reflect my own bias In a large field, there are many special topics and it should not be surprising that some are not discussed at all and others only briefly in an overview On the other hand, one would expect to see a discussion of principles and issues that are basic to the field as a whole In that regard, I would like to alert the reader to one topic, namely, the issue of robustness of algorithms and computations, that really is a central issue in geometric modeling, but is not dealt with as thoroughly as it should be, given its importance The only excuse for this is that to this topic justice would have entailed a much larger book It is important that readers who want to serious work in geometric modeling realize that they will have to get more information elsewhere on this The discussion in Section 5.10 is inadequate (although I devote the brief Chapter 18 to interval analysis) When it comes to the bibliography, as large as it is, it is also a victim of space constraints In some cases I have tried to compensate for the lack of completeness by giving references to books or papers where additional references could be found Most of this book covers material that is not new, but a few algorithms have not appeared in print before One is the approach to trimmed surfaces based on the Vatti clipping algorithm described in Section 14.4 Another is the result in Section 17.5 about convex set intersections, which motivated the algorithm described in Section 13.2 Another aspect of the book that should be noted is Chapter 16 and the SPACE program Although the material on intrinsic geometry in Sections 16.3 and 16.4 did not get developed as much as I would have liked, it is a start The extensive material on topology in [AgoM05], in particular algebraic and differential topology, has heretofore not been found in books on geometric modeling Although this subject is slowly entering the field, its coming has been slow Probably the two main reasons for this are that computers are only now getting to be powerful enough to be able to handle the complicated computations and the material involves exceptionally advanced mathematics that even mathematics majors would normally not see until graduate school Here is how the material in this book has been used successfully in teaching three different types of semester courses on computer graphics in the Department of Mathematics and Computer Science at San Jose State University The courses were (1) Introduction to Computer Graphics, (2) Computer Graphics Algorithms, and (3) Geometric Modeling The first two were upper-division undergraduate courses and the third was a graduate course The prerequisites for the introductory course were three semesters of calculus, linear algebra, and an upper division course in data structures The only prerequisite to both the algorithm and geometric modeling course was the introductory computer graphics course Some of the material in the introductory course was briefly reviewed in the other two courses The courses used material from the following parts of this book and [AgoM05] (but the material was not necessarily dis- CuuDuongThanCong.com viii Preface cussed in the order listed, and listing a chapter or section in no way means that all of it was covered): Introduction to Computer Graphics: Chapters 1–4, a quick overview of Chapters 5, 6, 11, 12, and a brief discussion of visible surface algorithms and shading from Chapters and 10 From [AgoM05]: Chapters 1–3 Computer Graphics Algorithms: Chapters 2–10, just enough of Chapter 12 to have surfaces to render, Sections 21.6– 21.8, and Chapter 22 From [AgoM05]: Chapter and Sections 4.5, 4.7, 8.1–8.5 Geometric Modeling: Chapters 3–6, 11, 12, a sampling of topics from Chapters 13–15, and Sections 17.4– 17.5 From [AgoM05]: Review of parts of Chapters and 2, Sections 4.2, 4.5, 4.7, Chapter 6, and Sections 8.1–8.5, 9.2–9.4, 9.9 The numbering of items in this book uses the following format: x.y.z refers to item number z in section y of chapter x For example, Theorem 12.7.1 refers to the first item of type theorem, proposition, lemma, or example in Section of Chapter 12 Algorithm 14.3.1 refers to the first algorithm in Section of Chapter 14 Tables are numbered like algorithms Figures are numbered by chapter, so that Figure 14.7 refers to the seventh figure in Chapter 14 Exercises and programming projects at the end of chapters are numbered by section Finally, some comments on the language used in this book to describe algorithms Even though the C/C++ language is the language of choice for most people writing computer graphics programs, with the exception of some initialization code found in Section 1.6, we have opted to use “the” more universal “standard” algorithmic language The reason is that this book is mostly about concepts that are independent of any particular programming language and low-level optimization issues that hinge on the language being used not play any role Every reader with some general computer experience will understand the language used here (a detailed description of its syntax can be found in Appendix B) and so there seemed to be little point to restrict the audience to those familiar with C Consider the following points: (1) There is little difference between the code that is presented and what the corresponding C code would look like, so that any translation would be straightforward (2) The emphasis in the code and algorithms in this book is on clarity and the fact is that even in simple constructs like a for-loop or a case statement, C has more complicated syntax and uses more obscure terminology which would make it harder for the non-C reader to understand A certain universality would be lost with no real corresponding gain The efficiency advantage of C that is usually cited is only really CuuDuongThanCong.com Preface ix significant in a relatively small number of places It would be relevant, for example, if one wanted to implement low level drawing primitives, but that is not what this book is about (3) C programmers who want to see C code can look at the GM and SPACE programs, which are written in C++ Cupertino, California CuuDuongThanCong.com Max K Agoston CuuDuongThanCong.com xii Contents 2.12 2.13 Exercises Programming Projects 66 67 Clipping 3.1 Introduction 3.2 Line Clipping Algorithms 3.2.1 Cohen-Sutherland Line Clipping 3.2.2 Cyrus-Beck Line Clipping 3.2.3 Liang-Barsky Line Clipping 3.2.4 Nicholl-Lee-Nicholl Line Clipping 3.3 Polygon Clipping Algorithms 3.3.1 Sutherland-Hodgman Polygon Clipping 3.3.2 Weiler Polygon Clipping 3.3.3 Liang-Barsky Polygon Clipping 3.3.4 Maillot Polygon Clipping 3.3.5 Vatti Polygon Clipping 3.3.6 Greiner-Hormann Polygon Clipping 3.4 Text Clipping 3.5 Exercises 3.6 Programming Projects 69 69 71 71 73 77 81 84 84 85 86 89 98 106 109 110 110 Transformations and the Graphics Pipeline 4.1 Introduction 4.2 From Shape to Camera Coordinates 4.3 Vanishing Points 4.4 Windows and Viewports Revisited 4.5 The Clip Coordinate System 4.6 Clipping 4.7 Putting It All Together 4.8 Stereo Views 4.9 Parallel Projections 4.10 Homogeneous Coordinates: Pro and Con 4.11 The Projections in OpenGL 4.12 Reconstruction 4.13 Robotics and Animation 4.14 Quaternions and In-betweening 4.15 Conclusions 4.16 Exercises 4.17 Programming Projects 111 111 112 117 119 122 125 130 131 132 134 138 139 141 146 149 151 152 Approaches to Geometric Modeling 5.1 Introduction 5.2 R-sets and Regularized Set Operators 5.3 Representation Schemes 5.3.1 Early Representation Schemes 156 156 158 160 164 CuuDuongThanCong.com Contents xiii 5.9 5.10 5.11 5.12 5.13 5.3.2 Boundary Representations 5.3.3 The CSG Representation 5.3.4 Euler Operations 5.3.5 Sweep Representations and Generative Modeling 5.3.6 Parametric Representations 5.3.7 Decomposition Schemes 5.3.8 Volume Modeling 5.3.9 The Medial Axis Representation Modeling Natural Phenomena Physically Based Modeling Parametric and Feature Based Modeling Functions and Algorithms Data Structures 5.8.1 Data Structures for Boundary Representations 5.8.2 Data Structures for Volume Modeling Converting Between Representations Round-off Error and Robustness Issues Algorithmic Modeling Conclusions Exercises 166 167 171 174 178 178 180 182 188 190 192 198 199 199 203 205 211 215 220 225 Basic 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 Geometric Modeling Tools Introduction Bounding Objects and Minimax Tests Surrounding Tests Orientation Related Facts Simple Intersection Algorithms Distance Formulas Area and Volume Formulas Circle Formulas Parametric or Implicit: Which Is Better? Transforming Entities Exercises Programming Projects 227 227 227 232 238 240 245 249 252 258 259 261 262 Visible Surface Algorithms 7.1 Introduction 7.2 Back Face Elimination 7.3 The Schumacker List Priority Algorithm 7.4 Newell-Newell-Sancha Depth Sorting 7.5 The BSP Algorithm 7.6 Warnock and Weiler-Atherton Area Subdivision 7.7 Z-buffer Algorithms 7.8 The Watkins Scan Line Algorithm 7.9 Octree Algorithms 264 264 267 268 269 270 273 275 278 283 5.4 5.5 5.6 5.7 5.8 CuuDuongThanCong.com Index Triangulation, 600, 601, 602, 603, 604, 626, 627 angle-optimal, 724 angle vector for, 724 Coxeter, 627 deviation criterion, 600 local, 627 monohedral, 627 of planar point set, 724 size criterion, 600 Triangulation algorithm for y-monotone polygons, 718, 719 via locally isometric approximations, 605 Triangulation problem for planar regions, 605 Tricubic parametric solid, 178 Trim curve, 674 Trimmed surface, 596, 598 Trimline for blending surface, 679, 681 Trimming, 638, 642 Trimming algorithm, 599, 600, 601, 603, 604, 606, 611 Trimming curve, 598, 599, 600, 614, 674 Tripod 6-connected line algorithm, 365 Tri-stimulus theory of light, 297 Trunc function, 817 Truncated cone, 476 Truncated power function, 404 Tunnel in discrete 3d set, 362 Turning point, 71, 86, 87, 641 of intersection curve, 570 Twist vectors, 496, 499, 533 Adini, 499 Two-point perspective, 118, 136, Typeface, 109 U Umbra, 320 Undecidable set, 219 Undercut of NC cutter, 639 Undersampled, 45 Undoing an editing operation, 222 Unfolding map, 661 Unfolding of set, 661 CuuDuongThanCong.com 893 Uniform B-spline matrix, 414 Uniform subdivision, 178 Unit cube, 815 Unit disk closed, 816 open, 816 Unit quaternion integral curve, 650 Unit sphere, 816 Unstable system, 798 Up direction, 113 Upper halfplane, 815 Upper hemisphere, 816 User representation, 163, 192 informal issues, 164 Uv-monotone region, 599, 600 V Valid representation, 161 Validity problem for representation schemes, 162 of boundary representation, 166 of CSG representation, 169 of Euler operation representation, 171, 173 of feature models, 195, 196 Vanishing point of line for view, 118 Variation diminishing property, 430, 502, 505, 514, 544, 547 Variational constraints, 377 Variational method for FEM, 748 Variational model, 192 versus parametric model, 193 Vatti polygon clpping, 70, 71, 98, 106, 108, 606 VE, 685 Vector transforming, 259 Vector field, 36, 177, 756 along curve, 462 normal to curve, 462 relatively parallel, 463 tangential to curve, 462 Vector product of quaternions, 759 Vernier acuity, 45 Vertex, 641 of convex set, 714 894 Index Vertex insertion subdivision algorithm, 526, 530 Vertex ordering induced, 240 Vertical retrace, 7, 63 VGA, 8, View axonometric, 133 oblique, 133 orthographic, 133 perspective, 113 View direction, 5, 113 View plane, View plane coordinate system, 4, 117 View pyramid, truncated, View volume, truncated, Viewpoint, Viewport, 5, 119 Viewport-to-pixel-space transformation, 121 Virtual environments, 685 interaction in, 686 Virtual reality, 685 immersive, 686 passive, 686 Visible human project, 182 Visible line determination, 266 Visible radiant energy, 297 Visible surface algorithm Blinn, 285 BSP, 270 Carpenter-Lane, 290 Catmull, 284 Clark, 290 curved surface 284 list priority, 268, 269, 283 Newell-Newell-Sancha, 269 Octree, 283 Schumacker, 268 Warnock, 273 Watkins, 278 Weiler-Atherton, 274 Whitted, 290 Z-buffer, 275 Visible surface algorithms comparison, 292 image precision, 264 list priority, 264 object precision, 264 CuuDuongThanCong.com Visible surface determination, 264 overview of algorithms, 264 Vitreous humor, 295 Volume of parallelopiped, 249 shadow, 318 of tetrahedron, 251 Volume data structures, 203 Volume graphics, 180 Volume modeling, 180 Volume rendering, 180, 358, 625, 685 Artzy’s algorithm, 362 data classification for, 358, 360 image precision, 358 marching cube algorithm, 362, 365 object precision, 359 shear warp, 360 Volume thinning, 185 Volume visualization, 180 Volumetric blending, 673 Volumetric data, 180 Voronoi cell, 720, 723, 724 edge of, 721 vertex of, 721 Voronoi diagram, 185, 232, 603, 666, 667, 720, 721, 722, 723, 725 Fortune’s algorithm for, 722 Voronoi graph, 722 Vorticity of fluid, 182 VoxBlt, 181 Voxel, 179 Voxel block transfer, 181 VR, 658 W Warnock visible surface algorithm, 265, 266, 273, 291, 292, 614 Waterline of ship, 533 Watkins visible surface algorithm, 265, 266, 278, 292 Wavelet, 792 approximation, 795 compression, 795 Wavelet transform discrete, 795, 796 Wedge test, 233, 238 Weierstrass approximation theorem, 398 Index Weight of rational Bézier curve, 433 of rational Bézier surface, 512 of rational B-spline curve, 433 of rational B-spline surface, 512 Weights geometric interpretation of, 435 Weiler polygon clipping algorithm, 70, 71, 85, 98, 106 entering list, 85 leaving list, 85 Weiler-Atherton shadow algorithm, 318 Weiler-Atherton visible surface algorithm, 266, 274 Whittaker-Shannon sampling theorem, 44, 790 Whitted visible surface algorithm, 290 Width of interval, 730 Winding number, 106, 235 Window, 5, 6, 119, 273 Window-to-device pipeline, Window-to-viewport transformation, 12 WinG, 11 Wing sheet in medial axis, 184 Winged edge data structure, 202 CuuDuongThanCong.com 895 Winged edge representation, 173, 201, 203 Wireframe display, 165 Wireframe representation, 164 Wooden spline, 445 Workspace, 142 World coordinate system, 4, 6, 112 World-to-camera transformation, 115, 622 Write procedure, 16 X XOR mode, moving objects with, X-ray, 181 Y YIQ color model, 300 Yon clipping plane, Z Z-buffer, 9, 275 Shadow, 319 Z-buffer algorithm, 265, 266, 275, 291, 292, 319, 330, 598, 606 scan line, 276 Zoom feature of hardware, 64 CuuDuongThanCong.com Bibliographic Index [Barn87], 21, 842 [Barn88], 190, 804, 806, 807, 808, 809, 810, 811, 812, 813, 842 [Barn92], 843, 849, 850, 851, 852, 855, 861 [BarR74], 844, 860, 861 [Barr81], 482, 856 [Barr92], 482, 856 [BarrA87], 191, 855 [BarrA89], 856 [Bars88], 860 [Barze92], 856 [Baum72], 201, 845 [Baum75], 172, 201, 845 [BBGDS92], 799, 842, 852 [BBGS99], 184, 185, 186, 187 [BCGH92], 149, 856 [BDDH95], 11, 848 [BDST92], 725, 838 [BeaB82], 843, 859, 865 [Beac91], 389, 844 [BeBF78], 848 [BeFH86], 651, 862 [BeMR94], 719, 838 [Bézi71], 533, 845 [Bézi72], 459, 844 [Bézi74], 860 [BFJP87], 558, 566, 850 [BHLH88], 568, 569, 615, 850 [Bier95], 226, 845 [BieS86], 326, 863 [Binf71], 175, 845 [Bish75], 461, 462, 463, 464, 841 [BisW86], 317, 859 [BKOS97], 699, 701, 702, 704, 706, 708, 709, 715, 716, 718, 720, 721, 722, 724, 725, 838 [Blin00a], 459, 860 [Blin00b], 459, 860 [BliN76], 325, 326, 328, 863 [Blin77], 313, 314, 315, 859 [Blin78], 328, 863 [Blin81], 284, 864 [Blin82], 673, 845 [Blin87], 57, 839 [Blin88a], 59, 839 [Blin88b], 111, 848 [Blin89a], 459, 860 [Blin89b], 459, 860 [Blin91a], 111, 125, 848 [Blin91b], 111, 848 [Blin91c], 111, 848 CuuDuongThanCong.com 897 [Blin92], 111,121, 848 [Blin93], 301, 837 [Blin99], 459, 860 [BloK02], 534, 861 [Bloo88], 624, 849 [Bloo90], 461, 841 [Bloo97], 187, 337, 594, 596, 622, 623, 849 [BloW89a], 682, 836 [BloW89b], 682, 836 [BlSS89], 217, 219, 220, 845 [Blum67], 183, 853 [Blum73], 183, 853 [BluN78], 853 [Boeh80], 429, 861 [Boeh87], 456, 845 [Boeh89], 841 [Boeh90], 517, 519, 521, 841 [Boen91], 538, 850 [BoeP94], 164, 844 [BoFK84], 845 [BoiC00], 633, 862 [BoiT93], 725, 838 [BoLZ75], 35, 857 [Boot79], 843, 864 [BotM58], 756, 836 [Bouk70], 309, 311, 859 [BowW83], 258, 852 [Bowy94], 841, 844, 846, 853 [BoyB00], 40, 858 [Brac86], 767, 783, 842 [Brad82], 856 [Bran92], 185, 853 [Brec92], 638, 646, 855 [Bres65], 39, 858 [Bres77], 39, 858 [BrHS80], 172, 845 [BroA99], 838, 844, 845, 852, 853, 854 [Brod80], 839, 844, 845 [Broo99], 685, 686, 864 [Brou84], 856 [Brun95], 863 [Buch95], 745, 842 [BuiT75], 309, 310, 313, 317, 859 [BurM71], 174, 863 [BurS93], 558, 850 [CaBU92], 863 [CalH68], 853 [Carl82], 547, 573, 850 [Carp84], 291, 864 898 Bibliographic Index [Cars98], 11, 848 [Casa87], 863 [CatC78], 529, 862 [Catm74], 326, 572, 864 [Catm75], 284, 290, 864 [Catm78], 276, 291, 864 [CatR74], 861 [CavM89], 465, 526, 845 [CCWG88], 351, 353, 355, 357, 857 [Chai74], 465, 862 [ChaK87], 557, 850 [Chan88], 59, 614, 849 [Chas78], 258, 854 [Chaz91], 718, 838 [ChBA94], 538, 850 [ChCM97], 853 [ChDH89], 517, 519, 841 [CheH90], 660, 666, 667, 843 [Chen89], 567, 850 [CheO88], 569, 850 [Chew93], 863 [Chia92], 853 [ChiK83], 681, 836 [Chin95], 273, 854 [Chiy87], 681, 836 [Chiy88], 173, 494, 502, 504, 681, 844 [ChoJ89], 681, 836 [ChPP98], 604, 614, 863 [CiMS98], 725, 838 [Clar79], 290, 573, 864 [ClaS89], 725, 838 [CMBZ00], 687, 864 [CMPP99], 863 [CohG85], 351, 857 [CohK97], 363, 365, 865 [CohW93], 351, 857 [CoLR80], 430, 861 [ConD72], 37, 390, 745, 854 [Cook86], 344, 858 [Cook89], 344, 858 [Coon67], 488, 533, 845 [CooT65], 786, 842 [CooT82], 859 [CoPL84], 344, 858 [CouH53], 856 [Crai88], 670, 841 [Crai89], 142, 146, 859 [Cran95], 799, 842 [Crip98], 841, 844 [Crow77a], 291, 836 CuuDuongThanCong.com [Crow77b], 318, 859 [CrSD93], 686, 864 [Cuil98], 592, 856 [CuKM99], 185, 213, 853 [CycW92], 578, 850 [CycW94], 578, 850 [CyrB78], 73, 837 [DahB74], 37, 854 [DanD89], 467, 861 [Debe99], 338, 859 [deBo78], 388, 404, 861 [DeFL87], 59, 858 [Dege94], 521, 841 [Dege98], 521, 841 [DehZ91], 591, 845 [DelE95], 836 [DenH55], 146, 859 [DeSB92], 215, 855 [Deva86], 799, 800, 842 [Devi98], 725, 838 [DevK89], 190, 842 [DLTW90], 626, 627, 628, 629, 839 [DocT81], 860 [DooS78], 527, 862 [DoSY89], 538, 579, 850 [Dowd85], 625, 839 [DrCH88], 865 [Duff79], 317, 860 [DuMP93], 521, 841 [Dwye87], 725, 838 [Earn85], 839, 843 [Earn88], 844, 861 [EdaL99], 215, 845 [Edel87], 540, 720, 838 [EdeM90], 215, 845 [Egga98], 164, 856 [ElbC96], 330, 859 [ElbC97], 681, 836 [ElbK99], 186, 853 [ElLK97], 643, 644, 855 [Elsa83], 532, 845 [Elvi92], 358, 865 [EnKP84], 11, 848 [EtzR99], 722, 838 [Falc85], 804, 813, 842 [FaNO89], 557, 579, 850 [FanP93], 725, 838 Bibliographic Index [FanP95], 725, 838 [Fari83], 532, 845 [Fari87], 836, 837, 844, 845, 846, 847, 850, 851, 852 [Fari89], 436, 514, 861 [Fari92a], 460, 861 [Fari92b], 557, 850 [Fari95], 433, 512, 861 [Fari97], 389, 399, 411, 417, 424, 441, 444, 452, 455, 467, 494, 505, 514, 517, 522, 535, 844 [FarJ94], 853 [FarN90a], 641, 642, 643, 855 [FarN90b], 643, 855 [Faro85], 855 [Faro86], 855 [Faro87], 557, 850 [Faro91], 467, 861 [Faro92], 459, 644, 849 [FarR87], 467, 861 [FarR88], 467, 861 [FarR98], 188, 853 [FarS95], 644, 855 [FauL01], 139, 848 [FauP79], 522, 844 [Feat87], 146, 859 [Fede69], 804, 842 [Ferg64], 533, 845 [Ferr94], 8, 855 [Ferw01], 295, 854 [Figu95], 590, 840 [FilB89], 633, 845 [Fili86], 521, 591, 592, 856 [FiMM86], 558, 573, 591, 592, 845 [FisB85], 53, 858 [Fish90a], 303, 837 [Fish90b], 29, 32, 858 [Fish94], 844, 853 [Fium89], 4, 854 [FoFC82], 842 [FolR93], 526, 845 [Forr72], 459, 861 [Fors12], 519, 841 [Fors95], 645, 855 [Fort87], 722, 725, 838 [Fort95], 213, 845 [Four95], 795, 842 [Free69], 858 [Free80], 843, 859, 860, 864 [Frie63], 783, 842 CuuDuongThanCong.com 899 [FTAT00], 188, 865 [FuAG83], 270, 864 [FuKN80], 270, 864 [FuKU77], 631, 839 [Full73], 836 [FuTI86], 342, 858 [FVFH90], 46, 47, 59, 88, 264, 284, 290, 308, 351, 843 [Gall00], 505, 506, 508, 521, 530, 844 [Galt89], 839 [GanD82], 632, 839 [Garl85], 726, 852 [Garl87], 726, 852 [GarW89], 558, 850 [GarZ79], 571, 849 [Gass83], 844 [GeCG99], 845 [GelD95], 186, 188, 853 [Geor92], 248, 854 [GerP90], 333, 837 [GHSV93], 206, 209, 211, 215, 216, 217, 221, 223, 224, 844 [GibB85], 853 [GJPT78], 716, 838 [Glas84], 342, 858 [Glas86], 858 [Glas89], 858 [Glas90], 837, 841, 854, 858, 859, 861 [Glas92], 806, 842 [Glas95], 44, 310, 767, 790, 792, 795, 841 [Glas99], 786, 842 [Glid97], 11, 848 [Gold83], 480, 579, 856 [Gold90], 150, 854, 855 [GolM87], 579, 850 [GolS87], 850 [GomV98], 795, 842 [GonN02], 621, 849 [GonW87], 44, 767, 841 [Gord69], 846 [Gord71], 846 [GorR74a], 534, 846 [GorR74b], 861 [GoTG84], 323, 860 [Gour71], 316, 860 [GraK97], 557, 558, 565, 850 [Grav95], 637, 840 [Gray98], 519, 841 [Gree86], 328, 863 900 Bibliographic Index [Gree94], 578, 850 [Gree99], 337, 859 [Greg74], 861 [Greg86], 841, 844, 851 [Greg89], 456, 522, 846 [GreH98], 106, 837 [GreS77], 725, 838 [Grif75], 557, 864 [Grif78], 557 [Grif78a], 864 [Grif78b], 864 [GSPC77], 11, 848 [GSPC79], 11, 848 [GueP90], 635, 636, 638, 840 [GuiS85], 725, 838 [Gunn93], 693, 865 [GupS81], 46, 858 [HaAG83], 557, 850 [HaFN95], 844, 845, 847, 855, 862, 863 [Hage92], 526, 862 [HagH95], 525, 862 [Hain89], 579, 858 [Hain94], 238, 854 [Hall89], 294, 308, 309, 334, 837 [HalM63], 685, 864 [HaMa95], 461, 465, 857 [HaMF94], 693, 865 [Hami69], 857 [Hand89], 837, 844, 846 [HanH92], 693, 865 [Hanr89], 579, 858 [HarA02], 175, 857 [Hara79], 863 [HecG97], 597, 846 [HecH84], 343, 858 [Heck82], 333, 837 [Heck86], 325, 863 [Heck90a], 49, 858 [Heck90b], 32, 858 [Heck90c], 40, 858 [Heck93], 842 [Heck94], 838, 850, 851, 852, 854, 863 [Heck97], 846 [HEFS85], 566, 573, 591, 851 [HeKE99], 579, 850 [HerB87], 592, 855 [Herm98], 4, 23, 24, 26, 362, 854 [Hers75], 857 [Hill01], 340, 843 CuuDuongThanCong.com [Hill90], 340, 843 [Hiro74], 160, 856 [HKBZ97], 342, 858 [HMPY97], 537, 557, 579, 851 [HMSP96], 537, 546, 851 [HMSV99], 855 [Hoch83], 532, 846 [Hodg92], 132, 854 [HofB97], 836, 844, 854 [Hoff89], 213, 215, 538, 568, 569, 577, 615, 619, 620, 621, 710, 844 [Hoff91], 853 [Hoff93], 849 [Hoff94], 186, 853 [HofH85], 676, 836 [HofH87], 676, 836 [HofR95], 844, 845, 847, 851, 853, 855, 856 [Hogg92], 146, 149, 852 [HoHK89], 213, 215, 846 [Hohm91], 570, 580, 850 [HoLe88], 842 [Hopp96], 597, 846 [Horn75], 745, 854 [HosL93], 178, 444, 445, 446, 448, 460, 461, 468, 494, 502, 522, 526, 538, 546, 579, 625, 643, 672, 844 [HsuT98], 681, 836 [HuaM02], 633, 846 [HuPY96a], 213, 852 [HuPY96b], 213, 852 [HurW48], 802, 803, 804, 863 [HutH96], 526, 846 [HwaA92], 859 [IGES88], 822, 848 [ISO88], 11, 849 [JGMH88], 843, 859, 860, 863, 864, 865 [JiMa97], 196, 846 [John87], 745, 754, 842 [John93], 521, 579, 841 [JoLH73], 839 [JulB81], 863 [Jule62], 863 [Just92], 223, 846 [KaCY93], 180, 358, 865 [Kaji86], 309, 323, 859 [KakG96], 651, 840 Bibliographic Index [KaLL83], 857 [Kalv92], 594, 865 [Kap85], 839 [Kapl85], 273, 858 [Kapo99], 660, 843 [KassB93], 856 [Kauf98], 182, 865 [KayK86], 230, 340, 859 [KemF97], 11, 849 [KimD93], 459, 849 [KimK03], 587, 846 [Kirk92], 850, 854, 856, 859 [KlaK92], 678, 681, 851 [Klas80], 525, 846 [Klas94], 578, 851 [Kobb96], 461, 846 [Kopa91], 558, 851 [KopM83], 545, 547, 551, 840 [Kost91], 593, 846 [KraM00], 517, 521, 841 [KriM97], 579, 580, 851 [KrLM98], 650, 840 [KrPP90], 570, 851 [KrPW92], 567, 851 [KSHS03], 655, 657, 843 [Kuip99], 765, 857 [KumM94], 600, 863 [KumM95], 600, 863 [KuSP02], 645, 855 [KuSP03], 645, 855 [Kypr80], 194, 846 [LaCJ94], 853 [LacL94], 360, 865 [LamM95], 579, 851 [LamM96], 579, 851 [LanR80], 544, 545, 547, 551, 572, 573, 592, 602, 846 [LanR83], 430, 861 [LanS86], 844 [LasB95], 614, 863 [LaTH86], 206, 839 [LazV99], 188, 853 [LBDW92], 186, 838 [LCWB80], 290, 572, 573, 864 [LeeE82], 438, 439, 861 [LeeP77], 716, 838 [Levo88], 865 [Levo90], 362, 865 [LiaB83], 71, 86, 837 CuuDuongThanCong.com [LiaB84], 77, 837 [LiCN98], 182, 358, 865 [LiCr97], 458, 840 [LicS87], 591, 846 [LiHS02], 193, 846 [Limi44], 674, 836 [Lind68], 190, 842 [Lind92], 333, 334, 859 [LinM96], 215, 838 [LiON02], 198, 846 [Lisc94], 725, 838 [LiSH92], 591, 856 [LiuW02], 531, 861 [LoDW97], 795, 842 [LooD89], 532, 861 [Loop87], 530, 862 [LorC87], 365, 368, 865 [LorW86], 844 [Lü95], 644, 855 [Lueb01], 597, 846 [Luka89], 538, 566, 851 [LukC96], 438, 516, 861 [Luke96], 600, 863 [LuMM95], 579, 851 [LWZL02], 461, 846 [LycS89], 844, 845, 846, 850, 860 [MacB79], 857 [Maek99], 638, 855 [MaeP93], 639, 643, 855 [MagT87], 290, 291, 843 [Mail92], 89, 93, 837 [Malc77], 445, 446, 861 [MaLe98], 570, 580, 851 [ManC90], 840 [ManC92a], 458, 840 [ManC92b], 835 [Mand83], 190, 800, 801, 806, 843 [ManD94], 551, 578, 851 [ManK97], 551, 578, 851 [MäNS96], 688, 846 [Mant88], 173, 844 [MaPS86], 521, 579, 841 [MarM89], 567, 579, 851 [MarM91], 558, 851 [MarS89], 846 [Mart82], 517, 521, 841 [Mart87], 837, 844 [Mart94], 846 [Matv03], 693, 836 901 902 Bibliographic Index [McCa98], 211, 854 [Mcil92], 58, 858 [Meag82a], 860 [Meag82b], 860 [MeeW00], 650, 840 [MeeW90], 643, 855 [Mehl74], 445, 446, 861 [MeSS92], 630, 632, 839 [Micr94], 15, 848 [Miel91], 59, 843 [Mill86], 846 [Mill87], 579, 851 [Mill99], 150, 854 [MiMP87], 660, 662, 663, 667, 843 [MitR68], 857 [MiTW73], 857 [MitW78], 748, 842 [Miur00], 650, 840 [MölH99], 859 [Moon99], 460, 849 [Moor66], 726, 744, 852 [Moor79], 726, 852 [Morg83], 571, 849 [Morr90], 53, 858 [Morr91], 246, 854 [MorS92], 526, 862 [Mort85], 160, 178, 522, 559, 844 [Mort89], 852 [Mull96], 841, 844 [Mulm94], 838 [Nack82], 188, 853 [NarM95], 718, 838 [Nasr00], 530, 862 [Nasr87], 529, 573, 846 [Nata61], 773, 780, 781, 859 [NeNS72], 269, 865 [NeuN95], 358, 857 [Neva82], 324, 863 [NFMD90], 866 [NiBl94], 201, 202, 203, 846 [Niel74], 468, 861 [NiLN87], 81, 84, 837 [NinB93], 594, 595, 849 [NowR83], 532, 847 [OckS84], 579, 847 [Orou94], 718, 838 [OttP92], 842 [OweR87], 579, 851 CuuDuongThanCong.com [Paet90], 333, 837 [Paet95], 838, 840, 852, 854 [PalB98], 841 [PaPV95], 193, 847 [ParK96], 630, 632, 839 [Patr92], 538, 851 [Patr93], 538, 851 [Paul82], 146, 859 [Pavl82], 26, 32, 854 [Pedd92], 15, 848 [PenP86], 139, 164, 856 [PepH92], 752, 842 [PePR99], 483, 847 [Pete95], 526, 862 [Peter94], 602, 863 [PetR97], 529, 862 [PFTV86], 654, 855 [Pham92], 638, 855 [PhiO84], 567, 851 [PicS83], 857 [Pieg91], 433, 512, 861 [Pieg92], 557, 851 [PieR95], 601, 864 [PieT00], 517, 861 [PieT95], 409, 411, 430, 433, 436, 438, 445, 502, 512, 514, 516, 517, 531, 632, 861 [PieT98], 601, 864 [Pitt67], 40, 858 [Pitt85], 839 [PitW80], 46, 858 [Podg02], 193, 847 [PokG89], 85, 266, 415, 843 [Port81], 857 [Pösc84],526, 847 [Pott95], 644, 855 [Powe72], 567, 851 [PraG86], 538, 554, 557, 567, 570, 851 [PraG92], 502, 505, 861 [Pras91], 241, 854 [Prat87a], 198, 847 [Prat87b], 198, 847 [Prat89], 837 [Prat90], 517, 520, 521, 679, 841 [Prat95], 521, 841 [Prat96], 521, 841 [Prat97], 521, 841 [PraW85], 194, 847 [PreS85], 232, 233, 720, 838 [Preu86], 839 Bibliographic Index [RamG03], 186, 853 [Rams88], 419, 420, 861 [Rams89], 469, 861 [RanR91], 526, 847 [Rasa90], 444, 861 [ReBl85], 190, 843 [RedT95], 853 [Reev83], 190, 843 [Reif95], 527, 862 [RenE03], 199, 847 [Requ80], 847 [Requ96], 688, 847 [ReqV82], 160, 847 [ReqV83], 847 [ReqV85], 205, 208, 847 [RhyT01], 361, 866 [Ries75], 465, 862 [Ritt90], 345, 859 [RoaM92], 682, 837 [Robe63], 266, 865 [Rock70], 711, 840 [Rock90], 551, 630, 851 [Rock93], 418, 861 [RocO87], 676, 837 [RogA90], 134, 164, 388, 389, 433, 512, 852 [Roge01], 433, 512, 534, 861 [RogE90], 844, 847 [Roge98], 32, 46, 48, 58, 235, 266, 276, 284, 290, 291, 294, 307, 365, 843 [RoHD89], 599, 600, 601, 606, 864 [Roll95], 196, 847 [Rose79], 854 [RosG64], 668, 841 [RosK76], 26, 28, 44, 184, 185, 767, 841 [RosR84], 678, 837 [RosR86], 557, 855 [RosT91], 844, 850, 854 [RosV89], 206, 839 [Roth82], 348, 349, 859 [RouB96a], 638, 840 [RouB96b], 638, 840 [RoWW90], 40, 858 [Sabi85], 625, 839 [Sabi90], 473, 526, 532, 847 [Salo99], 360, 494, 502, 845 [Same84], 860 [Same90a], 860 [Same90b], 860 [SamW88], 860 CuuDuongThanCong.com 903 [SaPD88], 855 [Sapi92], 650, 840 [SaRE76], 169, 847 [Sarr98], 525, 862 [SaWS95], 460, 849 [SBGS69], 268, 865 [Scho46], 861 [Scho67], 408, 534, 861 [SchS95], 347, 854 [Schu93], 856 [Schw97], 668, 841 [ScML98], 181, 182, 367, 369, 866 [SeCK89], 570, 580, 851 [SéCM95], 461, 525, 847 [Sede87], 847 [Sede89], 551, 851 [SedM88], 570, 580, 851 [SedN90], 538, 547, 548, 551, 852 [SedP86], 538, 545, 551, 852 [SedW87], 459, 849 [Seel66], 767, 773, 778, 780, 781, 786, 788, 842 [Seid89], 411, 418, 422, 425, 426, 429, 430, 862 [Seid93], 418, 862 [SeWZ89], 547, 847 [SeZZ89], 615, 849 [ShaB84], 461, 862 [Shaf94], 756, 836 [ShaM95], 192, 193, 194, 195, 197, 198, 211, 687, 845 [Shap91], 224, 847 [ShAR95], 185, 853 [ShAR96], 184, 185, 853 [ShaS86], 664, 666, 843 [ShaT82], 637, 638, 840 [ShaV91a], 209, 211, 839 [ShaV91b], 211, 839 [ShaV93], 209, 211, 839 [ShaV95], 221, 847 [SheH92], 601, 864 [SheJ87], 579, 852 [Shen00], 679, 837 [Shen94], 578, 852 [Shen95], 578, 852 [Shen98], 679, 837 [Shew96], 725, 838 [ShiG95], 603, 604, 856 [ShiK91], 188, 847 [ShiS98], 139, 847 904 Bibliographic Index [ShKK91], 188, 847 [Shoe85], 147, 857 [Shoe91], 766, 857 [Shoe93], 146, 149, 857 [ShPB95], 185, 853 [ShPB96], 185, 853 [Smit79], 29, 32, 858 [Smit84], 190, 843 [Snyd92], 175, 177, 615, 624, 726, 732, 735, 736, 738, 739, 741, 742, 845 [Snyd92a], 726, 852 [SodT94], 192, 847 [Spie69], 776, 777, 859 [Spiv65], 249, 835 [StaH97], 596, 624, 856 [Stam98], 530, 862 [Stee51], 756, 836 [SteL00], 43, 858 [StFF91], 181, 866 [STGLS97], 186, 187, 188, 854 [Stil98], 756, 857 [StoD89], 456, 458, 459, 862 [Stoy92], 568, 852 [StrS89], 836, 837, 841, 845, 849, 850, 851 [SuDr95], 725, 839 [SuHH99], 228, 847 [SuLi83], 456, 457, 862 [SuLi89], 456, 460, 525, 526, 845 [SunS92], 342, 859 [SuSS74], 264, 293, 865 [Sutc80], 554, 839 [Suth65], 685, 864 [SutH74], 84, 837 [Szil91], 681, 837 [TaJS99], 854 [Taub94], 614, 836 [Tayl79], 764, 765, 857 [THBP90], 369, 866 [TheF97], 526, 840 [Thom90], 46, 858 [TilH84], 644, 855 [Till83], 435, 862 [Tilo80], 160, 208, 847 [Timm77], 559, 852 [Timm96], 11, 849 [TorS67], 314, 860 [TSGCV97], 854 [Turn88], 545, 557, 852 CuuDuongThanCong.com [Vale64], 711, 840 [VaMV89], 672, 837 [VanA84], 839 [VanD88], 11, 849 [VanG95], 249, 854 [VanN85], 40, 57, 58, 858 [VanW96], 459, 848 [Vatt92], 98, 837 [VaVM89], 672, 837 [VeDG99], 596, 597, 856 [VelB94], 799, 843 [Verm94], 185, 854 [VeVC94], 572, 849 [VFLL00], 685, 686, 864 [VigB95], 603, 604, 864 [ViMV94], 672, 679, 681, 683, 837 [VSBJ98], 592, 848 [WaCF92], 859 [WaCG87], 357, 857 [Wall90], 423, 855 [Wang81], 456, 457, 862 [Wang92], 580, 852 [Warn69], 273, 865 [Watk70], 278, 865 [WatP98], 185, 327, 854 [Wats86], 571, 849 [Wats89], 848 [Watt90], 843 [WatW92], 146, 149, 290, 291, 308, 318, 323, 327, 342, 351, 365, 859 [Week85], 693, 865 [WeiA77], 85, 274, 865 [WeiD97], 325, 863 [Weil80], 85, 837 [Weil85], 200, 201, 202, 848 [Weil94], 235, 237, 854 [Wern79], 445, 862 [West90], 359, 866 [Whit80], 322, 337, 343, 860 [Whit85], 343, 859 [Widd71], 784, 788, 842 [Will78], 318, 860 [Will83], 327, 836 [WilM93], 579, 852 [Wils87], 215, 839 [Wilt87], 8, 855 [WilV90a], 362, 866 [WilV90b], 367, 866 [WNDS99], 11, 849 Bibliographic Index [WolF97], 650, 840 [Woll00], 650, 840 [WolT92], 651, 840 [Wolt95], 854 [WooA98], 326, 863 [Wood87], 672, 673, 674, 837 [WooT85], 202, 848 [WoPF90], 318, 860 [Wrig85], 571, 849 [WriS00], 11, 849 [WuAn99], 569, 852 [Wüth98], 23, 858 [WuXi92], 837 [WyMW86], 365, 595, 866 [Wyvi90], 40, 858 CuuDuongThanCong.com [YaCK92], 365, 866 [YanF64], 764, 857 [Ye96], 651, 840 [YeMa99], 580, 852 [YKFT84], 860 [YooT98], 866 [Yu92], 213, 848 [YuGD91], 854 [YuMS01], 633, 862 [YuPM00], 484, 841 ˇ [ZalC99], 606, 719, 839 [ZheS00], 593, 856 [ZhoS99], 228, 852 [ZorS99], 526, 530, 862 905 CuuDuongThanCong.com Index of Algorithms Converting RBG to HSL, 305 Algorithm 8.6.4 Converting HSL to RGB, 306 Algorithm 10.2.1 ray tracing program, 340 Algorithm 10.2.2 shade function, 341 Algorithm 10.2.3.1 CSG ray intersection, 350 Algorithm 10.3.1 Gauss-Seidel radiosity algorithm, 353 Algorithm 10.3.2 progressive refinement for radiosity, 354 Algorithm 10.4.1.1 26-connected line drawing, 364 Algorithm 10.4.1.2 6-connected tripod line drawing, 366 Algorithm 11.4.1 de Casteljau algorithm, 401 Algorithm 11.5.2.1 de Casteljau algorithm, 424 Algorithm 11.5.2.2 de Boor algorithm, 426 Algorithm 11.5.4.1 B-spline span finding algorithm, 437 Algorithm 11.5.4.2 B-spline evaluation algorithm, 439 Algorithm 11.5.4.3 NURBS curve evaluation algorithm, 441 Algorithm 11.5.4.4 NURBS curve derivatives algorithm, 442 Algorithm 12.12.2.1 de Casteljau algorithm, 508 Algorithm 13.2.1 are convex sets disjoint, 541 Algorithm 13.4.3.1 faceted surface sectioning, 555 Algorithm 14.3.1 adaptive curve subdivision algorithm, 590 Algorithm 14.3.2 Outline for implicit tilers, 594 CuuDuongThanCong.com Algorithm 14.4.1 trapezoid creation algorithm, 607 Algorithm 14.5.1.1 Incremental curve tiling algorithm, 616 Algorithm 14.7.1 B-spline skinning algorithm, 632 Algorithm 14.7.2 Procedural skinning algorithm, 634 Algorithm 14.8.1 arc length algorithm, 635 Algorithm 14.8.2 arc length table building algorithm, 636 Algorithm 15.3.2.1 generating edge sequences, 665 Algorithm 17.2.1 Finding the splitting node, 699 Algorithm 17.2.2 A 1d range query algorithm, 700 Algorithm 17.2.3 Building a range tree, 701 Algorithm 17.2.4 A 2d range query algorithm, 702 Algorithm 17.3.1 The interval tree query algorithm, 705 Algorithm 17.3.2 The segment tree query algorithm, 707 Algorithm 17.3.3 Segment tree insertion algorithm, 708 Algorithm 17.6.1 Triangulation algorithm for monotone polygons, 719 Algorithm 18.4.1 constraint solution, 736 Algorithm 18.4.2 Merging intervals into components, 737 Algorithm 18.5.1 Implicit Curve Approximation, 740 Algorithm 18.6.1 constrained minimization, 743 Algorithm 22.4.1 Deterministic IFS, 807 Algorithm 22.4.2 Nondeterministic IFS, 808 907 ... p and q are 2n-adjacent in Zn if and only if n  q i - pi =1 i =1 They are (3n - 1)-adjacent in Zn if and only if p π q and |qi - pi| £ for £ i £ n Properties of 2n- and (3n - 1)-adjacency are... two equations in two unknowns a and b, which are easily solved We get that d -c bc - ad x+ b-a b-a x -a (d - c) =c+ b-a S(x) = The second form of the answer says that we send x to that point in... assume that a window-to-viewport transformation has been implemented 1.5.1 A window-to-viewport transformation The goal of this first project is simply to write and test the window-to-viewport transformation

Ngày đăng: 29/08/2020, 18:21

TỪ KHÓA LIÊN QUAN