Đề tài Lập trình đồ họa trên Java 2D và 3D

Sự phát triển của khoa học, kĩ thuật, nghệ thuật, kinh doanh, và công nghệ luôn luôn phụ thuộc vào khả năng truyền đạt thông tin của chúng ta, hoặc thông qua các bit dữ liệu lưu trữ trong microchip hoặc thông qua giao tiếp bằng tiếng nói. Câu châm ngôn từ xa xưa “một hình ảnh có giá trị hơn cả vạn lời" hay "trăm nghe không bằng một thấy" cho thấy ý nghĩa rất lớn của hình ảnh trong việc chuyển tải thông tin. Hình ảnh bao giờ cũng được cảm nhận nhanh và dễ dàng hơn, đặc biệt là trong trường hợp bất đồng về ngôn ngữ. Do đó không có gì ngạc nhiên khi mà ngay từ khi xuất hiện máy tính, các nhà nghiên cứu đã cố gắng sử dụng nó để phát sinh các ảnh trên màn hình. Trong suốt gần 50 năm phát triển Lập trình đồ họa trên Java 2D và 3D của máy tính, khả năng phát sinh hình ảnh bằng máy tính của chúng ta đã đạt tới mức mà bây giờ hầu như tất cả các máy tính đều có khả năng đồ họa.Đồ họa máy tính là một trong những lĩnh vực lí thú nhất và phát triển nhanh nhất của tin học. Ngay từ khi xuất hiện, đồ họa máy tính đã có sức lôi cuốn mãnh liệt, cuốn hút rất nhiều người ở nhiều lĩnh vực khác nhau như khoa học, nghệ thuật, kinh doanh, quản lí, . Tính hấp dẫn và đa dạng của đồ họa máy tính có thể được minh họa rất trực quan thông qua việc khảo sát các ứng dụng của nó. Ngày nay, đồ họa máy tính được sử dụng trong rất nhiều lĩnh vực khác nhau như công nghiệp, thương mại, quản lí, giáo dục, giải trí, Số lượng các chương trình đồ họa ứng dụng thật khổng lồ và phát triển liên tục.Trong lĩnh vực công nghiệp,CAD(computer-aided design) đã được sử dụng hầu hết trong việc thiết kế các cao ốc, ô tô, máy bay, tàu thủy, tàu vũ trụ, máy tính, Trong lĩnh vực giải trí,nghệ thuật, đồ họa máy tính giúp ta tạo ra các chương trình trò chơi,các kĩ xảo điện ảnh cho các nhà làm phim,hay ngay chính giao diện đồ họa đã làm nâng cao khả năng giao tiếp giữa người và máy tính. Để có thể làm được những ứng dụng đồ họa hữu ích cho cuộc sống,trước hết chúng ta cần phải có một nền tảng vững chắc về lập trình đồ họa.Có rất nhiều ngôn ngữ hỗ trợ lập trình đồ họa máy tính,mỗi ngôn ngữ được xây dưng trên những thư viện đồ họa riêng,có những thế mạnh riêng.Và khi nói về lập trình đồ họa,chúng ta không thể không nói đến ngôn ngữ Java,một ngôn ngữ rất mạnh trong lĩnh vực này.Với mục đích nghiên cứu,tìm hiểu và mang đến cho những ai muốn tìm hiều về lập trình đồ họa một tài liệu thiết thực,nhóm chúng em đã chọn đề tài làm tutorial về lập trình đồ họa trên nền tảng ngôn ngữ lâp trình Java,dựa trên các tài liệu training trên mạng của hãng Sun.Vì là lần đầu làm tài liệu tham khảo Lập trình đồ họa trên Java 2D và 3D nên chúng em không tránh khỏi sai sót.Chúng em mong thầy xem xét và góp ý cho tài liệu này.Chúng em chân thành cảm ơn

pdf571 trang | Chia sẻ: ngtr9097 | Lượt xem: 7136 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đề tài Lập trình đồ họa trên Java 2D và 3D, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lập trình đồ họa trên Java 2D và 3D Phần 1 .............................................................................................................................9 Lập trình đồ họa với Java 2D ..........................................................................................9 Chương 1 ..................................................................................................................10 Tổng quan về Java 2D API .......................................................................................10 1.1 Enhanced Graphics, Text, and imaging ..........................................................10 1.2 Rendering Model ............................................................................................11 1.2.1 Coordinate Systems .................................................................................12 1.2.1.1 User Space .......................................................................................12 1.2.1.2 Device Space ....................................................................................13 1.2.2 Transforms ...............................................................................................14 1.2.3 Fonts ........................................................................................................15 1.2.4 Images ......................................................................................................16 1.2.5 Fills and Strokes .......................................................................................17 1.2.6 Composites ...............................................................................................18 Backward Compatibility and Platform independence ..........................................19 1.3.1 Backward Compatibility ..........................................................................19 1.3.2 Platform independence ............................................................................21 1.4 The Java 2D™ API Packages .........................................................................21 Chương 2: .................................................................................................................25 Rendering with Graphics2D .....................................................................................25 2.1 Các lớp và giao diện. ......................................................................................26 2.2 Rendering Concepts ........................................................................................27 2.2.1 Rendering Process ....................................................................................28 2.2.2 Controlling Rendering Quality ................................................................29 2.2.3 Stroke Attributes ......................................................................................31 2.2.4 Fill Attributes ...........................................................................................32 Quá trình xử lý theo phiên ............................................................................34 2.2.5 Clipping Paths ..........................................................................................34 2.2.6 Transformations .......................................................................................35 2.2.6.1 Constructing an AffineTransform ....................................................37 2.2.7 Composite Attributes ...............................................................................38 2.2.7.1 Managing Transparency ..................................................................39 2.2.7.2 Transparency and images .................................................................40 2.3 Thiết lập Graphics2Context ............................................................................40 2.3.1 Setting Rendering Hints ...........................................................................40 2.3.2 Specifying Stroke Attributes ....................................................................41 2.3.2.1 Setting the Stroke Width ..................................................................41 2.3.2.2 Specifying Join and Endcap Styles ..................................................42 2.3.2.3 Setting the Dashing Pattern ..............................................................42 2.3.3 Specifying Fill Attributes .........................................................................44 2.3.3.1 Filling a Shape with a Gradient .......................................................44 2.3.3.2 Filling a Shape with a Texture .........................................................45 2.3.4 Setting the Clipping Path .........................................................................46 2.3.5 Setting the Graphics2D Transform ..........................................................48 2.3.6 Specifying a Composition Style ..............................................................51 2.3.6.1 Using the Source Over Compositing Rule .......................................51 2.3.6.2 Increasing the Transparency of Composited Objects ......................51 2.4 Rendering Graphics Primitives .......................................................................53 2.4.1 Drawing a Shape ......................................................................................53 2.4.2 Filling a Shape .........................................................................................55 1 Lập trình đồ họa trên Java 2D và 3D 2.4.3 Rendering Text ........................................................................................56 2.4.4 Rendering images ....................................................................................56 2.5 Defining Custom Composition Rules .............................................................56 2.6 Rendering in a Multi-Screen Environment .....................................................57 Chương 3 ..................................................................................................................75 Các đối tượng hình họa .............................................................................................75 3.1 Giao diện và lớp. .............................................................................................75 3.2 Các khái niệm hình học: .................................................................................78 3.2.1 Constructive Area Geometry ...................................................................79 3.2.2 Bounds and Hit Testing ...........................................................................80 3.3 Combining Areas to Create New Shapes ........................................................88 Chương 4: .................................................................................................................94 Hiển thị Font và văn bản ...........................................................................................94 4.1.Giao diện và lớp. .............................................................................................94 4.2.Các khái niệm về Font ....................................................................................96 4.3 Các khái niệm về Text Layout. .......................................................................98 4.3.1 Vẽ chữ. .....................................................................................................99 4.3.2 Ordering Text .........................................................................................101 4.3.3 Đo và định vị văn bản ............................................................................103 4.3.4 Hỗ trợ thao tác với văn bản. ...................................................................104 4.3.4.1 Hiển thị dấu nhắc ............................................................................104 4.3.4.2 Di chuyển dấu nhắc. .......................................................................106 4.3.4.3 Hit Testing .....................................................................................107 4.3.4.4 Đánh dấu vùng lựa chọn. ...............................................................108 4.3.5 Thực thi việc hiển thị văn bản trong ứng dụng Java™ . ........................109 Quản lý việc hiển thị văn bản. ............................................................................110 4.4.1 Trình bày văn bản. .................................................................................111 Hiển thị dấu nhắc kép. ....................................................................................112 4.4.3 Di chuyển dấu nhắc. ...............................................................................113 4.4.4 Hit Testing .............................................................................................114 4.4.5 Đánh dấu vùng lựa chọn. .......................................................................115 4.4.6 Querying Layout Metrics .......................................................................115 4.4.7 Vẽ văn bản trên nhiều dòng. ..................................................................116 Chương 5 ................................................................................................................126 Tạo ảnh .......................................................................................................................126 5.1 Các giao diện và các lớp ..........................................................................126 5.1.1 Các giao diện imaging (imaging interfaces) .........................................127 5.1.2 Các lớp dữ liệu ảnh(image Data Classes) ..............................................127 5.1.3 image Operation Classes ........................................................................129 5.1.4 Sample Model Classes ...........................................................................130 Color Model Classes .......................................................................................131 5.1.6 Exception Classes ..................................................................................132 5.2 Immediate Mode imaging Concepts .............................................................133 5.2.1 Terminology ...........................................................................................135 5.3 Using Bufferedimages ..................................................................................136 5.3.1 Creating a Bufferedimage ......................................................................136 5.3.2 Drawing in an Offscreen Buffer ............................................................137 5.3.2.1 Creating an Offscreen Buffer .........................................................138 5.3.2.2 Drawing in an Offscreen Buffer ....................................................140 5.3.3 Manipulating Bufferedimage Data Directly ..........................................141 2 Lập trình đồ họa trên Java 2D và 3D 5.3.4 Filtering a Bufferedimage ......................................................................142 5.3.5 Rendering a Bufferedimage ..................................................................142 5.4 Managing and Manipulating Rasters ............................................................150 5.4.1 Creating a Raster ....................................................................................150 5.4.2 Parent and Child Rasters ........................................................................151 5.4.4 The WritableRaster Subclass .................................................................151 5.5 Image Data and DataBuffers .........................................................................152 5.6 Extracting Pixel Data from a SampleModel .................................................153 5.7 ColorModels and Color Data ........................................................................154 5.7.1 Lookup Table .........................................................................................155 5.8 image Processing and Enhancement .............................................................155 5.8.1 Using an image Processing Operation ...................................................158 Chương 6 ................................................................................................................162 Mầu sắc ...................................................................................................................162 6.1 Các lớp .........................................................................................................163 6.2 Những định nghĩa về mầu sắc. ......................................................................163 6.2.1 Không gian mầu ....................................................................................164 6.2.1 Biểu diễn màu .......................................................................................167 Chương 7 ...............................................................................................................171 In ấn ........................................................................................................................171 7.1 Các giao diện và các lớp ...............................................................................171 7.2.1 Supporting Printing ................................................................................174 7.2.1.1 Điều khiển in (Job Control) ...........................................................174 7.2.2 Page Painters ..........................................................................................175 7.2.3 Printable Jobs and Pageable Jobs ...........................................................177 7.2.4 Typical Life-Cycle of a PrinterJob ................................................................178 7.3 Printing with Printables ................................................................................181 7.3.2 Printing a File .........................................................................................185 7.4.1 Using a Pageable Job .............................................................................191 7.4.2 Using Multiple Page Painters ................................................................193 Phần 2 .........................................................................................................................206 Lập trình đồ họa với Java 3D ......................................................................................206 CHƯƠNG 1 ............................................................................................................207 NHẬP MÔN LẬP TRÌNH TRÊN JAVA 3D .........................................................207 1.1 Tổng quan về Java 3D API ™ ......................................................................207 1.2 Các vấn đề cơ bản về Java 3D API™ ..........................................................208 1.3 Xây dựng đồ thị khung cảnh .........................................................................208 1.3.1 Thừa kế cấp cao từ Java 3D API ..........................................................214 1.4 Cách thức để viết một chương trình Java 3D ....................................................216 1.4.1 Công thức đơn giản để viết một chương trình Java 3D ........................216 1.5 Một vài thuật ngữ trong Java 3D .................................................................221 1.6 Ví dụ đơn giản: HelloJava3Da .....................................................................223 1.6.1 Các lớp của Java 3D Classes được sử dụng trong HelloJava3Da ..............229 Tạo nên hình lập phương có kích thước được định ra bởi các giá trị cho trước. ....233 1.7 Quay hình lập phương .................................................................................233 1.7.1 Sự kết hợp của các phép biến hình: HelloJava3Db ...............................235 1.8 Khả năng và hoạt động .................................................................................236 1.8.1 Dịch các nội dung ..................................................................................236 1.8.2 Khả năng ...............................................................................................237 1.9 Thêm vào các hành vi animation ..................................................................239 3 Lập trình đồ họa trên Java 2D và 3D 1.9.1 Định nghĩa các hành vi animation .........................................................240 1.9.2 Các hàm biến đổi về thời gian: Ánh xạ một hành vi với thời gian ........241 1.9.3 Lập danh mục các vùng .........................................................................242 1.9.4 Ví dụ về hành vi: HelloJava3Dc ...........................................................243 1.9.5 Phép biến hình và kết hợp các hành vi .Ví dụ: HelloJava3Dd .............246 CHƯƠNG 2 ............................................................................................................251 Tạo các hình ............................................................................................................251 2.1 Hệ tọa độ thế giới ảo .....................................................................................251 2.2 Visual Object Definition Basics ...................................................................252 2.2.1 An Instance of Shape3D Defines a Visual Object ................................252 2.2.2 Node Components ..................................................................................254 2.2.3 Defining Visual Object Classes .............................................................255 2.3 Các lớp tiện ích hình học .............................................................................256 2.3.1 Box .........................................................................................................257 2.3.2 Cone ......................................................................................................259 2.3.3 Cylinder .................................................................................................259 2.3.4 Sphere ....................................................................................................260 2.3.5 More About Geometric Primitives ........................................................261 2.3.6 ColorCube .............................................................................................261 2.3.7 Example: Creating a Simple Yo-Yo From Two Cones ........................261 2.4 Các lớp toán học ...........................................................................................267 2.4.1 Point Classes .............................................................................................271 2.4.2 Color Classes .........................................................................................272 2.4.3 Vector Classes ........................................................................................274 2.4.4 TexCoord Classes ..................................................................................275 2.5 Các lớp hình học ...........................................................................................276 2.5.1 GeometryArray Class ...........................................................................277 2.5.2 Subclasses of GeometryArray ..............................................................284 2.5.3 Subclasses of GeometryStripArray ........................................................286 2.5.4 Subclasses of IndexedGeometryArray ...................................................293 2.5.5 Axis.java is an Example of IndexedGeometryArray .........