VicoTas
Câu hỏi
vietnamconnection vnconnection
26/04/2013 21:29

Ai biết vẽ xúc xắc 3d trong pascal chỉ cho mình với

có ai biết về phương pháp khử mặt khuất trong pascal áp dụng để vẽ con xúc xắc không xin chỉ giùm. mình đang rất cần

Danh sách câu trả lời (1)
avatar l3atu0c 26/04/2013 21:29
Tui giả định bạn đang muốn vẽ 1 hình hộp vuông như sau:
Code:

5 ______ 6
/ /|
/ / |
1 /_____/2 |
| | /7
| | /
|_____|/
4 3

(đỉnh số 8 đang bị che khuất)

Bạn có thể thử như sau:
1) Mỗi đỉnh của hình vuông có 1 tọa độ 3 chiều. Ví dụ đỉnh P1=(x1,y1,y1)
2) Bạn định nghĩa 6 mặt của hình hộp. Mỗi mặt là 1 hình vuông có các đỉnh được chọn sao cho thứ tự là THUẬN chiều kim đồng hồ. Ví dụ mặt trước là (1,2,3,4) hoặc (2,3,4,1) cũng được. Còn mặt sau (đang bị che khuất) là (5,8,7,6); lưu ý nếu bạn chọn (5,6,7,8) theo thứ tự này là sẽ NGƯỢC chiều kim đồng hồ (bạn thử tưởng tượng bạn đi vòng ra phía sau hình hộp và quan sát mặt phía sau)
3) Tọa độ của mắt M của người quan sát đang là (mx,my,mz). Tui giả định điểm này nằm ngoài hình hộp => người quan sát đang đứng ở ngoài căn phòng hình hộp và quan sát nó (chớ không phải đang đứng bên trong phòng)
4) Bạn xét lần lượt từng mặt của hình hộp và vẽ nó nếu nó không bị che. Cách xác định 1 mặt có bị che hay không là như sau:
a) Giả thiết 4 đỉnh của mặt là (a,b,c,d). Giả thiết thêm là 4 đỉnh này được sắp theo chiều kim đồng hồ. Giả thiết tâm C của mặt có tọa độ là (cx,cy,cz)
b) Vecto chỉ phương của mặt là P; P là tích hữu hướng của vecto cạnh ab và vecto cạnh bc
c) Tia nhìn là MC (từ mắt M tới tâm C của hình hộp). Vecto này là (cx-mx,cy-my,cz-mz)
d) Khi đó mặt (a,b,c,d) là không bị che nếu vecto P "cùng chiều" với vecto MC. 2 vecto là "cùng chiều" nếu góc giữa chúng là nhỏ hơn 90 độ (cos của góc giữa chúng là dương)

Phụ chú:
- tích hữu hướng của 2 vecto v1 và v2 là 1 vecto v3. Giả thiết v1=(x1,y1,z1) và v2=(x2,y2,z2) thì v3=(x1.y2-x2.y1, y1.z2-y2.z1, z1.x2-z2.x1)
- tích vô hướng của 2 vecto v1 và v2 là 1 số a . Giả thiết v1=(x1,y1,z1) và v2=(x2,y2,z2) thì a=x1.x2 + y1.y2 + z1.z2 = |v1|.|v2|.cos(v1,v2). Từ đó
suy ra cos(v1,v2) = (x1.x2 + y1.y2 + z1.z2) / (|v1|.|v2|) với |v1| là độ dài của vecto v1 = căn bậc 2 của (x1^2 + y1^2 + z1^2)

(hiểu biết nông cạn; có gì sai sót mong được góp ý; xin cám ơn)

-thân
Trả lời câu hỏi
Tải lại mã
Câu hỏi lĩnh vực Lập trình
Đức Vân Giúp em tạo cái nút Button [Cap Nhat] này với

Đăng lúc: 21:29 - 26/04/2013 trong Lập trình

nophoto Ai rành visual c++ 6.0 giúp mình với

Đăng lúc: 21:29 - 26/04/2013 trong Lập trình

Đức Cảnh Các Bro giúp e BT Pascal với huhu

Đăng lúc: 21:29 - 26/04/2013 trong Lập trình

Lê Thị Hoa Hồng Tôi đóng gói chương trình VB+Crytalreport bằng chươg trình Setup Factory nhưng khi chạy chương trình, khi in báo cáo máy báo lỗi runtim 429 activeX.

Đăng lúc: 21:29 - 26/04/2013 trong Lập trình

Củ Chuối Hồi trước mình tạo user account administrator mình lỡ tay bấm xóa rồi giờ không cài đc game

Đăng lúc: 21:29 - 26/04/2013 trong Lập trình

nophoto Cách làm hình nền cho USB, ai biết làm giúp em với ạ?

Đăng lúc: 21:29 - 26/04/2013 trong Lập trình

lighting Cho hỏi trong máy tính bán cầu bắc lả gì và bán cầu nam là gi?

Đăng lúc: 21:29 - 26/04/2013 trong Lập trình

nophoto Xin chao Vatgia.com! Lam the nao de viet duoc mot phan mem noi chung và phan mem quan ly cong viec ca nhan. Xin duoc huong dan.

Đăng lúc: 21:29 - 26/04/2013 trong Lập trình

Hoài Nam (Nam Tước) Học XML như thế nào là tốt nhất??

Đăng lúc: 21:28 - 26/04/2013 trong Lập trình

Hin Cho em hỏi Về Forum của em

Đăng lúc: 21:28 - 26/04/2013 trong Lập trình

Lê Thị Hoa Hồng Lập trình viên của Việt Nam đang ở mức nào trên thế giới ???

Đăng lúc: 21:28 - 26/04/2013 trong Lập trình

Lê Thị Hoa Hồng Cứu giúp?

Đăng lúc: 21:28 - 26/04/2013 trong Lập trình

Đức Vân Aii có code visual C++ truyền số liệu qua cổng RS232 để mình làm bài tập lớn

Đăng lúc: 21:28 - 26/04/2013 trong Lập trình

nophoto Cách truyền tham số trong javascript???

Đăng lúc: 21:28 - 26/04/2013 trong Lập trình

NgocUk A chị ơi giúp em dịch câu này với!

Đăng lúc: 21:28 - 26/04/2013 trong Lập trình

Hoài Nam (Nam Tước) cần giúp về pascal

Đăng lúc: 21:28 - 26/04/2013 trong Lập trình

MrTien Xin chỉ cách xây dựng file help (*.hlp) trong Visual Basic 6.0?

Đăng lúc: 21:04 - 26/04/2013 trong Lập trình

Manh Linh Một số ứng dụng hiển thị menu dropdown với 1 hình chữ nhật màu xanh kéo dài từ trên xuống dưới. Xin chỉ cách tạo menu như vậy bằng VB6.0?

Đăng lúc: 21:03 - 26/04/2013 trong Lập trình

Đức Vân Dùng VB.NET để viết chương trình quản lý hồ sơ theo mô hình client/server, tôi không biết làm cách nào client mở được file *.doc hay file *.pdf ?

Đăng lúc: 21:03 - 26/04/2013 trong Lập trình

dang duc thang Xin hướng dẫn phương hướng để viết chương trình chơi bóng đá đơn giản. Như kỹ thuật di chuyển camera khi quả bóng di chuyển?

Đăng lúc: 21:03 - 26/04/2013 trong Lập trình

Rao vặt Siêu Vip