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