sweet_day_97

New Member

Download miễn phí Lập trình đồ họa trên Java 2D và 3D





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

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

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

 





Để tải tài liệu này, vui lòng Trả lời bài viết, Mods sẽ gửi Link download cho bạn ngay qua hòm tin nhắn.

Ketnooi -


Ai cần tài liệu gì mà không tìm thấy ở Ketnooi, đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:


tượng này.
void setColor(int index, float color[])
void setColor(int index, byte color[])
void setColor(int index, Color* color)
Lập màu tương ứng với đỉnh với mỗi đỉnh được định nghĩa là một chỉ mục cho đối tượng này. void setColors(int index, float colors[])
void setColors(int index, byte colors[])
void setColors(int index, Color* colors[])
Lập các màu tương ứng với các đỉnh ,với mỗi đỉnh được định nghĩa là một chỉ mục cho đối tượng này.
void setNormal(int index, float normal[])
void setNormal(int index, Vector* normal)
Lập trực giao tương ứng với mỗi đỉnh tại vị trí chỉ mục được chỉ ra cho đối tượng này.
void setNormals(int index, float normals[])
void setNormals(int index, Vector* normals[])
Lập các trực giao tương ứng với các đỉnh tại vị trí chỉ mục được chỉ ra cho đối tượng này.
void setTextureCoordinate(int texCoordSet, int index, float texCoord[])
void setTextureCoordinate(int texCoordSet, int index, TexCoord* coordinate)
Lập texture coordinate ứng với mỗi đỉnh tại vị trí chỉ mục cho trước cho một tập texture coordinate của đối tượng.
GeometryArray Methods (partial list, continued)
void setTextureCoordinates(int texCoordSet, int index,
float texCoords[])
void setTextureCoordinates(int texCoordSet, int index,
TexCoord* texCoords[])
Lập các texture coordinate ứng với các đỉnh tại vị trí chỉ mục cho trước cho một tập texture coordinate của đối tượng.
void setInitialVertexIndex(int initialVertexIndex)
Lập chỉ mục cho đỉnh ban đầu với đối tượng GeometryArray. Cho phép một vài đỉnh có thể bỏ qua trong việc dựng hình, và các hoạt động khác.
void setValidVertexCount(int validVertexCount)
Lạp các giá trị tính toán đỉnh đúng cho đối tượng GeometryArray. Cho phép một vài dữ liệu đỉnh có thể bỏ qua khi dựng hình, chọn lọc và các hoạt động khác.
Đoạn mã 2-5 chỉ ra trường hợp sử dụng cách của GeometryArray để lưu giữ tạo độ và giá trị màu trong mảng LineArray. Đối tượng trục X chỉ gọi cách setCoordinate() để lưu trữ dữ liệu tọa độ. Đối tượng trục Y gọi cả 2 cách setColor() và setCoordinate() để nạp giá trị màu RGB và giá trị tọa độ. Đối tượng trục Z thì gọi 10 lần cách setCoordinate() cho mỗi đỉnh và gọi setColors() một lần để nạp cho cả 10 đỉnh với 1 cách.
// //////////////////////////////////////////
//
// create axis subgraph
//
public Axis() {
axisBG = new BranchGroup();
// create line for X axis
LineArray axisXLines = new LineArray(2, LineArray.COORDINATES);
axisBG.addChild(new Shape3D(axisXLines));
axisXLines.setCoordinate(0, new Point3f(-1.0f, 0.0f, 0.0f));
axisXLines.setCoordinate(1, new Point3f(1.0f, 0.0f, 0.0f));
Color3f red = new Color3f(1.0f, 0.0f, 0.0f);
Color3f green = new Color3f(0.0f, 1.0f, 0.0f);
Color3f blue = new Color3f(0.0f, 0.0f, 1.0f);
// create line for Y axis
LineArray axisYLines = new LineArray(2, LineArray.COORDINATES
| LineArray.COLOR_3);
axisBG.addChild(new Shape3D(axisYLines));
axisYLines.setCoordinate(0, new Point3f(0.0f, -1.0f, 0.0f));
axisYLines.setCoordinate(1, new Point3f(0.0f, 1.0f, 0.0f));
axisYLines.setColor(0, green);
axisYLines.setColor(1, blue);
// create line for Z axis
Point3f z1 = new Point3f(0.0f, 0.0f, -1.0f);
Point3f z2 = new Point3f(0.0f, 0.0f, 1.0f);
LineArray axisZLines = new LineArray(10, LineArray.COORDINATES
| LineArray.COLOR_3);
axisBG.addChild(new Shape3D(axisZLines));
axisZLines.setCoordinate(0, z1);
axisZLines.setCoordinate(1, z2);
axisZLines.setCoordinate(2, z2);
axisZLines.setCoordinate(3, new Point3f(0.1f, 0.1f, 0.9f));
axisZLines.setCoordinate(4, z2);
axisZLines.setCoordinate(5, new Point3f(-0.1f, 0.1f, 0.9f));
axisZLines.setCoordinate(6, z2);
axisZLines.setCoordinate(7, new Point3f(0.1f, -0.1f, 0.9f));
axisZLines.setCoordinate(8, z2);
axisZLines.setCoordinate(9, new Point3f(-0.1f, -0.1f, 0.9f));
Color3f colors[] = new Color3f[9];
colors[0] = new Color3f(0.0f, 1.0f, 1.0f);
for (int v = 0; v < 9; v++) {
colors[v] = red;
}
axisZLines.setColors(1, colors);
} // end of axis constructor
Màu mặc định cho các đỉnh của một đối tượng mảng GeometryArray là trắng, nếu cả COLOR_3 và COLOR_4 không được định nghĩa. Khi các đường hay đa giác đầy được dựng với các màu khác nhau tại mỗi đỉnh thì các màu sẽ mịn dần giữa các đỉnh sử dụng phép đánh bóng Gouraud.
Bước 3: Tạo đối tượng Shape3D tham chiếu đến đối tượng GeometryArray
Đoạn mã dưới đây chỉ ra cách làm thế nào để đối tượng Shape3D tham chiếu đến đối tượng GeometryArray. Đối tượng Shape3D được thêm vào một BranchGroup sẽ được thêm vào ở nơi nào đó trên đồ thị khung cảnh. (Shape3D là lớp con của Node, vì thế Shape3D có thể thêm vào thành con của một đồ thị khung cảnh )
Đồ thị khung cảnh được chỉ ra ở dưới đây:
2.5.2 Subclasses of GeometryArray
Như đã nói ở phần trên do GeometryArray là lớp trừu tượng là lớp cha của rất nhiều lớp con hữu dụng, chẳng hạn như LineArray. Hình 1-2 cho thấy cây thừa kế đối với lớp GeometryArray và các lớp con của nó. Lí do tồn tại của các lớp con này là làm sao để trình dựng hình của Java 3D có thể quyết định dựng đối với các đỉnh của các lớp đó.
Hình 2-13 chỉ ra một ví du về các lớp con của GeometryArray gồm: PointArray, LineArray, TriangleArray, và QuadArray (các lớp này không phải là lớp con của GeometryStripArray). Trong hình này, các tập bên trái nhất của các đỉnh chỉ ra 3 điểm đỉnh dựng thành 6 điểm, 3 đường, hay 2 tam giác. Hình thứ 4 chỉ ra 4 đỉnh định nghĩa một tứ giác. Chú ý rằng các định này không dùng chung: mỗi đường hay một đa giác đầy được dựng độc lập với nhau.
GeometryArray Subclass Constructors
Tạo một đối tượng rỗng với số đỉnh và định dạng đỉnh cho trước.
PointArray(int vertexCount, int vertexFormat)
LineArray(int vertexCount, int vertexFormat)
TriangleArray(int vertexCount, int vertexFormat)
QuadArray(int vertexCount, int vertexFormat)
Để tìm hiểu cách sử dụng hàm tạo và cách xem lại đoạn mã 2-4 và 2-5,2-6 sử dụng đối tượng LineArray. Nếu bạn đang dựng một hình tứ giác cẩn thận với các đỉnh có thể tạo thành hình lõm, tự cắt nhau hay không phẳng. Nếu xảy ra, chúng không thể dựng đúng được.
2.5.3 Subclasses of GeometryStripArray
Phần trước mô tả 4 lớp con của GeometryArray, không cho phép sử dụng lại các đỉnh, tuy nhiên có một vài trường hợp ta cần sử dụng lại các đỉnh, để cho kết quả dựng hình tốt hơn.
Lớp GeometryStripArray là lớp trừu tượng từ đó mỗi thực thể hình học cơ bản (để ghép tạo đường và bề mặt ) thừa kế. GeometryStripArray là lớp cha của LineStripArray, TriangleStripArray và TriangleFanArray. Ta có hình 2-14 chỉ ra một instance của một dạng các đỉnh được sử dụng lại.
Lớp GeometryStripArray có hàm tạo khác với lớp GeometryArray. Hàm tạo của nó có 3 tham số, một mảng cách đỉnh tính trên mỗi mảnh cho phép một đối tượng có thể duy trì nhiều mảnh. GeometryStripArray có 2 cách thường sử dụng đến là getNumStrips() và getStripVertexCounts().
GeometryStripArray Subclass Constructors
Tạo một đối tượng rỗng với giá trị các đỉnh và định dạng các đỉnh và một mảng tính toán các đỉnh qua các mảnh. Định dạng là một hay nhiều các bit cờ “OR” để mô tả cho mỗi dữ liệu đỉnh. Định dạng các cờ là giống nhau như đã định nghĩa trong lớp GeometryArray. Nhiều mảnh cùng một lúc cũng được hỗ trợ. Tổng các tính toán đỉnh cho tất cả các mảnh phải bằng với tổng số các đỉnh
LineStripArray(int vtxCount, int vertexFormat, int stripVertexCounts[])
TriangleStripArray(int vtxCount, int vertexFormat, int stripVertexCounts[])
TriangleFanArray(int vtxCount, int vertexFormat, int stripVertexCounts[])
Chú ý rằng Java 3D không hỗ tr...

 

Các chủ đề có liên quan khác

Top