Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: giúp mình vẽ hình woi!!!!

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    12

    Mặc định giúp mình vẽ hình woi!!!!

    mình có bài tập ứng dụng ma trận vuông vẽ hình cánh quạt.Sau đó làm cho cánh quạt quay.ban nào có thể giúp mình làm cho nó quay được không zi.(Vẽ hình thì mình vẽ được rùi nhưng không biết gọi hàm để chạy được).giúp mình woi.

  2. #2
    Ngày gia nhập
    02 2008
    Bài viết
    88

    Bản chất của việc quay là xóa đi cái hình cũ và vẽ lên một cái hình mới ở vị trí khác thôi.
    Mình chỉ biết vậy thôi chứ làm như thế nào thì ko biết, he he
    Mình từ Caulacbovb qua)
    Giã từ VB6 đến với VB.Net, C# và Java.

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    12

    hix.Ai chả biết như thế.Nghe bảo dùng hàm delay rui` cho time nữa là xong.nhưng không biết làm sao.các pro chỉ mình với

  4. #4
    Ngày gia nhập
    11 2007
    Bài viết
    153

    cho nó quay hả , bạn kiu là ma trận vuông đúng ko nào ? giả sử như hình của bạn là hình cánh quạt nằm dọc , bi giờ muốn cho nó quay chỉ cần viết thêm 1 cánh quạt nằm ngang nữa , sau đó in ra màn hình lần lượt từng cái thui . Nhớ delay giữa khoảng xuất hiện của 2 hàm show_ngang và show_doc . Cho vòng lặp mãi mãi ...
    ttecak ?

  5. #5
    Ngày gia nhập
    03 2008
    Bài viết
    12

    hix.có thể cho mình một đoan code mẫu được không.Ví dụ như giờ mình có 2 hàm hinh la:void hinh1(int n)va void hinh2(int n).gio sử dụng delay lam sao.thank

  6. #6
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Mặc định giúp mình vẽ hình woi!!!!

    Học openGL đi, làm cho nó đơn giản.
    Demo :
    C++ Code:
    1. #include <cstdlib>
    2. #include <GL/glut.h>
    3.  
    4. float _angle = 30.0f;
    5. float _cameraAngle = 0.0f;
    6.  
    7. //Gọi khi user nhập key
    8. void handleKeypress(unsigned char key, int x, int y)
    9. {
    10.     switch (key) {
    11.         case 27: //phím ESC thì thoát.
    12.             exit(0);
    13.     }
    14. }
    15.  
    16. //Khởi tạo đồ họa 3D
    17. void initRendering()
    18. {
    19.     glEnable(GL_DEPTH_TEST);
    20. }
    21.  
    22. //Chỉnh lại hình cửa số.
    23. void handleResize(int w, int h)
    24. {
    25.     glViewport(0, 0, w, h);
    26.     glMatrixMode(GL_PROJECTION);
    27.     glLoadIdentity();
    28.     gluPerspective(45.0, (double)w / (double)h, 1.0, 200.0);
    29. }
    30.  
    31. //Draws the 3D scene
    32. void drawScene()
    33. {
    34.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    35.     glMatrixMode(GL_MODELVIEW); //Chuyển quang cảng vẽ
    36.     glLoadIdentity(); //Khởi động lại quanh cảnh vẽ
    37.     //*Lật 1 thứ ngc chiều
    38.     //*Common trick on OpenGL.
    39.     glRotatef(-_cameraAngle, 0.0f, 1.0f, 0.0f);
    40.     glTranslatef(0.0f, 0.0f, -5.0f); //Di chuyển tới 5 units
    41.  
    42.     //Lưu trạng thái chuẩn bị transform
    43.     glPushMatrix();
    44.         //Di chuyển tới trung tâm của tam giác.
    45.         glTranslatef(-1.0f, 1.0f, 0.0f);
    46.         //Quay cái tam giác = giá trị của vector <1, 2, 3>
    47.         glRotatef(_angle, 1.0f, 2.0f, 3.0f);
    48.         glBegin(GL_TRIANGLES);
    49.             //Triangle
    50.             glVertex3f(0.5f, -0.5f, 0.0f);
    51.             glVertex3f(0.0f, 0.5f, 0.0f);
    52.             glVertex3f(-0.5f, -0.5f, 0.0f);
    53.         glEnd();
    54.     glPopMatrix();
    55.     //Send hình ra màn hình
    56.     glutSwapBuffers();
    57. }
    58.  
    59. void updateObject(int value)
    60. {
    61.     _angle += 2.0f;
    62.     //Kĩ thuật xoay hình rất thông dụng trong openGL
    63.     if (_angle > 360) {
    64.         _angle -= 360;
    65.     }
    66.     //Báo cho GLUT là hình đã thay đổi
    67.     glutPostRedisplay();
    68.     //Báo cho GLUT là nó sẽ gọi updateObject trong 10 milisec
    69.     glutTimerFunc(10, updateObject, 0);
    70. }
    71.  
    72. int main(int lhs, char** rhs) {
    73.     //Khởi tạo cho thư viện GLUT, mấy cái này
    74.     //của openGL nó có, viết chặp rùi quen
    75.     glutInit(&lhs, rhs);
    76.     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    77.     glutInitWindowSize(200, 200);
    78.    
    79.     //Tạo cửa sổ tên Move around.
    80.     glutCreateWindow("Move around");
    81.     initRendering();
    82.    
    83.     //Vẽ, nhấn ESC để kết thúc, cái xử lý thông thường của openGL
    84.     glutDisplayFunc(drawScene);
    85.     glutKeyboardFunc(handleKeypress);
    86.     glutReshapeFunc(handleResize);
    87.    
    88.     //Làm cho đối tượng quay vòng.
    89.     glutTimerFunc(25, updateObject, 0);
    90.     glutMainLoop();
    91.     return 0;
    92. }
    Đã được chỉnh sửa lần cuối bởi rox_rook : 13-03-2008 lúc 01:51 PM.

  7. #7
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Nếu dùng trên Linux thì dùng makefile mà build nó
    Code:
     cd /dir/...
    Then
    Code:
     make
    Makefile.
    C++ Code:
    1. CC = g++
    2. CFLAGS = -Wall
    3. PROG = transform //file exe là đây
    4.  
    5. SRCS = main.cpp //tên file cần dịch.
    6.  
    7. ifeq ($(shell uname),Darwin)
    8.     LIBS = -framework OpenGL -framework GLUT
    9. else
    10.     LIBS = -lglut
    11. endif
    12.  
    13. all: $(PROG)
    14.  
    15. $(PROG):    $(SRCS)
    16.     $(CC) $(CFLAGS) -o $(PROG) $(SRCS) $(LIBS)
    17.  
    18. clean:
    19.     rm -f $(PROG)

  8. #8
    Ngày gia nhập
    12 2007
    Bài viết
    48

    ax, anh Rook cho bài giải cao siêu quá, đọc chả hiểu gì hết >.<
    "what you don't use you don't pay for" (Bjarne Stroustrup).

  9. #9
    Ngày gia nhập
    02 2008
    Bài viết
    88

    OpenGL mà đơn giản à
    Mình từ Caulacbovb qua)
    Giã từ VB6 đến với VB.Net, C# và Java.

  10. #10
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    ax, anh Rook cho bài giải cao siêu quá, đọc chả hiểu gì hết >.<
    Theo anh nghĩ openGL không khó như em nghĩ. Anh đọc tổng quát nó có tới 250 hàm trong thư viện của nó, cái chúng ta làm là làm sao lấy ra xài cho hiệu quả thôi. Nếu em từng học hình học không gian về vector, dot produtc, cross product... thì anh nghĩ em đọc 1 hồi là hiểu.
    -Thấy nó khó, rắc rối, phức tạp thường thì do tâm lý các bạn mới học nhìn vào tên hàm dài, nhiều, lạ là sợ tưởng nó chắc cực kì cao siêu.
    -Em phải nghĩ thế này, nếu mà cao siêu quá thì có lẽ nó sẽ chẳng còn phổ biến nữa, vì khó quá thì chắc chỉ có vài người học được T_T.
    OpenGL mà đơn giản à
    Cái này thì khó nói, tùy mức độ sử dụng, nếu viết game thì có lẽ cũng hơi cực. Vì thực ra chỉ vẽ không dễ hơn xài chung với lập trình thông thường. Nếu viết openGL thường chỉ là project, do đó nó take time vậy thôi, chịu khó design pattern trước làm từng bước + 1 chút bền bì -> everything will be on your way !

Các đề tài tương tự

  1. Bài tập C Cần giúp đỡ bài tập vẽ chữ số điện tử
    Gửi bởi tuan110206 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 12
    Bài viết cuối: 04-07-2012, 12:07 AM
  2. Bài tập C Mình cần giúp đỡ về bài tập vẽ sơ đồ khối
    Gửi bởi kenshin_bqt trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 24-02-2012, 01:21 AM
  3. Vẽ đồ thị hàm sin trong C. Giúp mình sửa lỗi?
    Gửi bởi nguyenthanhhai90vp trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 30-09-2010, 10:00 PM
  4. Bị lỗi khi vẽ cây nhị phân trong C. Nhờ các bạn giúp đỡ
    Gửi bởi pctester2020 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 12-09-2010, 10:17 AM
  5. bài tập vẽ hình ôtô chạy. giúp mình làm đi nhé
    Gửi bởi thuy_trang90 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 14-10-2009, 10:54 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn