I'm the story I was telling
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

DDA version 1

2 posters

Go down

DDA version 1 Empty DDA version 1

Bài gửi by anbinhtrong Mon Nov 30, 2009 6:14 am

Tuy chưa hoàn thiện nhưng cũng khá tốt, chạy được tất cả các trường hợp.
Code:
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#include "glut.h"
#include <iostream.h>
void putpixel(int x, int y);
void OnDraw();
void DDA(int x1,int y1,int x2,int y2);
void test(int x1,int y1,int x2,int y2);

void main(int argc, char ** argv)
{
   //-------------Khoi dong che do do hoa----------------------
   glutInit(&argc,argv);
   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
   glutInitWindowSize(800,600);
   glutInitWindowPosition(100,100);
   glutCreateWindow("Test");
   gluOrtho2D(0.0, 640.0, 0.0, 480.0);
//----------------Call back----------------------------   
   glutDisplayFunc(OnDraw);
   glutMainLoop();
}

void swap(int &a, int &b)
{
   int tg;
   tg=a;
   a=b;
   b=tg;
}

void OnDraw()
{
   glClearColor(0.5,0.5,0.5,0.99);
   glClear(GL_COLOR_BUFFER_BIT);
   glColor3f(1,0.0,0.0);
   glPointSize(1);
   //===================
   //putpixel(5,10);
   DDA(320,0,0,480);
   test(320,0,0,480);
   glutSwapBuffers();
}

void putpixel(int x, int y)
{
   glBegin(GL_POINTS);
      glVertex2d(x,y);
   glEnd();
   glFlush();
}

void DDA(int x1,int y1,int x2,int y2)
{
   float m;
   float x,y;
   if(x1>x2)
   {
      swap(x1,x2);
      swap(y1,y2);
   }
   m=float(y2-y1)/(x2-x1);
   x=x1;
   y=y1;
   putpixel(x,y);
   while(x<x2)
   {
      x+=1;
      y+=m;
      putpixel(x,y);
   }
}

void test(int x1,int y1,int x2,int y2)
{
   glColor3f(1,1,0);
   glBegin(GL_LINES);
      glVertex2d(x1,y1);
      glVertex2d(x2,y2);
   glEnd();
   glFlush();
}
anbinhtrong
anbinhtrong
Admin
Admin

Tổng số bài gửi : 216
Join date : 05/11/2009
Age : 35
Đến từ : BT

https://ngoctho.forum-viet.net

Về Đầu Trang Go down

DDA version 1 Empty Re: DDA version 1

Bài gửi by nth Wed Dec 02, 2009 11:33 am

DDA này chưa đầy đủ T ah, nó có đến 8 trường hợp. Cái này mới chỉ là 1 trường hợp thôi.
nth
nth
Cấp 3
Cấp 3

Tổng số bài gửi : 56
Join date : 07/11/2009
Đến từ : thienthancntt.tk

http://http:://thienthancntt.tk

Về Đầu Trang Go down

DDA version 1 Empty Re: DDA version 1

Bài gửi by anbinhtrong Wed Dec 02, 2009 8:07 pm

Ah, bài này chạy được 4 trường hợp. Mình đã chỉnh sửa rồi, chạy tốt cả 8 trường hợp. Bạn test dùm mình nhé.
anbinhtrong
anbinhtrong
Admin
Admin

Tổng số bài gửi : 216
Join date : 05/11/2009
Age : 35
Đến từ : BT

https://ngoctho.forum-viet.net

Về Đầu Trang Go down

DDA version 1 Empty DDA version 2-beta

Bài gửi by anbinhtrong Wed Dec 02, 2009 8:08 pm

Code:
void DDA2(int x1,int y1,int x2,int y2)
{
   float m;
   float x,y;
   bool flag;
   if(abs(y1-y2)>abs(x1-x2))
   {
      flag=1;
      swap(x1,y1);
      swap(x2,y2);
   }
   else flag=0;
   //-----Cho x chay tu trai sang phai------
   if(x1>x2)
   {
      swap(x1,x2);
      swap(y1,y2);
   }
   m=float(y2-y1)/(x2-x1);
   x=x1;
   y=y1;
   putpixel(x,y);
   if(flag==0)
      while(x<x2)
      {
         x+=1;
         y+=m;
         putpixel(x,y);
      }
   else
      while(x<x2)
      {
         x+=1;
         y+=m;
         putpixel(y,x);
      }
}
anbinhtrong
anbinhtrong
Admin
Admin

Tổng số bài gửi : 216
Join date : 05/11/2009
Age : 35
Đến từ : BT

https://ngoctho.forum-viet.net

Về Đầu Trang Go down

DDA version 1 Empty Cách suy nghĩ

Bài gửi by anbinhtrong Mon Dec 14, 2009 7:41 pm

-Thuật toán ở đây khác với nguyên mẫu sách giáo khoa.
  1. Trong trường hợp x tăng nhanh, y tăng chậm
    • Ở mỗi bước lặp đều tăng x lên 1.
    • Tính hệ số m ( tg apha)
      -->>Giải quyết được 4 trường hợp

  • Trường hợp y tăng nhanh, x tăng chậm:
    • Hoán vị x và y. Thay đổi biến flag.
    • Putpixel(y,x). Đơn giản lắm. Bạn chỉ cần quay tập đi 90 độ, là sẽ giống trường hợp 1.


    Code:
    Lỗi diễn đàn. Không hiện được list 1,2,3 như t viết. 
    tongue
  • anbinhtrong
    anbinhtrong
    Admin
    Admin

    Tổng số bài gửi : 216
    Join date : 05/11/2009
    Age : 35
    Đến từ : BT

    https://ngoctho.forum-viet.net

    Về Đầu Trang Go down

    DDA version 1 Empty Re: DDA version 1

    Bài gửi by Sponsored content


    Sponsored content


    Về Đầu Trang Go down

    Về Đầu Trang

    - Similar topics

     
    Permissions in this forum:
    Bạn không có quyền trả lời bài viết