Home > Flash/Flex/AIR > Understanding graphics.drawTriangles in Flash 10

Understanding graphics.drawTriangles in Flash 10

function drawTriangles(vertices:Vector.<Number>, indices:Vector.<int>=null, uvtData:Vector.<Number>=null, culling:String=”none“);

1 – Tham số thứ nhất vertices: là tham số required duy nhất, là tập hợp các điểm cần nối.

Nếu hàm có duy nhất một mình tham số vertices thì vertices phải là tập hợp có số phần tử chia hết cho 6 (mỗi điểm là có 2 tọa độ x, y, do vẽ tam giác nên phải có số điểm là bội số của 3 => phải có 6 phần tử). Ví dụ:

graphics.beginFill(0xFF8000);

graphics.drawTriangles( Vector.<Number>([

10,10, 100,10, 10,100, // 3 điểm này sẽ được vẽ thành 1 tam giác

110,10, 110,100, 20,100])); //3 điểm này sẽ được vẽ thành tam giác thứ 2 (độc lập không liên quan đến 3 điểm trên)

Tổng quát nếu ta muốn vẽ các tam giác:

triangle_1 với point1_A, point1_B, point2_C

triangle_2 với point2_A, point2_B, point2_C

triangle_n với pointn_A, pointn_B, pointn_C ;

graphics.drawTriangles( Vector.<Number>([

//Triangle 1

point1_A.x, point1_A.y, point1_B.x, point2_B.y, point1_C.x, point1_C.y,

//Triangle 2

point2_A.x, point2_A.y, point2_B.x, point2_B.y, point2_C.x, point2_C.y,

……..

//Triangle n

pointn_A.x, pointn_A.y, pointn_B.x, pointn_B.y, pointn_C.x, pointn_C.y]));

Lưu ý: Khi hàm drawtriangles chỉ có tham số vertices duy nhất, mà số phần tử của tập vector không chia  hết cho 6 sẽ xuất hiện lỗi runtime như sau:

2 – Tham số thứ hai indices:

Tham số thứ 2 xuất hiện như là một tham số chỉ đường cho Flash Player vẽ các tam giác từ 3 điểm được lấy ra từ tập vector của tham số thứ 1 vertices.

Khi có tham số indices này thì số phần tử của tham số đầu vertices sẽ không bị ràng buộc phải chia hết cho 6 nữa mà chỉ cần >= 3.

Ví dụ:

graphics.beginFill(0xFF8000);
graphics.drawTriangles(
Vector.<Number>([10,10, 100,10, 10,100, 100,100]),
Vector.<int>([0,1,2, 1,3,2]));

Như vậy tham số thứ 2 tập indices phải gồm từng bộ 3 => số phần tử của nó phải chia hết cho 3 và >=3.

3 – Tham số thứ ba uvtData: là tham số được dùng cho việc fill bitmap vào graphic mà ta vừa drawTriangle. Do đó tham số này chỉ có tác dụng khi ta dùng beginFill (1 bitmap) và endFill.
-uvtData là một tập các điểm thiết lập nên 1 đa giác mẫu lấy từ bitmap. Nó chỉ cho Flash Player biết sẽ lấy 1 mẫu nào, phần nào của bitmap hoặc cả bitmap để fill vào graphic được vẽ ra.

Ví dụ:

graphics.beginBitmapFill(new SampleBitmap(0,0));
graphics.drawTriangles(
Vector.<Number>([10,10, 100,10, 10,100, 150,150]),
Vector.<int>([0,1,2, 1,3,2]),
Vector.<Number>([0,0, 1,0, 0,1, 1,1]));

Kết quả sẽ là:

Tới đây ta chỉ mới dùng 2 thuộc tinh UV cho đồ họa 2D. Ta sẽ cùng thêm thuộc tính T cho đồ họa 3D. T diễn tả chiều sâu của điểm ảnh và được tính theo công thức sau:

T = focalLength/(focalLength + z);

đ

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: