Minggu, 14 Oktober 2012

Membuat Titik Perpotongan Antara 2 Garis


Untuk membuat Titik perpotongan 2 garis seperti diatas dengan titik titik seperti berikut:
A ( 50 , 70 )
B ( 200 , 250 )
C ( 250 , 50 )
D ( 50 , 350 )          
Anda bisa melakukan nya seperti dibawah ini :

#include <windows.h>   // digunakan oleh sistem 
#include <gl/Gl.h>
#include <stdio.h>
#include <gl/glut.h>
#include <stdlib.h>
#include <stdarg.h>

//<<<<<<<<<<<<<<<<<<<<<<< myInit >>>>>>>>>>>>>>>>>>>>
 void myInit(void)
 {
    glClearColor(1.0,1.0,1.0,0.0);      
    glColor3f(0.0f, 0.0f, 0.0f);          
  glPointSize(4.0);      
glMatrixMode(GL_PROJECTION); 
glLoadIdentity();
gluOrtho2D(0.0, 640.0, 0.0, 480.0);
}
//<<<<<<<<<<<<<<<<<<<<<<<< myDisplay >>>>>>>>>>>>>>>>>
void myDisplay(void)
{
     float xa = 50,        ya = 70,
           xb = 200,       yb = 250,
           xc = 250,       yc = 50,
           xd = 50,        yd = 350,
           m1,m2,c1,c2,x,y;
    glClear(GL_COLOR_BUFFER_BIT);     
    glBegin(GL_LINES);
    glColor3f(0.0f, 0.0f, 1.0f); 
glVertex2f(xa, ya);        
glVertex2f(xb, yb);
    glEnd();
    
    glBegin(GL_LINES);
    glColor3f(0.0f, 1.0f, 0.0f);
glVertex2f(xc, yc);        
glVertex2f(xd, yd);
    glEnd();
m1 = (yb - ya) / (xb - xa);
m2 = (yd - yc) / (xd - xc);
c1 =ya - (xa * m1);
c2 =yc - (xc * m2);
    x = (c2 - c1) / (m1 - m2);
y = (m1 * x) + c1;
        
    glBegin(GL_POINTS);
    glColor3f(1.0f, 0.0f, 0.0f);
glVertex2f(x, y);
glEnd();
glFlush();                
}

//<<<<<<<<<<<<<<<<<<<<<<<< main >>>>>>>>>>>>>>>>>>>>>>
int main(int argc, char** argv)
{       

glutInit(&argc, argv);          
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 
glutInitWindowSize(640,480);    
glutInitWindowPosition(100, 150);
//acuan sudut kiri-atas
glutCreateWindow("Titik Potong Garis");
glutDisplayFunc(myDisplay);    
myInit();                   
glutMainLoop();    
}

Link untuk Mendownload source code nya di bawah :
http://www.4shared.com/file/mnVUhpho/perpotongan.html


Tidak ada komentar:

Posting Komentar