Kênh Tên Miền chuyên cung cấp tên miền đẹp, giá rẻ! Hãy liên hệ kỹ thuật: 0914205579 - Kinh doanh: 0912191357 để được tư vấn, hướng dẫn miễn phí, Cảm ơn quý khách đã ủng hộ trong thời gian qua!
Friday, December 5, 2014

Viết chương trình vẽ đa giác từ các đỉnh cho trước.


Bài Giải



/*
Name: Ve da giac tu cac dinh cho truoc trong thu vien Graphics
Copyright: None
Author: Tran Anh
Description: http://www.code.tavn.net
*/

#include <stdio.h>
#include <graphics.h>
#include <conio.h>
#include <math.h>

void DDA(int xA,int yA,int xB,int yB,int color){
    int dx=xB-xA;
    int dy=yB-yA;
    int step;
    if(abs(dx)>abs(dy))
        step=abs(dx);
    else
        step=abs(dy);
    float x_inc=(float)dx/step;
    float y_inc=(float)dy/step;
    float x=xA;
    float y=yA;
    putpixel(x,y,color);
    for(int k=1;k<=step;k++){
        x=x+x_inc;
        y=y+y_inc;
        putpixel(round(x),round(y),color);
    }
}

typedef struct Dinh{
    int x,y;
};

void VeDaGiac(Dinh d[],int n, int color){
    for(int i=0;i<n;i++){
        int j = (i+1)%n;
        DDA(d[i].x,d[i].y,d[j].x,d[j].y,color);
    }
}

int Delta3(Dinh a,Dinh b, Dinh c){
    int kq=a.x*b.y+a.y*c.x+b.x*c.y-c.x*b.y-b.x*a.y-c.y*a.x;
    if(kq<0) return -1;
    if(kq>0) return 1;
    return 0;
}
void XetLoiLom(Dinh d[],int n){
 Dinh a=d[0],b=d[1],c=d[2];
 int cua=Delta3(a,b,c);
 for(int i=1;i<n;i++){
    int j = (i+1)%n;
    int k = (i+2)%n;
    if(cua!= Delta3(d[i],d[j],d[k])){
        return;
    }
 }
}


int main(){

    initwindow(640,480);
    Dinh d[4]={{100,100},{400,300},{200,300},{300,100}};
    VeDaGiac(d,4,15);
    XetLoiLom(d,4);
    getch();
    return 0;
}


0 comments:

Post a Comment

Popular Posts