Anda di halaman 1dari 19

MID

(GAMBAR OBJEK BEBAS MENGGUNAKAN OBJEK PRIMITIF


DAN ALGORITMA PEMBEMBENTUK OBJEK)
Dosen Mata Kuliah
Alifyah NSH, S.pd., M.pd

OLEH : KELOMPOK 6
SRI ERFIANA (1829041009)
EMA HUMAERA (1829040039)
PTIK F 2018

PRODI PENDIDIKAN TEKNIK INFORMATIKA DAN KOMPUTER


JURUSAN PENDIDIKAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS NEGERI MAKASSAR
2020
PROGRAM
#include <GL/glut.h>
#include <math.h>
const double PI = 3.141592653589793;
int i;
void setPixel (GLint xCoordinate, GLint yCoordinate){
glBegin (GL_POINTS);
glVertex2i (xCoordinate, yCoordinate);
glEnd();
glFlush();
}
void lineBres (GLint x0, GLint y0, GLint xEnd, GLint yEnd) //rumus
{
GLint dx = (xEnd - x0);
GLint dy = (yEnd - y0);
GLint p = 2*dy-dx; GLint twoDy = 2*dy;
GLint twoDyMinusDx = 2*(dy-dx); GLint x,y;
if(x0 > xEnd) {
x=xEnd;
y=yEnd;
xEnd=x;
}
else{ x=x0; y=y0;
}
setPixel (x,y);
while(x<xEnd){
x++;
if(p<0) p+=twoDy; else{
y++;
p+=twoDyMinusDx;
}
setPixel(x,y);
}
}

void lineBresVer (GLint x0, GLint y0, GLint xEnd, GLint yEnd) //rumus
{
GLint dx = (xEnd - x0);
GLint dy = (yEnd - y0);
GLint p = 2*(dy-dx); GLint twoDy = 2*dy;
GLint twoDyMinusDx = 2*(dy-dx); GLint x,y;
if(x0 > xEnd) {
x=xEnd;
y=yEnd;
xEnd =x;
}
else{ x=x0; y=y0;
}
setPixel (x,y);
while(y<yEnd){
y++;
if(p>0) p+=twoDy; else{
x++;
p+=twoDyMinusDx;
}
setPixel(x,y);
}
}

void lineBresMKiri (GLint x0, GLint y0, GLint xEnd, GLint yEnd) //rumus
{
GLint dx = (float)fabs((float)xEnd-x0);
GLint dy = (float)fabs((float)yEnd-y0);
GLint p = 2*dy-dx; GLint twoDy = 2*dy;
GLint twoDyMinusDx = 2*(dy-dx); GLint x,y;

if(x0 > xEnd) {


x=xEnd;
y=yEnd;
xEnd=x;
}
else{ x=x0; y=y0;
}
setPixel (x,y);
while(x<xEnd){
x++;
if(p<0) p+=twoDy; else{
if(y0>yEnd){
y--;}
else y++;
p+=twoDyMinusDx;
}
setPixel(x,y);
}
}
void lineBresMKanan (GLint x0, GLint y0, GLint xEnd, GLint yEnd) //rumus
{
GLint dx = (xEnd - x0);
GLint dy = (yEnd - y0);
GLint p = 2*dy-dx; GLint twoDy = 2*dy;
GLint twoDyMinusDx = 2*(dy-dx); GLint x,y;
if(x0 > xEnd) {
x=xEnd;
y=yEnd;
xEnd=x;
}
else{ x=x0; y=y0;
}
setPixel (x,y);
while(x<xEnd){
x++;
if(p<0) p+=twoDy; else{
y++;
p+=twoDyMinusDx;
}
setPixel(x,y);
}
}

void lingkaran (int jari2, int jumlah_titik,int x_tengah, int y_tengah){


glBegin(GL_POLYGON);
for (i=0;i<=360;i++){
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+jari2*cos(sudut);
float y=y_tengah+jari2*sin(sudut);
glVertex2f(x,y);
}
glEnd();
}

void elips (float ra, float rb, int jumlah_titik, int x_tengah, int y_tengah){
glBegin(GL_POLYGON);
for (i=0; i<=jumlah_titik;i++){
float sudut=i* 2.0 * PI/jumlah_titik;
float x=x_tengah+ra*cos(sudut);
float y=y_tengah+rb*sin(sudut);
glVertex2f(x,y);
}
glEnd();
}

void garis () {
glColor3f(0.9,0.7,0.3);
elips(100, 200, 50, -700, 200);
glColor3f(0.2, 0.0, 0.7);
elips(50, 150, 50, -700, 200);

glColor3f(1.0,1.0,0.0);//latar atas
glBegin (GL_POLYGON);
glVertex2f(-1200, 0);
glVertex2f(1200, 0);
glColor3f(1.0,0.5,0.6);
glBegin (GL_POLYGON);
glVertex2f(1200, 1200);
glVertex2f(-1200,1200);
glEnd ();

glColor3f(0.5,0.2,0.0);//latar bawah
glBegin (GL_POLYGON);
glVertex2f(-1200, 0);
glVertex2f(1200, 0);
glColor3f(0.5,0.2,0.0);
glBegin (GL_POLYGON);
glVertex2f(1200, -1200);
glVertex2f(-1200,-1200);
glEnd ();
glColor3f(1.0, 1.0, 0.0);
lingkaran(150, 100, 0, 900); //matahari
glColor3f(0.0, 0.0, 0.0);
lingkaran(20, 100, -50, 950);
lingkaran(20, 100, 50, 950);
glColor3f(1.0, 1.0, 1.7);
elips(10, 30, 50, 0, 890);
elips(50, 20, 50, 0, 810);

glColor3f(1.0,1.0,1.0);//jalanan
glBegin (GL_POLYGON);
glVertex2f(-1200, 0);
glVertex2f(1200, 0);
glColor3f(0.0,0.0,0.0);//jalanan
glBegin (GL_POLYGON);
glVertex2f(1200, -500);
glVertex2f(-1200,-500);
glEnd ();
glColor3f(0.9,0.7,0.3);
elips(100, 200, 50, -700, 200);
glColor3f(0.2, 0.0, 0.7);
elips(50, 150, 50, -700, 200);

glColor3f(0.2, 0.0, 0.7);


glBegin (GL_POLYGON);
glVertex2f(-300, -250);
glVertex2f(350, -250);
glVertex2f(350, -200);
glVertex2f(-300, -200);
glEnd ();

glColor3f(0.7,0.0,0.0);
glBegin (GL_POLYGON);
glVertex2f(-700, 500);
glVertex2f(-650, 500);
glVertex2f(-500, 600);
glVertex2f(380, 600);
glVertex2f(600, 350);
glVertex2f(650, 350);
glVertex2f(740, 300);
glVertex2f(740, -200);
glVertex2f(-700, -200);
glEnd ();
glColor3f(0.2, 0.0, 0.7);
glBegin (GL_POLYGON);
glVertex2f(650, 350);
glVertex2f(630, 300);
glVertex2f(630,260);
glVertex2f(650, 230);
glVertex2f(640, 230);
glVertex2f(740, 200);
glVertex2f(740, 300);

glEnd ();

glColor3f(1.0,1.0,0.0);
glBegin (GL_POLYGON);
glVertex2f (-500, 200);
glVertex2f (100, 200);
glColor3f(1.10,0.5,0.0);
glBegin (GL_POLYGON);
glVertex2f(100, 500);
glVertex2f(-500, 500);

glEnd();

glColor3f (1.10,0.5,0.0);
glBegin (GL_POLYGON);
glVertex2f(130, 200);
glVertex2f(130, 500);
glColor3f (1.0,1.0,0.0);
glBegin (GL_POLYGON);
glVertex2f(300, 500);
glVertex2f(440, 350);
glVertex2f(440, 200);
glEnd ();

glColor3f(0.0,0.0,0.0);
glBegin (GL_POLYGON);
glVertex2f(-500, 130);
glVertex2f(-500, 170);
glVertex2f(-380, 170);
glVertex2f(-380, 130);
glEnd ();
glBegin (GL_POLYGON);
glVertex2f(130, 130);
glVertex2f(130, 170);
glVertex2f(200, 170);
glVertex2f(200, 130);
glEnd ();
glColor3f(0.2, 0.0, 0.7);
glBegin (GL_POLYGON);
glVertex2f(-640, -250);
glVertex2f(-640, -140);
glVertex2f(-730, -140);
glVertex2f(-730, -250);
glEnd ();
glColor3f(0.2, 0.0, 0.7);
glBegin (GL_POLYGON);
glVertex2f(640, -250);
glVertex2f(640, -140);
glVertex2f(760, -140);
glVertex2f(760, -250);
glEnd ();
glColor3f(0.0, 0.5, 0.2);//POHON
glBegin (GL_POLYGON);
glVertex2f(800, 0);
glVertex2f(900, 0);
glVertex2f(900, 500);
glVertex2f(800, 500);

glEnd ();
glColor3f(0.0, 0.5, 0.2);
glBegin (GL_POLYGON);
glVertex2f(900, 500);
glVertex2f(1050, 500);
glVertex2f(900, 600);
glVertex2f(800, 600);
glVertex2f(650, 500);
glEnd ();
glColor3f(0.0, 0.5, 0.2);
glBegin (GL_POLYGON);
glVertex2f(900, 600);
glVertex2f(1050, 600);
glVertex2f(900, 700);
glVertex2f(800, 700);
glVertex2f(650, 600);
glEnd ();
glColor3f(0.0, 0.5, 0.2);
glBegin (GL_POLYGON);
glVertex2f(900, 700);
glVertex2f(1050, 700);
glVertex2f(850, 850);
glVertex2f(650,700);
glVertex2f(800, 700);
glEnd ();

glColor3f(0.0, 0.5, 0.2);//POHON 2


glBegin (GL_POLYGON);
glVertex2f(-900, 0);
glVertex2f(-1000, 0);
glVertex2f(-1000, 500);
glVertex2f(-900, 500);

glEnd ();
glColor3f(0.0, 0.5, 0.2);
glBegin (GL_POLYGON);
glVertex2f(-900, 500);
glVertex2f(-750, 500);
glVertex2f(-900, 600);
glVertex2f(-1000, 600);
glVertex2f(-1150, 500);
glEnd ();
glColor3f(0.0, 0.5, 0.2);
glBegin (GL_POLYGON);
glVertex2f(-900, 600);
glVertex2f(-750, 600);
glVertex2f(-900, 700);
glVertex2f(-1000, 700);
glVertex2f(-1150, 600);
glEnd ();
glColor3f(0.0, 0.5, 0.2);
glBegin (GL_POLYGON);
glVertex2f(-900, 700);
glVertex2f(-750, 700);
glVertex2f(-950, 850);
glVertex2f(-1150,700);
glVertex2f(-1000, 700);
glEnd ();
}

void drawMyLine ()
{
glClear(GL_COLOR_BUFFER_BIT);
garis();

glColor3f(0.0, 1.0, 1.0);


glPointSize(2.0);
GLint x0 = 700; GLint y0 = 70; GLint xEnd = 740; GLint yEnd = 100;
lineBresMKanan(x0,y0,xEnd,yEnd);

GLint x1 = 700; GLint y1 = 70; GLint x2 = 740; GLint y2 = 70;


lineBres (x1,y1,x2,y2);

GLint x3 = 700; GLint y3 = 40; GLint x4 = 740; GLint y4 = 40;


lineBres(x3,y3,x4,y4);
GLint x5 = 700; GLint y5 = 10; GLint x6 = 740; GLint y6 = 10;
lineBres(x5,y5,x6,y6);
glColor3f(0.9,0.7,0.3);
lingkaran(180, 100, -460, -200); //ban
lingkaran(180, 100, 460, -200);

glColor3f(0.0, 1.0, 1.0);


GLint x7 = 700; GLint y7 = -30; GLint x8 = 740; GLint y8 = -30;
lineBres(x7,y7,x8,y8);

GLint x9 =700; GLint y9 = -30; GLint x10 = 740; GLint y10 =-60;
lineBresMKiri(x9,y9,x10,y10);

GLint x11 = 700; GLint y11 = -30; GLint x12 = 700; GLint y12 =70;
lineBresVer(x11,y11,x12,y12);

GLint x13 = 740; GLint y13 = -60; GLint x14 = 740; GLint y14 = 100;
lineBresVer(x13,y13,x14,y14);

glColor3f(0.5, 0.5, 0.2);


glPointSize(2.0);;
GLint x15 = -500; GLint y15 = 300; GLint x16 = -350; GLint y16 = 400;
lineBresMKanan(x15,y15,x16,y16);

glColor3f(0.2, 0.0, 0.7);


lingkaran(90, 100, -460, -200);// ban
lingkaran(90, 100, 460, -200);
glColor3f(0.5, 0.5, 0.2);
glPointSize(1.5);;
GLint x17 = -350; GLint y17 = 400; GLint x18 = -200; GLint y18 = 300;
lineBresMKiri(x17,y17,x18,y18);

GLint x19 = -200; GLint y19 = 300; GLint x20 = -50; GLint y20 = 400;
lineBresMKanan(x19,y19,x20,y20);

GLint x21 = -50; GLint y21 = 400; GLint x22 = 100; GLint y22 = 300;
lineBresMKiri(x21,y21,x22,y22);

glColor3f(0.0, 1.0, 1.0);


glPointSize(1.5);
GLint x23 = 640; GLint y23 = -250; GLint x24 = 640; GLint y24 = -140;
lineBresVer(x23,y23,x24,y24);

GLint x25 = 760; GLint y25 = -250; GLint x26 = 760; GLint y26 = -140;
lineBresVer(x25,y25,x26,y26);

GLint x27 = 640; GLint y27 = -250; GLint x28 = 760; GLint y28 = -250;
lineBres(x27,y27,x28,y28);

GLint x29 = 640; GLint y29 = -140; GLint x30= 760; GLint y30 = -140;
lineBres(x29,y29,x30,y30);

GLint x31 = -730; GLint y31 = -250; GLint x32 = -730; GLint y32 = -140;
lineBresVer(x31,y31,x32,y32);
GLint x33 = -640; GLint y33 = -250; GLint x34 = -640; GLint y34 = -140;
lineBresVer(x33,y33,x34,y34);

GLint x35 = -730; GLint y35 = -250; GLint x36 = -640; GLint y36 = -250;
lineBres(x35,y35,x36,y36 );

GLint x37 = -730; GLint y37 = -140; GLint x38 = -640; GLint y38 = -140;
lineBres(x37,y37,x38,y38 );

glColor3f(1.0, 1.0, 1.0);


glPointSize(4.0);
GLint x39 = -950; GLint y39 = -400; GLint x40 = -850; GLint y40 = -400;
lineBres(x39,y39,x40,y40);

GLint x41 = -750; GLint y41 = -400; GLint x42 = -650; GLint y42 = -400;
lineBres(x41,y41,x42,y42);

GLint x43 = -550; GLint y43 = -400; GLint x44 = -450; GLint y44 = -400;
lineBres(x43,y43,x44,y44);

GLint x45 = -350; GLint y45 = -400; GLint x46 = -250; GLint y46 = -400;
lineBres(x45,y45,x46,y46);

GLint x47 = -150; GLint y47 = -400; GLint x48 = -50; GLint y48 = -400;
lineBres (x47,y47,x48,y48);

GLint x49 = 50; GLint y49 = -400; GLint x50 = 150; GLint y50 = -400;
lineBres(x49,y49,x50,y50);

GLint x51 = 250; GLint y51 = -400; GLint x52 = 350; GLint y52 = -400;
lineBres(x51,y51,x52,y52);

GLint x53 = 450; GLint y53 = -400; GLint x54 = 550; GLint y54 =-400;
lineBres(x53,y53,x54,y54);

GLint x55 = 650; GLint y55= -400; GLint x56 = 750; GLint y56 = -400;
lineBres(x55,y55,x56,y56);

GLint x57 = 850; GLint y57= -400; GLint x58 = 950; GLint y58 = -400;
lineBres(x57,y57,x58,y58);

int main(int argc, char **argv){


glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowSize(600, 480);
glutInitWindowPosition(100, 100);
glutCreateWindow("algoritma garis");
gluOrtho2D(-1200, 1200, -1100, 1100);
glutDisplayFunc(drawMyLine);
glutMainLoop();
}
HASIL
GAMBAR DI MILIMETER BOOK

Anda mungkin juga menyukai