Giúp đỡ bài về đồ họa

Mình được giao đồ án về phần lập trình đồ họa . mình ko hiểu để làm như nào mọng mọi người hướng dẫn . mình không có ý nhờ làm hộ nhé . thanks ạ

1 Like


Vui thôi.
Bạn có thể làm theo hướng tạo 1 engine vật lý kiểu box2dx hoặc sóc chuottj.
Sau đó chọn 1 lib đồ họa ốp vào là OK!

1 Like

khó vãi trưởng ông ơi tôi chỉ vẽ được hình tròn vs đường thẳng của đồ họa trên c thôi . để nó nói vs nhau và chuyển ddoonngj thì ko biết trên mạng tìm ko có thấy :frowning:

1 Like

Đó là mình gợi ý bạn hướng làm thôi.

1 Like

cái này 1 tí kiến thức lượng giác với vẽ hình là được mà

biết trước:
OM = R = bán kinh của bánh xe (hằng số)
MP = L = độ dài của trục MP (hằng số)
góc MOP = α (thay đổi theo thời gian)

cho O là gốc tọa độ (0,0), ta cần tìm tọa độ điểm M và P để vẽ trục MP.
với điểm M thì quá dễ, ta có:
xM = OH = Rcos(α)
yM = MH = R
sin(α)
với điểm P thì ta biết yP = 0, chỉ còn phải tính xP.

  • đã biết MP = L, MH = Rsin(α), nên sẽ tính được góc β = arcsin(MH/MP) = arcsin(Rsin(α)/L)
  • có góc β rồi thì tính được HP = L*cos(β).
  • xP = OP = OH + HP = Rsin(α) + Lcos(β)

xong rồi chỉ còn vẽ thôi, 1 cái vòng tròn cho bánh xe, trục MP, cục piston màu nâu phía sau P, với cái ống chứa piston nữa là xong…

piston

5 Likes

bạn ơi vậy muốn cho quay góc 10 độ thì làm như thế nào

tăng α thêm 10 độ, rồi tính lại tọa độ điểm M, P thôi

a += speed; //tốc độ theo radian (1 độ = pi / 180 radian)
float b = asin(R*sin(a)/L);
m.x = R*cos(a);
m.y = R*sin(a);
p.x = R*cos(a) + L*cos(b);
//p.y = 0 rồi khỏi tính lại

nếu kĩ tánh 1 chút nữa thì thêm:
if (a > 2*pi) a -= 2*pi;
để khỏi sợ trường hợp a quá lớn so với speed (khi chạy lâu, có lẽ khoảng vài tiếng), a += speed ko xi nhê

1 Like

cảm ơn bạn đã tao cho mình 1 cái hướng đi . có gì mong bạn giúp đỡ thêm thanks ạ

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?