cầu vượt mai dịch_báo cáo bài tập lớn, Nút giao Mai Dịch kết nối đường Xuân Thủy với đường Hồ Tùng Mậu, Phạm Hùng và Phạm Văn Đồng, cửa ngõ phía Tây của thành phố. Tại nút giao này, sẽ có 3 tầng xe chạy. Đây là nút giao thông khá phức tạp Tầng trên cùng sẽ là dự án đường sắt đô thị Nhổn ga Hà Nội. Tại đây nút giao 3 tầng đang được gấp rút thi công, khoan cọc nhồi và chuẩn bị đến giai đoạn đổ trụ bê tông. Tầng thứ hai là cầu vượt Mai Dịch (khánh thành năm 2003), phục vụ các loại phương tiện, xe cơ giới lưu thông.
Trang 1CHƯƠNG I KHẢO SÁT
1 Khảo sát
Nút giao Mai Dịch kết nối đường Xuân Thủy với đường Hồ Tùng Mậu, Phạm Hùng và Phạm Văn Đồng, cửa ngõ phía Tây của thành phố Tại nút giao này, sẽ
có 3 tầng xe chạy Đây là nút giao thông khá phức tạp
Tầng trên cùng sẽ là dự án đường sắt đô thị Nhổn - ga Hà Nội Tại đây nút giao 3 tầng đang được gấp rút thi công, khoan cọc nhồi và chuẩn
bị đến giai đoạn đổ trụ bê tông
Tầng thứ hai là cầu vượt Mai Dịch (khánh thành năm 2003), phục vụ các loại phương tiện, xe cơ giới lưu thông
Tầng dưới cùng là đường bộ Hiện do các công trường thi công, lô cốt, rào chắn khiến nút giao này vào giờ cao điểm thường xuyên ùn tắc kéo dài theo hướng về Xuân Thủy - Cầu Giấy và Mai Dịch - Phạm Văn Đồng
- Toàn cảnh nút giao thông Mai Dịch
Trang 2Hình 1: Toàn cảnh nút giao thông
- Hướng Phạm Văn Đồng – Hồ Tùng Mậu
Hình 2: Hướng Phạm Văn Đồng – Hồ Tùng Mậu
Trang 3- Hướng Hồ Tùng Mậu –Cầu Giấy - Phạm Hùng
- Hình 3: Hướng Hồ Tùng Mậu –Cầu Giấy - Phạm
Hùng
Trang 4CHƯƠNG II CÁC THÀNH PHẦN NGÔN NGỮ
VRML SỬ DỤNG TRONG ĐỀ TÀI
1 Các đối tượng hình học cơ bản
Box: để tạo các khối hộp
Ví dụ: Shape {
geometry Box{ size 2.0 2.0 2.0 } }
Tham số:
Ø size X Y Z: kích thước hình hộp (chiều rộng,
chiều cao, chiều sâu).
Sphere: để tạo các hình cầu
Ví dụ: Shape {
geometry Sphere { radius 1.0
} }
Tham số:
Ø Radius X: bán kính mặt cầu.
Cylinder: để tạo các hình trụ
Ví dụ: Shape {
geometry Cylinder{
height 2.0 radius 1.0 bottom TRUE top TRUE side TRUE
} }
Tham số:
Ø height X: chiều cao
Ø radius Y: bán kính mặt đáy.
Trang 5Ø bottom TRUE / FALSE: hiện / ẩn mặt đáy dưới.
Ø top TRUE / FALSE: hiện / ẩn mặt đáy trên.
Ø side TRUE / FALSE: hiện / ẩn các mặt bên.
2 Các phép biến đổi
Trasfom
Nút Transform quản lý các phép biến đổi
trong VRML như: dịch chuyển, co dãn, quay.
Nút Transform gồm có các trường con:
translation (dịch chuyển), rotation (quay), scale (co giãn), children Trong đó trường children được dùng để chứa các đối tượng
(vật thể, hình ảnh, ).
Traslation: để dịch chuyển một vật đến vị tri nào
đó trong không gian
Cú pháp:
Transform {
translation X Y Z
children []
} Tham số:
Ø translation X Y Z: dịch chuyển gốc tọa độ đến
điểm X Y Z.
Rotation: để quay vật theo hướng nào đó trong không gian
Cú pháp:
Transform { rotation X Y Z G children []
} Tham số:
Ø rotation X Y Z G: quay trục tọa độ theo trục X,
Y, Z một góc G.
Ø G được tính theo radians
Trang 6 Scale: Phép co dãn dùng để thu, phóng to vật trong không gian
Cú pháp:
Transform {
scale x y z
children []
}
Tham số:
Ø scale X Y Z: co giãn đối tượng theo trục X, Y, Z
với tỉ lệ x, y, z.
Children: Các đối tượng được vẽ trong trường này sẽ chịu ảnh hưởng của các phép biến đổi
trong nút Transform.
Ví dụ:
Transform {
translation 2.0 1.0 0.0
scale 2.0 1.0 3.0
rotation 0.0 0.0 1.0 0.79
children [
Shape {
….
}
geometry … {
… }
}
]
}
Shape {
appearance Appearance {
material Material { }
}
geometry Box { size 1.0 1.0 1.0}
}
Trang 7 Như trong ví dụ này thì hệ tọa độ của hình trụ
sẽ dịch chuyển đến điểm (2, 1, 0) so với hệ tọa độ gốc, sau đó kích thước của hình trụ sẽ tăng 2 lần theo chiều trục X, tăng 3 lần theo chiều trục Z, và quay 0.79 radians theo trục Z Còn hình hộp thì nằm tại tọa độ gốc.
3 Viewpoint : có chức năng xác định vị trí của người dùng trong thế giới và các thông số của góc nhìn
fieldOfview: xác định một góc trong “radians”.
Giá trị của trường này là một số thực nằm trong khoảng từ 0 đến 3,142 và có giá trị mặc định là 0,785398 Góc này sẽ tương đương với ống kính máy quay (camera) nếu có giá trị nhỏ và sẽ tương đương với ống kính góc rộng nếu có giá trị lớn (chẳng hạn có giá trị 3,14), tuy nhiên lúc đó góc nhìn sẽ bị méo
position: xác định vị trí của người dùng trong
thế giới ảo Có giá trị là một điểm trong không gian
orientation: Xác định biên độ quay của góc
quan sát, trường này có giá trị là kiểu SFRotation (xem trong phần kiểu dữ liệu đã trình bày ở trên)
description: cung cấp một đoạn mô tả cho góc
quan sát
jump: cho phép sự chuyển giữa các góc nhìn
trong thế giới, nếu có giá trị TRUE thì cho phép người di chuyển theo góc nhìn, còn nếu có giá trị là FALSE thì chỉ đơn thuần là sự chuyển đổi góc nhìn
mà không hề ảnh hưởng đến vị trí của người dùng
4 Phong cảnh
Backgroud
Background { skyColor [ ] skyAngle [ ] groundColor [ ] groundAngle [ ] backUrl [ ]
Trang 8bottomUrl [ ] leftUrl [ ] rightUrl [ ] frontUrl [ ] topUrl [ ] }
Các thuộc tính:
skyColor và skyAngle: xác định các màu sắc trên
bầu trời, nếu muốn bầu trời có màu sắc đơn lẻ thì chúng ta chỉ cần thiết lập các giá trị cho trường
skyColor và bỏ trường skyAngle (hình a), còn nếu
muốn bầu trời có hiệu ứng màu gradient (hình b) thì
ta cần phải thiết lập các giá trị cho hai trường nói trên Ví dụ ta sẽ thiết lập như sau:
- Trong hình a:
skyColor [1 1 0, 9 9 5, 7 7 9, 0 0.4 1, 0 0.7 1, 1 1 1]
- Trong hình b:
skyAngle [ 0.075, 0.1, 0.2, 1.309, 1.5708 ] skyColor [ 1 1 0, 9 9 5, 7 7 9, 0 0.4 1, 0 0.7 1, 1 1 1 ]
5 Màu sắc và hình ảnh
Material
Nút Material có chức năng tạo màu cho các đối
tượng trong VRML Màu sắc trong VRML được thể hiện qua 3 tham số là R G B (Red-Green-Blue) với giá trị nằm trong khoảng từ 0.0 đến 1.0 Nút
Material có các thuộc tính sau:
diffuseColor: xác định màu sắc của đối tượng.
emissiveColor: xác định màu của ánh sáng
phát ra từ đối tượng
transparency: xác định độ trong suốt của đối
tượng (0: hiển thị rõ, 1: trong suốt)
ambientIntensity: xác định lượng phản chiếu
ánh sáng của đối tượng
Trang 9 specularColor: xác định màu sắc của các điểm
sáng bóng trên bề mặt của đối tượng
shininess: điều chỉnh cường độ sáng cho những
điểm sáng bóng
Ví dụ:
Shape {
appearance Appearance {
material Material {
diffuseColor 1.0 0.5 0.0
emissiveColor 0.0 0.0 0.0
transparency 0.5
specularColor 0.5 0.5 0.5
shininess 0.3
ambientIntensity 0.4
}
}
geometry Box { size 1.0 1.0 1.0}
}
Image Texture: dán ảnh lên đối tượng
Ví dụ:
Shape { appearance Appearance { material Material {}
texture ImageTexture { url “hinha.jpg”
repeatS TRUE repeatT TRUE }
} geometry Box { size 3 4 5}
}
6 Nhóm các đối tượng
Transfom: tạo ra một nhóm các đối tượng và đặt chúng tại hệ trục tọa độ mới Nút này đã được trình bày ở trên
Trang 10 Inline : tạo ra một nhóm các đối tượng đặc biệt được lấy ra từ một tập tin VRML khác (được chỉ ra
sau url) Tất cả các đối tượng trong tập tin này sẽ
được hiển thị Nút này thường được sử dụng để gọi trực tiếp một đối tượng bên ngoài vào thế giới hiện tại.
Ví dụ:
Inline {
url [“cuaso.wrl”]
bboxCenter 0 0 0 bboxSize -1 -1 -1 }
Các thuộc tính:
Ø url: chứa tập đường dẫn của các tập tin VRML
ngoài thế giới hiện tại
7 Extrusion: vẽ các hình phức tạp
Ví dụ:
Shape {
appearance Appearance {
material Material {
diffuseColor 1 0 0 }
}
geometry Extrusion{
crossSection [
…
] spine [
… ]
Trang 11scale [
… ]
beginCap TRUE
creaseAngle 1
endCap TRUE
ccw TRUE
convex TRUE }
}
Các thuộc tính:
crossSection: mặt cắt
spine: trục của hình muốn dựng
8 Sự kiện và cảm biến
a) Sự kiện
ROUTE(Tuyến nối): là một kênh giao tiếp nôi giữa các thành phần lại với nhau, giữa sự kiện được tạo
ra bởi nút này nối với thành phần nhận sự kiện của nút kia.
Cú pháp:
ROUTE Node.eventOut TO Node.eventIn
Ví dụ :
Tên nút gửi sự kiện là : Sender( tên nút được tạo
ra bởi từ khóa DEF) và sự kiện xuất ra là : rotation_changed có nghĩa là trường rotation của nút này thay đổi thì sẽ tạo ra sự kiện này
Tên nút nhận sự kiện là: Recipients( tên nút được tạo ra bởi từ khóa DEF) và sự kiện nhận vào là:
Trang 12set_rotation có nghĩa là khi nhận sự kiện thì trường rotation của nút này sẽ thay đổi
Khi đó để nối hai nút này ta gọi lện như sau:
ROUTE Sender.rotation_changed TO Recipients set_rotation
b) Cảm biến(sensor)
Timesensor : là cảm biến cho phép điều khiển thời gian bắt đầu và kết thúc Nút này giống như một chiếc đồng hồ tạo ra sự kiện, khi được kích hoạt thì tạo ra chuỗi sự kiện liên tục theo thời gian, chiếc đồng hồ đó có thể chạy mãi hoặc sẽ dừng tại một thời điểm xác định nào đó
Ví dụ:
TimeSensor {
cycleInterval 1.0 enabled TRUE loop FALSE startTime 0 stopTime 0 }
Các thuộc tính:
cycleInterval: xác định số giây tạo ra các sự
kiện, ví dụ có giá trị là 1.0 thì sẽ tạo ra các sự kiện liên tiếp trong một giây.
enabled: xác định trạng thái hoạt động của cảm
biến
loop: xác định có lặp hay không.
startTime: thời gian bắt đầu chạy.
stopTime: thời gian kết thúc chạy.
Các sự kiện đầu vào:
set_startTime: thiết lập lại thời gian bắt đầu
chạy.
set_stopTime: thiết lập lại thời gian kết thúc
chạy.
set_enabled: thiết lập lại trạng thái hoạt động.
Trang 139 Ánh sáng
Point light: Nút này xác định một nguồn sáng tại một vị trí xác định, các tia sáng của nguồn sáng này
đi theo mọi hướng, không hướng về một phương cụ thể nào, nguồn sáng này giống như ánh sáng của bóng đèn điện trong thế giới thực của chúng ta Và cũng giống như ánh sáng của bóng đèn điện, nguồn sáng này bị giới hạn về khoảng cách chiếu sáng.
Ví dụ:
PointLight {
on TRUE intensity 1 ambientIntensity 0 color 1 1 1
location 0 0 0 attenuation 1 0 0 radius 100
}
Các thuộc tính:
Các thuộc tính on, intensity, ambientIntensity,
color tương tự như các thuộc tính của nút DirectionLight.
location: vị trí của nguồn sáng, có giá trị là một
điểm trong không gian.
attenuation: có giá trị là một vectơ 3D xác định
việc tăng giảm cường độ cũng như khoảng cách chiếu sáng của nguồn sáng Giá trị của trường này phải khác (0, 0, 0).
radius: chỉ ra phạm vi chiếu sáng của nguồn sáng,
giá trị này phải lớn hơn 0
10 Các nút nôi suy
ColorInterpolator
OrientationInterpolator
PositionInterpolator
Mỗi nút đều có cú pháp như sau:
…Interpolator {
Trang 14key […]
keyValue […]
}
Trong đó key là tập các giá trị đầu vào còn
keyValue là tập các giá trị đầu ra Trong các nút Interpolators đều có một sự kiện đầu vào là set_fraction và sự kiện đầu ra là value_changed, hai sự
kiện này được nối với nhau tức là khi các nút này khi nhận được một sự kiện thì nó cũng tạo ra một sự kiện Sự kiện
set_fraction xác định một giá trị key và sự kiện đầu ra xác định một keyValue tương ứng với giá trị key.
Ví dụ:
OrientationInterpolator { key [ 0.0, 0.50, 1.0 ]
keyValue [
0.0 1.0 0.0 0.0,
0.0 1.0 0.0 3.14,
0.0 1.0 0.0 6.28
]
} Trong ví dụ này nếu nút này nhận một giá trị là 0.0 thì nó sẽ gửi trả ra giá trị (0.0 1.0 0.0 0.0) và nếu nhận giá trị từ khoảng 0.0 đến 0.5 thì nó sẽ tính toán và gửi ra giá trị nằm trong khoảng 0.0 đến 3.14 (chính xác là ở đây nếu nó nhận được giá trị là 0,3 thì nó sẽ trả ra giá trị là 1,88), và tương tự với các giá trị khác.
11 Script
Cú pháp:
Script
{ url []
directOutput FALSE
Trang 15mustEvaluate FALSE
eventIn Datatype EventName
eventOut Datatype EventName
field Datatype FieldName InitialValue }
Trang 16CHƯƠNG IIISẢN PHẨM ĐẠT ĐƯỢC
1 Nhìn tổng thể
2 Ô tô
3 Đèn giao thông
4 Đền chiếu sáng
5 Cầu
6. Rào chắn đường sắt trên cao