Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Vẽ hình tròn trong OpenGL như thế nào?

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

    Mặc định Vẽ hình tròn trong OpenGL như thế nào?

    Mọi người cũng biết là trong OpenGL không có hàm nào vẽ hình tròn cả nên khi vẽ thì em đã dùng cách vẽ từng đoạn nhỏ nhỏ rùi ráp lại. Cụ thể là dùng phương trình tham số của đường tròn
    x = x0 + Rcos(a)
    y = y0 + Rsin(a)
    Đây là code:
    Code:
    void init(void)
    {
    	/* select clearing(background) color */
    	glClearColor(0.0,0.0,0.0,0.0);
    
    	/* initialize viewing values */
    	glViewport(0,0,250,250);
    	glMatrixMode(GL_PROJECTION);
    	glLoadIdentity();
    	glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);
    }
    void display(void)
    {
    	/* clear all pixel */
    	glClear(GL_COLOR_BUFFER_BIT);
    
    	/* draw circle
    	 */
    	GLfloat x = 0.5,y = 0.5,R = 0.25;
    		
    	glColor3f(1.0,0.0,0.0);
    	glBegin(GL_LINE_LOOP);
    		for(int i = 0; i < 360;i++)
    			glVertex3f(R*cos(2*PI*i/360) + x,R*sin(2*PI*i/360) +y ,0.0);
    			//glVertex3f(R*cos(i) + x,R*sin(i) +y ,0.0);
    	glEnd();
    
    
    	/* don't wait!
    	 * start processing buffer OpenGL routines
    	 */
    	glFlush();
    }
    TRONG HÀM DISPLAY, THÌ CHỖ TÍNH SIN , COS(CÓ BÔI MÀU) NẾU CÁI GÓC ĐƯỢC TÍNH BẰNG RADIAN THÌ KO SAO (MÀU ĐỎ), CÒN NẾU THAY BĂNG ĐỘ (MÀU XANH) THÌ NÓ SAI .( CHẲNG HẠN KHI GIẢM 360 XUỐNG 5 THÌ NÓ RA CÁI NGŨ GIÁC) AI RÀNH OPENGL THÌ GIÚP EM VỚI , EM KHÔNG HIỂU TẠI SAO
    Đã được chỉnh sửa lần cuối bởi dokyan1989 : 23-03-2009 lúc 11:37 AM.

  2. #2
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Dễ hiểu tại vì hàm sin cos làm việc trên đơn vị radian chứ khong phải độ.

    Mình không biết trong openGL không có hàm vẽ đường tròn, mình nghĩ những hàm cơ bản như vậy phải có chứ.

  3. #3
    Ngày gia nhập
    09 2009
    Bài viết
    106

    thì cos người ta tính theo PI thôi chứ sao =)),thuật toán bạn đúng rồi đấy

  4. #4
    Ngày gia nhập
    10 2009
    Bài viết
    110

    Tại sao ko i* PI/ 180 mà lại 2*PI/360 vậy?

  5. #5
    Ngày gia nhập
    06 2010
    Nơi ở
    L.A
    Bài viết
    87

    mặc định góc tính của các hàm sin, cos trong C++ nó được tính bằng Rad, nên khi vẽ bạn nên chuyển hết sang Rad. Bạn có thể định nghĩa một biến chuyển từ Deg sang Rad ở trên đầu

    Visual C++ Code:
    1. #define DEG2RAD (3.14159/180.0)

    thì khi trong các hàm vẽ bạn chỉ cần thế này :

    Visual C++ Code:
    1. glVertex2f(R*cos(angle*DEG2RAD), R*sin(angle*DEG2RAD));
    C'est la vie

  6. #6
    Ngày gia nhập
    04 2010
    Nơi ở
    Gò Vấp, HCMC
    Bài viết
    280

    Mặc định Vẽ hình tròn trong OpenGL như thế nào?

    sao bạn không sử dụng thuật toán vẽ đường tròn MidPoint hoặc Bresenham có phải nhanh và ổn định hơn không?
    Hoa Tử Đinh Hương Phụng Vũ Phi Y
    Skype: makemecryhp
    Email: makemecryhp@gmail.com
    Face : fb.com/yescaerosta

  7. #7
    Ngày gia nhập
    06 2010
    Nơi ở
    TP. Hồ Chí Minh
    Bài viết
    90

    sử dụng MidPoint hoặc Bresenham đi bạn
    TIN HỌC LÀ PHẢI TIN MỚI HỌC

  8. #8
    Ngày gia nhập
    06 2011
    Bài viết
    3

    Trích dẫn Nguyên bản được gửi bởi yscytd Xem bài viết
    sao bạn không sử dụng thuật toán vẽ đường tròn MidPoint hoặc Bresenham có phải nhanh và ổn định hơn không?
    bạn có thể cho minh xin code của bai toán:vẽ dg thẳng, hình tròn, elip tô màu vào hình vừa vẽ dùng chuột để xác định vị trí hình vẽ đk ko??
    mình cảm ơn!!

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

  1. Sử dụng MidPoint Vẽ Đường tròn trong OpenGL với lập trình C++
    Gửi bởi AlexF trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 02-05-2013, 11:12 PM
  2. Vẽ đường thẳng và đường tròn trong openGL như thế nào ?
    Gửi bởi ngunenphaitu trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 7
    Bài viết cuối: 10-09-2012, 10:05 AM
  3. Vẽ 1 đường tròn sau đó quay đường kính quanh tâm đường tròn trong C?
    Gửi bởi thuanlove trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 17-03-2012, 08:53 AM
  4. vẽ hình cầu trong OpenGL trên VC++ như thế nào?
    Gửi bởi nhocsock_684 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 28-12-2011, 10:19 PM
  5. Vẽ đường tròn lên form trong C# như thế nào?
    Gửi bởi xinbat trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 06-12-2010, 12:27 PM

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