Luận Văn Lập trình đồ họa trên Java 2D và 3D

Thảo luận trong 'Công Nghệ Thông Tin' bắt đầu bởi Mai Kul, 3/12/13.

  1. Mai Kul

    Mai Kul New Member

    Bài viết:
    1,299
    Được thích:
    0
    Điểm thành tích:
    0
    Xu:
    0Xu
    LẬP TRÌNH ĐỒ HỌA TRÊN JAVA 2D VÀ 3D​

    Lời nói đầu


    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 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 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.


    Phần 1 7
    Lập trình đồ họa với Java 2D 7


    Chương 1 8
    Tổng quan về Java 2D API 8
    1.1 Enhanced Graphics, Text, and imaging 8
    1.2 Rendering Model 9
    1.2.1 Coordinate Systems 9
    1.2.1.1 User Space 9
    1.2.1.2 Device Space 10
    1.2.2 Transforms 10
    1.2.3 Fonts 10
    1.2.4 Images 11
    1.2.5 Fills and Strokes 12
    1.2.6 Composites 12
    1.3 Backward Compatibility and Platform independence 13
    1.3.1 Backward Compatibility 13
    1.3.2 Platform independence 14
    1.4 The Java 2D™ API Packages 14


    Chương 2: 17
    Rendering with Graphics2D 17
    2.1 Các lớp và giao diện. 17
    2.2 Rendering Concepts 18
    2.2.1 Rendering Process 18
    2.2.2 Controlling Rendering Quality 19
    2.2.3 Stroke Attributes 20
    2.2.4 Fill Attributes 21
    Quá trình xử lý theo phiên 21
    2.2.5 Clipping Paths 22
    2.2.6 Transformations 22
    2.2.6.1 Constructing an AffineTransform 23
    2.2.7 Composite Attributes 24
    2.2.7.1 Managing Transparency 24
    2.2.7.2 Transparency and images 25
    2.3 Thiết lập Graphics2Context 25
    2.3.1 Setting Rendering Hints 25
    2.3.2 Specifying Stroke Attributes 26
    2.3.2.1 Setting the Stroke Width 26
    2.3.2.2 Specifying Join and Endcap Styles 26
    2.3.2.3 Setting the Dashing Pattern 26
    2.3.3 Specifying Fill Attributes 27
    2.3.3.1 Filling a Shape with a Gradient 27
    2.3.3.2 Filling a Shape with a Texture 27
    2.3.4 Setting the Clipping Path 28
    2.3.5 Setting the Graphics2D Transform 29
    2.3.6 Specifying a Composition Style 30
    2.3.6.1 Using the Source Over Compositing Rule 30
    2.3.6.2 Increasing the Transparency of Composited Objects 30
    2.4 Rendering Graphics Primitives 31
    2.4.1 Drawing a Shape 31
    2.4.2 Filling a Shape 32
    2.4.3 Rendering Text 32
    2.4.4 Rendering images 32
    2.5 Defining Custom Composition Rules 33
    2.6 Rendering in a Multi-Screen Environment 33


    Chương 3 41
    Các đối tượng hình họa 41
    3.1 Giao diện và lớp. 41
    3.2 Các khái niệm hình học: 43
    3.2.1 Constructive Area Geometry 43
    3.2.2 Bounds and Hit Testing 43
    3.3 Combining Areas to Create New Shapes 47


    Chương 4: 50
    Hiển thị Font và văn bản 50
    4.1.Giao diện và lớp. 50
    4.2.Các khái niệm về Font 51
    4.3 Các khái niệm về Text Layout. 52
    4.3.1 Vẽ chữ. 52
    4.3.2 Ordering Text 54
    4.3.3 Đo và định vị văn bản 55
    4.3.4 Hỗ trợ thao tác với văn bản. 55
    4.3.4.1 Hiển thị dấu nhắc 55
    4.3.4.2 Di chuyển dấu nhắc. 56
    4.3.4.3 Hit Testing 57
    4.3.4.4 Đánh dấu vùng lựa chọn. 58
    4.3.5 Thực thi việc hiển thị văn bản trong ứng dụng Java™ . 58
    4.4 Quản lý việc hiển thị văn bản. 59
    4.4.1 Trình bày văn bản. 60
    Hiển thị dấu nhắc kép. 60
    4.4.3 Di chuyển dấu nhắc. 61
    4.4.4 Hit Testing 61
    4.4.5 Đánh dấu vùng lựa chọn. 61
    4.4.6 Querying Layout Metrics 61
    4.4.7 Vẽ văn bản trên nhiều dòng. 62


    Chương 5 66
    Tạo ảnh 66
    5.1 Các giao diện và các lớp 66
    5.1.1 Các giao diện imaging (imaging interfaces) 66
    5.1.2 Các lớp dữ liệu ảnh(image Data Classes) 67
    5.1.3 image Operation Classes 68
    5.1.4 Sample Model Classes 68
    Color Model Classes 69
    5.1.6 Exception Classes 70
    5.2 Immediate Mode imaging Concepts 70
    5.2.1 Terminology 71
    5.3 Using Bufferedimages 72
    5.3.1 Creating a Bufferedimage 72
    5.3.2 Drawing in an Offscreen Buffer 73
    5.3.2.1 Creating an Offscreen Buffer 73
    5.3.2.2 Drawing in an Offscreen Buffer 74
    5.3.3 Manipulating Bufferedimage Data Directly 75
    5.3.4 Filtering a Bufferedimage 75
    5.3.5 Rendering a Bufferedimage 75
    5.4 Managing and Manipulating Rasters 78
    5.4.1 Creating a Raster 79
    5.4.2 Parent and Child Rasters 79
    5.4.4 The WritableRaster Subclass 79
    5.5 Image Data and DataBuffers 79
    5.6 Extracting Pixel Data from a SampleModel 80
    5.7 ColorModels and Color Data 81
    5.7.1 Lookup Table 81
    5.8 image Processing and Enhancement 81
    5.8.1 Using an image Processing Operation 83


    Chương 6 85
    Mầu sắc 85
    6.1 Các lớp 85
    6.2 Những định nghĩa về mầu sắc. 86
    6.2.1 Không gian mầu 86
    6.2.1 Biểu diễn màu 88


    Chương 7 90
    In ấn 90
    7.1 Các giao diện và các lớp 90
    7.2.1 Supporting Printing 91
    7.2.1.1 Điều khiển in (Job Control) 91
    7.2.2 Page Painters 92
    7.2.3 Printable Jobs and Pageable Jobs 93
    7.2.4 Typical Life-Cycle of a PrinterJob 94
    7.3 Printing with Printables 95
    7.3.2 Printing a File 96
    7.4.1 Using a Pageable Job 99
    7.4.2 Using Multiple Page Painters 100


    Phần 2 106
    Lập trình đồ họa với Java 3D 106


    CHƯƠNG 1 107
    NHẬP MÔN LẬP TRÌNH TRÊN JAVA 3D 107
    1.1 Tổng quan về Java 3D API ™ 107
    1.2 Các vấn đề cơ bản về Java 3D API™ 107
    1.3 Xây dựng đồ thị khung cảnh 108
    1.3.1 Thừa kế cấp cao từ Java 3D API 111
    1.4 Cách thức để viết một chương trình Java 3D 112
    1.4.1 Công thức đơn giản để viết một chương trình Java 3D 112
    1.5 Một vài thuật ngữ trong Java 3D 115
    1.6 Ví dụ đơn giản: HelloJava3Da 116
    1.6.1 Các lớp của Java 3D Classes được sử dụng trong HelloJava3Da 120
    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. 122
    1.7 Quay hình lập phương 122
    1.7.1 Sự kết hợp của các phép biến hình: HelloJava3Db 123
    1.8 Khả năng và hoạt động 123
    1.8.1 Dịch các nội dung 124
    1.8.2 Khả năng 124
    1.9 Thêm vào các hành vi animation 125
    1.9.1 Định nghĩa các hành vi animation 126
    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 126
    1.9.3 Lập danh mục các vùng 127
    1.9.4 Ví dụ về hành vi: HelloJava3Dc 128
    1.9.5 Phép biến hình và kết hợp các hành vi .Ví dụ: HelloJava3Dd 129


    CHƯƠNG 2 132
    Tạo các hình 132
    2.1 Hệ tọa độ thế giới ảo 132
    2.2 Visual Object Definition Basics 132
    2.2.1 An Instance of Shape3D Defines a Visual Object 133
    2.2.2 Node Components 134
    2.2.3 Defining Visual Object Classes 134
    2.3 Các lớp tiện ích hình học 135
    2.3.1 Box 136
    2.3.2 Cone 136
    2.3.3 Cylinder 137
    2.3.4 Sphere 137
    2.3.5 More About Geometric Primitives 138
    2.3.6 ColorCube 138
    2.3.7 Example: Creating a Simple Yo-Yo From Two Cones 138
    2.4 Các lớp toán học 142
    2.4.1 Point Classes 144
    2.4.2 Color Classes 144
    2.4.3 Vector Classes 145
    2.4.4 TexCoord Classes 146
    2.5 Các lớp hình học 146
    2.5.1 GeometryArray Class 147
    2.5.2 Subclasses of GeometryArray 151
    2.5.3 Subclasses of GeometryStripArray 152
    2.5.4 Subclasses of IndexedGeometryArray 156
    2.5.5 Axis.java is an Example of IndexedGeometryArray 158
    2.6 Appearance and Attributes 158
    2.6.1 Appearance NodeComponent 159
    2.6.2 Sharing NodeComponent Objects 159
    2.6.3 Attribute Classes 160
    2.6.4 Example: Back Face Culling 165
    2.7 Bounds and Scope 170
    2.7.1 Bounds Node Components 171
    2.7.2 BoundingLeafa Node 173
    2.7.3 Scope 174
    2.8 Hình học nâng cao 175
    2.8.1 Multiple Geometries in a Single Shape3D 176
    2.8.2 GeometryArray 177
    2.8.4 AlternateAppearance <new in 1.2> 181
    2.9 Clipping – Cắt xén 182
    2.9.1 View Defines a Frustum 182
    2.9.2 Clip Node 183
    2.9.4 ModelClip Example 184


    CHƯƠNG 3 186
    TẠO NỘI DUNG 186
    3.1 Nội dung chính 186
    3.1.1 GeometryInfo 186
    3.2.1 Một ví dụ đơn giản về GeometryInfo 187
    3.2.2 Sử dụng GeometryInfo 187
    3.2.3 Một số lớp thông dụng có liên quan đến GeometryInfo 188
    Loaders 191
    Một ví dụ đơn giản sử dụng leader. 191
    Các loader phổ biến 191
    3.3.3 Giao diện của gói Loader và lớp cơ sở 192
    Viết một loader 194
    Công việc của một loader 194
    Hàm tạo lớp Loader 195
    Viết một File Loader đơn giản 196
    Text2D 201
    3.5.1 Ví dụ Text2D đơn giản 202
    3.5.2 Lớp Text2D 202
    Text3D 203
    Một ví dụ Text3D 204
    Những lớp liên quan để tạo ra đối tượng Text3D 205
    Nền không gian đồ họa 209
    Một ví dụ background 209
    Lớp Background 210


    CHƯƠNG 4 212
    TƯƠNG TÁC 212
    4.1 Hành vi: Cơ sở của tương tác và hoạt hình 212
    4.1.1 Ứng dụng của hành vi 212
    4.1.2 Tổng quan lớp Behaviour 213
    4.2 Cơ bản về hành vi 213
    4.2.1 Viết một lớp Behaviour 214
    4.2.2 Sử dụng một lớp Behaviour 216
    4.2.3 Các hàm API trong lớp Behaviour 219
    4.3 Điều kiện kích hoạt: Cách kích hoạt các hành vi 220
    4.3.1 Điều kiện kích hoạt 221
    4.3.2 WakeupCriterion 221
    4.3.3 Quy định lớp WakeupCriterion 222
    4.3.4 Thành phần của WakeupCondition 230
    4.4 Lớp Behaviour tiện ích xử lý bàn phím 231
    4.4.1 Một ví dụ đơn giản 231
    4.4.2 Lớp KeyNavigatorBehaviour và KeyNavigator 232
    4.5 Lớp tiện ích tương tác với chuột 233
    4.5.1 Sử dụng lớp MouseBehaviour 233
    4.5.2 Mouse Behaviour Foundation 236
    4.5.3 Các lớp MouseBehaviour 236
    4.5.4 Mouse Navigation 238
    4.6 Picking Object 239
    4.6.1 Using Picking Utility Classes 242
    4.6.2 Các hàm API cơ bản trong các lớp Picking 244
    4.6.3 Các lớp picking 249
    4.6.4 Các lớp Picking Behavior 251


    CHƯƠNG 5 253
    Hoạt Hình 253
    Animation - Hoạt hình: 253
    Đối tượng Interpolator và Alpha với hoạt ảnh dựa thời gian 254
    Alpha 254
    Sử dụng các đối tượng Interpolator và Alpha: 256
    Ví dụ sử dụng lớp Alpha và RotationInterpolator: 256
    Alpha API: 259
    Các lớp hành vi Interpolator : 261
    Core Interpolator API: 268
    Các lớp đối tượng nội suy đường: 272
    Lớp Billboard : 277
    Sử dụng đối tượng Billboard 277
    Chương trình ví dụ sử dụng Billboard 279
    Giao diện lập trình ứng dụng của Billboard (Billboard API) 281
    OrientedShape3D 282
    Giao diện lập trình ứng dụng của OrientedShape3D 282
    Ví dụ sử dụng OrientedShape3D 283
    Hoạt ảnh mức chi tiết (Level Of Detail Animations) 284
    Sử dụng đối tượng DistanceLOD 285
    Các lỗi thường gặp khi sử dụng LOD 285
    Ví dụ sử dụng DistanceLOD 285
    Giao diện lập trình ứng dụng DistanceLOD API 289
    Morph 290
    Sử dụng đối tượng Morph 290
    Ví dụ sử dụng Morph 291
    Giao diện lập trình ứng dụng Morph API 293
    Giao diện GeometryUpdater 294
    Sử dụng GeometryUpdater 294
    Chương trình ví dụ hệ thống phân tử đài phun nước sử dụng GeometryUpdater 295
     

    Các file đính kèm:

Đang tải...