Câu hỏi

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
l3atu0c
26/04/2013 21:29
Danh sách câu trả lời (1)

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
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
Câu hỏi lĩnh vực Lập trình
Rao vặt Siêu Vip