algoritma MID poin

#include

#pragma hdrstop

#include

#include “Lingkaran.h”

#pragma resource “*.dfm”

TForm1 *Form1;

int tergambar, XC,YC,QX,QY;

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

void __fastcall TForm1::FormActivate(TObject *Sender)

{

Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);

}

void __fastcall TForm1::BtCloseClick(TObject *Sender)

{

Close();

}

void __fastcall TForm1::BtBaruClick(TObject *Sender)

{

tergambar=false;

Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height)

void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)

{

tergambar=true; XC=X; YC=Y;

}

void __fastcall TForm1::CirclePlotpoint(int XC, int YC, int X, int Y)

{

Image1->Canvas->Pixels[XC+X][YC+Y]=clBlack;

Image1->Canvas->Pixels[XC-X][YC+Y]=clBlack;

Image1->Canvas->Pixels[XC+X][YC-Y]=clBlack;

Image1->Canvas->Pixels[XC-X][YC-Y]=clBlack;

Image1->Canvas->Pixels[XC+Y][YC+X]=clBlack;

Image1->Canvas->Pixels[XC-Y][YC+X]=clBlack;

Image1->Canvas->Pixels[XC+Y][YC-X]=clBlack;

Image1->Canvas->Pixels[XC-Y][YC-X]=clBlack;

}

void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)

{ int R;

BtBaruClick(Sender);

tergambar=false;

QX=X; QY=Y;

R=int(sqrt(pow(XC-QX,2)+pow(YC-QY,2)));

if (RadioGroup1->ItemIndex==0)

{ CircleMidPoint(XC,YC,R); }

}

void __fastcall TForm1::CircleMidPoint(int XC, int YC,int R)

{int x,y,p,k=0;

R=10;

x=0; y=R; p=1-R;

judul((float)x,(float)y,k,p);

do

{

k++;

if (p<0) { x=x+1; }

else

{ x=x+1; y=y-1; }

if (p<0) { p=p+2*x+1; }

else { p=p+2*(x-y)+1; }

CirclePlotpoint(XC,YC,x,y);

tampil((float)x,(float)y,k,p);

} while (x<y);

}

void __fastcall TForm1::tampil(float x,float y, int k, int p)

{

{

char tampilX[20],tampilY[20],tampilK[20],tampilPk[20];

int i,xt=200, yt=15;

//Menampilkan bilangan asli tanpa pembulatan

_gcvt(x,7,tampilX);

_gcvt(y,7,tampilY);

_gcvt(p,7,tampilPk);

if (k==0) { for (i=0; iCanvas->TextOut(xt-50, k*yt,tampilK);

Image1->Canvas->TextOut(xt+100, k*yt,”(“);

Image1->Canvas->TextOut(xt+120, k*yt,tampilX);

Image1->Canvas->TextOut(xt+150, k*yt,”,”);

Image1->Canvas->TextOut(xt+160, k*yt,tampilY);

Image1->Canvas->TextOut(xt+190, k*yt,”)”);

Image1->Canvas->TextOut(xt, k*yt,tampilPk);

}

}

void __fastcall TForm1::judul(float x,float y, int k, int p)

{

int xt=200, yt=15, kt=2;

Image1->Canvas->TextOut(xt-50,(kt-1)*yt,”k”);

Image1->Canvas->TextOut(xt, (kt-1)*yt,”pk”);

Image1->Canvas->TextOut(xt+100, (kt-1)*yt,”(x k+1,y k+1)”);

}

Object printif garis

/* Praktikum 02
Membuat objek primitif : titik, garis */
#include < windows.h >
#include < stdio.h >
#include < stdlib.h >
#include < string.h >
#include < stdarg.h >
#include < glut.h >

#define drawOneLine(x1,y1,x2,y2) glBegin(GL_LINES);\
glVertex2f ((x1),(y1)); glVertex2f ((x2),(y2)); glEnd ();
void init (void){
glClearColor ( 0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_FLAT);
}
void display(void){
int i;
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (0.1,0.1,1.0);
glEnable(GL_LINE_STIPPLE);
glLineStipple (1, 0x0101);
drawOneLine (50.0, 125.0, 150.0, 125.0);

glLineStipple (1, 0x00FF);
drawOneLine (150.0, 125.0, 250.0, 125.0);
glLineStipple (1, 0x1C47);
drawOneLine (250.0, 125.0, 350.0, 125.0);
glLineWidth (5.0);
glColor3f (5.2,0.3,1.0);
glLineStipple (1, 0x0101);
drawOneLine (50.0, 100.0, 150.0, 100.0);

glLineStipple (1, 0x00FF);
drawOneLine (150.0, 100.0, 250.0, 100.0);
glLineStipple (1, 0x1C47);
drawOneLine (250.0, 100.0, 350.0, 100.0);
glLineWidth (1.0);
glColor3f (0.0,4.0,0.0);
glLineStipple (1, 0x1C47);
glBegin (GL_LINE_STRIP);
for (i=0 ; i<7;i++)
glVertex2f (50.0 + ((GLfloat)i*50.0), 75.0);
glEnd();

for (i=0 ; i<6 ; i++){
drawOneLine (50.0 + ((GLfloat)i*50.0), 50.0, 50.0+ ((GLfloat)(i+1)*50.0), 50.0);
}
glLineStipple (5, 0x1C47);
glColor3f (5.0,0.0,.0);
drawOneLine (50.0,25.0, 350.0,25.0);
glDisable(GL_LINE_STIPPLE);
glFlush();
}
void reshape (int w, int h){
glViewport (0,0,(GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
gluOrtho2D (0.0, (GLdouble) w, 0.0, (GLdouble) h );
}

int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400,150);
glutInitWindowPosition(100,100);
glutCreateWindow (argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}

Untuk melihat Hasilnya silahkan coba dengan Visula basic 8.0