SlideShare a Scribd company logo
1 of 7
Download to read offline
Introduction to Computer Graphics using OpenGL
Can someone tell me what shall I do to connect between the LineClipping, drawing the line, and
rectangle function? I wrote the code below for the above question:
#include
#define red makecol(255,0,0)
#define green makecol(0,255,0)
#include // use as needed for your system
#include
#include
#include
#include
#include "vector.h"
const int screenWidth = 800;
const int screenHeight = 600;
double xmax, xmin, ymax, ymin;
typedef int OutCode;
double xvmin, yvmin, xvmax, yvmax;
int clicks = 0;
Point positions[4];
bool flag = false;
const int INSIDE = 0; // 0000
const int LEFT = 1;
const int RIGHT = 2;
const int BOTTOM = 4; // 0100
const int TOP = 8;
OutCode ComputeOutCode(double x, double y)
{
OutCode code;
code = INSIDE;
if (x < xmin)
code |= LEFT;
else if (x > xmax)
code |= RIGHT;
if (y < ymin)
code |= BOTTOM;
else if (y > ymax)
code |= TOP;
return code;
}
void LineClipping(double x0, double y0, double x1, double y1)
{
OutCode outcode0 = ComputeOutCode(x0, y0);
OutCode outcode1 = ComputeOutCode(x1, y1);
bool accept = false; bool done = false;
while (done)
{
if (!(outcode0 | outcode1)) // Trivially accept and get out of loop
{
accept = true; done = true;
break;
}
else if (outcode0 & outcode1) // Trivially reject and get out of loop
{
done = true;
break;
}
else
{
// failed both tests, so calculate the line segment to clip
// from an outside point to an intersection with clip edge
double x, y;
// At least one endpoint is outside the clip rectangle; pick it.
OutCode outcodeOut = outcode0 ? outcode0 : outcode1;
// Now find the intersection point;
if (outcodeOut & TOP) { // point is above the clip rectangle
x = x0 + (x1 - x0) * (ymax - y0) / (y1 - y0);
y = ymax;
}
else if (outcodeOut & BOTTOM) { // point is below the clip rectangle
x = x0 + (x1 - x0) * (ymin - y0) / (y1 - y0);
y = ymin;
}
else if (outcodeOut & RIGHT) { // point is to the right of clip rectangle
y = y0 + (y1 - y0) * (xmax - x0) / (x1 - x0);
x = xmax;
}
else if (outcodeOut & LEFT) { // point is to the left of clip rectangle
y = y0 + (y1 - y0) * (xmin - x0) / (x1 - x0);
x = xmin;
}
if (outcodeOut == outcode0)
{
x0 = x;
y0 = y;
outcode0 = ComputeOutCode(x0, y0);
}
else {
x1 = x;
y1 = y;
outcode1 = ComputeOutCode(x1, y1);
}
}
}
if (accept)
{
// window to viewport mapping
/* double sx = (xvmax - xvmin) / (xmax - xmin);// scale parameter in x direction
double sy = (yvmax - yvmin) / (ymax - ymin);// scale parameter in y direction
double vx0 = xvmin + (x0 - xmin)*sx;
double vy0 = yvmin + (y0 - ymin)*sy;
double vx1 = xvmin + (x1 - xmin)*sx;
double vy1 = yvmin + (y1 - ymin)*sy;*/
//draw a red color viewport
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINE_LOOP);
glVertex2f(xmin, ymin);
glVertex2f(xmax, ymin);
glVertex2f(xmax, ymax);
glVertex2f(xmin, ymax);
glEnd();
glColor3f(0.0, 0.0, 1.0);
glBegin(GL_LINES);
glVertex2d(x0, y0);
glVertex2d(x1, y1);
glEnd();
}
}
//<<<<<<<<<<<<<<<<<<<<<<< myInit >>>>>>>>>>>>>>>>>>>>
void myInit(void)
{
glClearColor(1.0, 1.0, 1.0, 0.0); // set white background color
glColor3f(0.4f, 0.7f, 0.2f); // set the drawing color
glPointSize(8.0); // a ‘dot’ is 4 by 4 pixels
}
void setWindow(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(left, right, bottom, top);
}
// Set the screen viewport using thisfunction
void setViewport(GLint left, GLint right, GLint bottom, GLint top)
{
glViewport(left, bottom, right - left, top - bottom);
}
//<<<<<<<<<<<<<<<<<<<<<<<< myDisplay >>>>>>>>>>>>>>>>>
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT); // clear the screen
setWindow(0, screenWidth, 0, screenHeight);
setViewport(0, screenWidth, 0, screenHeight);
xmax = double(positions[0].x);
xmin = double(positions[1].x);
ymax = double(positions[0].y);
ymin = double(positions[1].y);
if (clicks >1)
{
{
glBegin(GL_LINE_LOOP);
glVertex2i(positions[0].x, positions[0].y);
glVertex2i(positions[1].x, positions[0].y);
glVertex2i(positions[1].x, positions[1].y);
glVertex2i(positions[0].x, positions[1].y);
glEnd();
}
}
glColor3f(0.0, 1.0, 0.0);
glBegin(GL_LINES);
for (int i = 0; i < clicks; i++)
{
glVertex2i(positions[i].x, positions[i].y);
}
glEnd();
// draw a blue colored window
for (int i = 0; i < clicks; i++)
{
glColor3f(0.0, 0.0, 1.0);
glBegin(GL_POINTS);
glVertex2d(positions[i].x, positions[i].y);
}
glEnd();
glFlush(); // send all output to display
glutSwapBuffers();
}
void myKeyboard(unsigned char key, int x, int y)
{
if (key == 'i')
flag = true;
}
void myMouse(int button, int state, int x, int y)
{
if (button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN)
{
if (clicks == 4)
clicks = 0;
positions[clicks] = Point(x, screenHeight - y);
clicks++;
}
if (button == GLUT_MIDDLE_BUTTON && state == GLUT_DOWN)
clicks = 0;
glutPostRedisplay();
}
void main(int argc, char** argv)
{
glutInit(&argc, argv); // initialize the toolkit
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_MULTISAMPLE); // set
display mode
glutInitWindowSize(screenWidth, screenHeight); // set window size
glutInitWindowPosition(100, 100); // set window position on screen
glutCreateWindow("cohen sutherland clipping"); // open the screen window
glutDisplayFunc(myDisplay); // register redraw function
glutMouseFunc(myMouse);
//glutMotionFunc(myMouseMove);
//glutKeyboardFunc(myKeyboard);
myInit();
glutMainLoop(); // go into a perpetual loop
} Dynamic Line Clipping Input 2 points. Draw an axis aligned rectangle using the 2 points.
Input 2 more points Draw the line segment between the two points Using the Cohen-Sutherland
Clipping Algorithm find the clipped coordinates of the line segment with the rectangle. Draw the
clipped line segment in a different color. Allow the user to move the rectangle, and calculate new
clipping coordinate. Optional: Allow the user to also scale the rectangle using the mouse and
calculate new clipping coordinates.
Solution
I will suggest you to go through this code,because the code you have written is very big and the
thing with the programming is to write the small codes instead of big ones(which will create
confusion).
So here is the code:-

More Related Content

Similar to Introduction to Computer Graphics using OpenGLCan someone tell me .pdf

c++ code#include iostream#include string#include stdlib.h.pdf
c++ code#include iostream#include string#include stdlib.h.pdfc++ code#include iostream#include string#include stdlib.h.pdf
c++ code#include iostream#include string#include stdlib.h.pdfapexjaipur
 
need help with code I wrote. This code is a maze gui, and i need hel.pdf
need help with code I wrote. This code is a maze gui, and i need hel.pdfneed help with code I wrote. This code is a maze gui, and i need hel.pdf
need help with code I wrote. This code is a maze gui, and i need hel.pdfarcotstarsports
 
10CSL67 CG LAB PROGRAM 5
10CSL67 CG LAB PROGRAM 510CSL67 CG LAB PROGRAM 5
10CSL67 CG LAB PROGRAM 5Vanishree Arun
 
Creating an Uber Clone - Part VIII - Transcript.pdf
Creating an Uber Clone - Part VIII - Transcript.pdfCreating an Uber Clone - Part VIII - Transcript.pdf
Creating an Uber Clone - Part VIII - Transcript.pdfShaiAlmog1
 
Cg my own programs
Cg my own programsCg my own programs
Cg my own programsAmit Kapoor
 
Cara membuat tulisan mengikuti kursor di blog
Cara membuat tulisan mengikuti kursor di blogCara membuat tulisan mengikuti kursor di blog
Cara membuat tulisan mengikuti kursor di blogAkhmad Akbar
 
Computer graphics lab manual
Computer graphics lab manualComputer graphics lab manual
Computer graphics lab manualUma mohan
 
import java.awt.;import java.awt.event.MouseAdaptor;import java.pdf
import java.awt.;import java.awt.event.MouseAdaptor;import java.pdfimport java.awt.;import java.awt.event.MouseAdaptor;import java.pdf
import java.awt.;import java.awt.event.MouseAdaptor;import java.pdfanyacarpets
 
Halide tutorial 2019
Halide tutorial 2019Halide tutorial 2019
Halide tutorial 2019Champ Yen
 
Computer graphics lab assignment
Computer graphics lab assignmentComputer graphics lab assignment
Computer graphics lab assignmentAbdullah Al Shiam
 
how can i build this as problem 2 of my code #include iostream.pdf
how can i build this as problem 2 of my code #include iostream.pdfhow can i build this as problem 2 of my code #include iostream.pdf
how can i build this as problem 2 of my code #include iostream.pdfmail931892
 
Computer Graphics and Multimedia lab report
Computer Graphics and Multimedia lab reportComputer Graphics and Multimedia lab report
Computer Graphics and Multimedia lab reportBijoy679
 
Review questions and answers
Review questions and answersReview questions and answers
Review questions and answersIIUM
 
animation.#include windows.h#include GLglut.h#inclu.pdf
animation.#include windows.h#include GLglut.h#inclu.pdfanimation.#include windows.h#include GLglut.h#inclu.pdf
animation.#include windows.h#include GLglut.h#inclu.pdfambritgames
 
import java.util.Scanner;public class Main {    public static in.pdf
import java.util.Scanner;public class Main {    public static in.pdfimport java.util.Scanner;public class Main {    public static in.pdf
import java.util.Scanner;public class Main {    public static in.pdfanwarsadath111
 

Similar to Introduction to Computer Graphics using OpenGLCan someone tell me .pdf (20)

c++ code#include iostream#include string#include stdlib.h.pdf
c++ code#include iostream#include string#include stdlib.h.pdfc++ code#include iostream#include string#include stdlib.h.pdf
c++ code#include iostream#include string#include stdlib.h.pdf
 
need help with code I wrote. This code is a maze gui, and i need hel.pdf
need help with code I wrote. This code is a maze gui, and i need hel.pdfneed help with code I wrote. This code is a maze gui, and i need hel.pdf
need help with code I wrote. This code is a maze gui, and i need hel.pdf
 
10CSL67 CG LAB PROGRAM 5
10CSL67 CG LAB PROGRAM 510CSL67 CG LAB PROGRAM 5
10CSL67 CG LAB PROGRAM 5
 
C++ TUTORIAL 9
C++ TUTORIAL 9C++ TUTORIAL 9
C++ TUTORIAL 9
 
Creating an Uber Clone - Part VIII - Transcript.pdf
Creating an Uber Clone - Part VIII - Transcript.pdfCreating an Uber Clone - Part VIII - Transcript.pdf
Creating an Uber Clone - Part VIII - Transcript.pdf
 
Cg my own programs
Cg my own programsCg my own programs
Cg my own programs
 
Cara membuat tulisan mengikuti kursor di blog
Cara membuat tulisan mengikuti kursor di blogCara membuat tulisan mengikuti kursor di blog
Cara membuat tulisan mengikuti kursor di blog
 
Computer graphics lab manual
Computer graphics lab manualComputer graphics lab manual
Computer graphics lab manual
 
import java.awt.;import java.awt.event.MouseAdaptor;import java.pdf
import java.awt.;import java.awt.event.MouseAdaptor;import java.pdfimport java.awt.;import java.awt.event.MouseAdaptor;import java.pdf
import java.awt.;import java.awt.event.MouseAdaptor;import java.pdf
 
Graphics point clipping c program
Graphics point clipping c programGraphics point clipping c program
Graphics point clipping c program
 
Halide tutorial 2019
Halide tutorial 2019Halide tutorial 2019
Halide tutorial 2019
 
Include
IncludeInclude
Include
 
Computer graphics lab assignment
Computer graphics lab assignmentComputer graphics lab assignment
Computer graphics lab assignment
 
how can i build this as problem 2 of my code #include iostream.pdf
how can i build this as problem 2 of my code #include iostream.pdfhow can i build this as problem 2 of my code #include iostream.pdf
how can i build this as problem 2 of my code #include iostream.pdf
 
Computer Graphics and Multimedia lab report
Computer Graphics and Multimedia lab reportComputer Graphics and Multimedia lab report
Computer Graphics and Multimedia lab report
 
Review questions and answers
Review questions and answersReview questions and answers
Review questions and answers
 
animation.#include windows.h#include GLglut.h#inclu.pdf
animation.#include windows.h#include GLglut.h#inclu.pdfanimation.#include windows.h#include GLglut.h#inclu.pdf
animation.#include windows.h#include GLglut.h#inclu.pdf
 
ES6(ES2015) is beautiful
ES6(ES2015) is beautifulES6(ES2015) is beautiful
ES6(ES2015) is beautiful
 
tetris
tetristetris
tetris
 
import java.util.Scanner;public class Main {    public static in.pdf
import java.util.Scanner;public class Main {    public static in.pdfimport java.util.Scanner;public class Main {    public static in.pdf
import java.util.Scanner;public class Main {    public static in.pdf
 

More from fathimafancyjeweller

Write a Python program that extracts 1000 unique links from Twitter .pdf
Write a Python program that extracts 1000 unique links from Twitter .pdfWrite a Python program that extracts 1000 unique links from Twitter .pdf
Write a Python program that extracts 1000 unique links from Twitter .pdffathimafancyjeweller
 
Which of the following statements about financial intermediaries is .pdf
Which of the following statements about financial intermediaries is .pdfWhich of the following statements about financial intermediaries is .pdf
Which of the following statements about financial intermediaries is .pdffathimafancyjeweller
 
Why must each network router interface belong to a different network.pdf
Why must each network router interface belong to a different network.pdfWhy must each network router interface belong to a different network.pdf
Why must each network router interface belong to a different network.pdffathimafancyjeweller
 
What are the similarities and differences between the seppuku of the.pdf
What are the similarities and differences between the seppuku of the.pdfWhat are the similarities and differences between the seppuku of the.pdf
What are the similarities and differences between the seppuku of the.pdffathimafancyjeweller
 
Which of the following are considered withdrawals from an economy.pdf
Which of the following are considered withdrawals from an economy.pdfWhich of the following are considered withdrawals from an economy.pdf
Which of the following are considered withdrawals from an economy.pdffathimafancyjeweller
 
What measures have the EU (or member nations) taken to mitigate the .pdf
What measures have the EU (or member nations) taken to mitigate the .pdfWhat measures have the EU (or member nations) taken to mitigate the .pdf
What measures have the EU (or member nations) taken to mitigate the .pdffathimafancyjeweller
 
What types of powers are given to the states by the Constitution.pdf
What types of powers are given to the states by the Constitution.pdfWhat types of powers are given to the states by the Constitution.pdf
What types of powers are given to the states by the Constitution.pdffathimafancyjeweller
 
Using the balanced equations given below, determine the overall mola.pdf
Using the balanced equations given below, determine the overall mola.pdfUsing the balanced equations given below, determine the overall mola.pdf
Using the balanced equations given below, determine the overall mola.pdffathimafancyjeweller
 
True or false Income statement profit and loss statement shows com.pdf
True or false Income statement profit and loss statement shows com.pdfTrue or false Income statement profit and loss statement shows com.pdf
True or false Income statement profit and loss statement shows com.pdffathimafancyjeweller
 
Thomas Rinks and Joseph Shields developed Psycho Chihuahua, a carica.pdf
Thomas Rinks and Joseph Shields developed Psycho Chihuahua, a carica.pdfThomas Rinks and Joseph Shields developed Psycho Chihuahua, a carica.pdf
Thomas Rinks and Joseph Shields developed Psycho Chihuahua, a carica.pdffathimafancyjeweller
 
The government uses part of payroll taxes to pay for Social Security..pdf
The government uses part of payroll taxes to pay for Social Security..pdfThe government uses part of payroll taxes to pay for Social Security..pdf
The government uses part of payroll taxes to pay for Social Security..pdffathimafancyjeweller
 
The financial statements are prepared from the unadjusted trial balan.pdf
The financial statements are prepared from the unadjusted trial balan.pdfThe financial statements are prepared from the unadjusted trial balan.pdf
The financial statements are prepared from the unadjusted trial balan.pdffathimafancyjeweller
 
Should the US conform to international standardsSolutionYes, .pdf
Should the US conform to international standardsSolutionYes, .pdfShould the US conform to international standardsSolutionYes, .pdf
Should the US conform to international standardsSolutionYes, .pdffathimafancyjeweller
 
Research and describe a tool that can be used to test for web server.pdf
Research and describe a tool that can be used to test for web server.pdfResearch and describe a tool that can be used to test for web server.pdf
Research and describe a tool that can be used to test for web server.pdffathimafancyjeweller
 
Question 11 of 24 In E. coli, three structural Deand enzymes A. D, an.pdf
Question 11 of 24 In E. coli, three structural Deand enzymes A. D, an.pdfQuestion 11 of 24 In E. coli, three structural Deand enzymes A. D, an.pdf
Question 11 of 24 In E. coli, three structural Deand enzymes A. D, an.pdffathimafancyjeweller
 
Question 1. Dscribe the change you observed when you added 1 mL of 0.pdf
Question 1. Dscribe the change you observed when you added 1 mL of 0.pdfQuestion 1. Dscribe the change you observed when you added 1 mL of 0.pdf
Question 1. Dscribe the change you observed when you added 1 mL of 0.pdffathimafancyjeweller
 
Prove that a group of order 255 is a cyclic.SolutionLet G be a .pdf
Prove that a group of order 255 is a cyclic.SolutionLet G be a .pdfProve that a group of order 255 is a cyclic.SolutionLet G be a .pdf
Prove that a group of order 255 is a cyclic.SolutionLet G be a .pdffathimafancyjeweller
 
Choose one field such as academia, health, consulting, business, man.pdf
Choose one field such as academia, health, consulting, business, man.pdfChoose one field such as academia, health, consulting, business, man.pdf
Choose one field such as academia, health, consulting, business, man.pdffathimafancyjeweller
 
An intercalating agent 1. Inserts between base pairs of the two str.pdf
An intercalating agent 1. Inserts between base pairs of the two str.pdfAn intercalating agent 1. Inserts between base pairs of the two str.pdf
An intercalating agent 1. Inserts between base pairs of the two str.pdffathimafancyjeweller
 
a trait is considered discrete when 1-The traits are intermediat.pdf
a trait is considered discrete when 1-The traits are intermediat.pdfa trait is considered discrete when 1-The traits are intermediat.pdf
a trait is considered discrete when 1-The traits are intermediat.pdffathimafancyjeweller
 

More from fathimafancyjeweller (20)

Write a Python program that extracts 1000 unique links from Twitter .pdf
Write a Python program that extracts 1000 unique links from Twitter .pdfWrite a Python program that extracts 1000 unique links from Twitter .pdf
Write a Python program that extracts 1000 unique links from Twitter .pdf
 
Which of the following statements about financial intermediaries is .pdf
Which of the following statements about financial intermediaries is .pdfWhich of the following statements about financial intermediaries is .pdf
Which of the following statements about financial intermediaries is .pdf
 
Why must each network router interface belong to a different network.pdf
Why must each network router interface belong to a different network.pdfWhy must each network router interface belong to a different network.pdf
Why must each network router interface belong to a different network.pdf
 
What are the similarities and differences between the seppuku of the.pdf
What are the similarities and differences between the seppuku of the.pdfWhat are the similarities and differences between the seppuku of the.pdf
What are the similarities and differences between the seppuku of the.pdf
 
Which of the following are considered withdrawals from an economy.pdf
Which of the following are considered withdrawals from an economy.pdfWhich of the following are considered withdrawals from an economy.pdf
Which of the following are considered withdrawals from an economy.pdf
 
What measures have the EU (or member nations) taken to mitigate the .pdf
What measures have the EU (or member nations) taken to mitigate the .pdfWhat measures have the EU (or member nations) taken to mitigate the .pdf
What measures have the EU (or member nations) taken to mitigate the .pdf
 
What types of powers are given to the states by the Constitution.pdf
What types of powers are given to the states by the Constitution.pdfWhat types of powers are given to the states by the Constitution.pdf
What types of powers are given to the states by the Constitution.pdf
 
Using the balanced equations given below, determine the overall mola.pdf
Using the balanced equations given below, determine the overall mola.pdfUsing the balanced equations given below, determine the overall mola.pdf
Using the balanced equations given below, determine the overall mola.pdf
 
True or false Income statement profit and loss statement shows com.pdf
True or false Income statement profit and loss statement shows com.pdfTrue or false Income statement profit and loss statement shows com.pdf
True or false Income statement profit and loss statement shows com.pdf
 
Thomas Rinks and Joseph Shields developed Psycho Chihuahua, a carica.pdf
Thomas Rinks and Joseph Shields developed Psycho Chihuahua, a carica.pdfThomas Rinks and Joseph Shields developed Psycho Chihuahua, a carica.pdf
Thomas Rinks and Joseph Shields developed Psycho Chihuahua, a carica.pdf
 
The government uses part of payroll taxes to pay for Social Security..pdf
The government uses part of payroll taxes to pay for Social Security..pdfThe government uses part of payroll taxes to pay for Social Security..pdf
The government uses part of payroll taxes to pay for Social Security..pdf
 
The financial statements are prepared from the unadjusted trial balan.pdf
The financial statements are prepared from the unadjusted trial balan.pdfThe financial statements are prepared from the unadjusted trial balan.pdf
The financial statements are prepared from the unadjusted trial balan.pdf
 
Should the US conform to international standardsSolutionYes, .pdf
Should the US conform to international standardsSolutionYes, .pdfShould the US conform to international standardsSolutionYes, .pdf
Should the US conform to international standardsSolutionYes, .pdf
 
Research and describe a tool that can be used to test for web server.pdf
Research and describe a tool that can be used to test for web server.pdfResearch and describe a tool that can be used to test for web server.pdf
Research and describe a tool that can be used to test for web server.pdf
 
Question 11 of 24 In E. coli, three structural Deand enzymes A. D, an.pdf
Question 11 of 24 In E. coli, three structural Deand enzymes A. D, an.pdfQuestion 11 of 24 In E. coli, three structural Deand enzymes A. D, an.pdf
Question 11 of 24 In E. coli, three structural Deand enzymes A. D, an.pdf
 
Question 1. Dscribe the change you observed when you added 1 mL of 0.pdf
Question 1. Dscribe the change you observed when you added 1 mL of 0.pdfQuestion 1. Dscribe the change you observed when you added 1 mL of 0.pdf
Question 1. Dscribe the change you observed when you added 1 mL of 0.pdf
 
Prove that a group of order 255 is a cyclic.SolutionLet G be a .pdf
Prove that a group of order 255 is a cyclic.SolutionLet G be a .pdfProve that a group of order 255 is a cyclic.SolutionLet G be a .pdf
Prove that a group of order 255 is a cyclic.SolutionLet G be a .pdf
 
Choose one field such as academia, health, consulting, business, man.pdf
Choose one field such as academia, health, consulting, business, man.pdfChoose one field such as academia, health, consulting, business, man.pdf
Choose one field such as academia, health, consulting, business, man.pdf
 
An intercalating agent 1. Inserts between base pairs of the two str.pdf
An intercalating agent 1. Inserts between base pairs of the two str.pdfAn intercalating agent 1. Inserts between base pairs of the two str.pdf
An intercalating agent 1. Inserts between base pairs of the two str.pdf
 
a trait is considered discrete when 1-The traits are intermediat.pdf
a trait is considered discrete when 1-The traits are intermediat.pdfa trait is considered discrete when 1-The traits are intermediat.pdf
a trait is considered discrete when 1-The traits are intermediat.pdf
 

Recently uploaded

Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Sapana Sha
 
Concept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfConcept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfUmakantAnnand
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfchloefrazer622
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting DataJhengPantaleon
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppCeline George
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAssociation for Project Management
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxNirmalaLoungPoorunde1
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdfSoniaTolstoy
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docxPoojaSen20
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Celine George
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991RKavithamani
 
PSYCHIATRIC History collection FORMAT.pptx
PSYCHIATRIC   History collection FORMAT.pptxPSYCHIATRIC   History collection FORMAT.pptx
PSYCHIATRIC History collection FORMAT.pptxPoojaSen20
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 

Recently uploaded (20)

Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
 
Concept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.CompdfConcept of Vouching. B.Com(Hons) /B.Compdf
Concept of Vouching. B.Com(Hons) /B.Compdf
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdf
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website App
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
APM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across SectorsAPM Welcome, APM North West Network Conference, Synergies Across Sectors
APM Welcome, APM North West Network Conference, Synergies Across Sectors
 
Employee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptxEmployee wellbeing at the workplace.pptx
Employee wellbeing at the workplace.pptx
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
MENTAL STATUS EXAMINATION format.docx
MENTAL     STATUS EXAMINATION format.docxMENTAL     STATUS EXAMINATION format.docx
MENTAL STATUS EXAMINATION format.docx
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
Incoming and Outgoing Shipments in 1 STEP Using Odoo 17
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
 
PSYCHIATRIC History collection FORMAT.pptx
PSYCHIATRIC   History collection FORMAT.pptxPSYCHIATRIC   History collection FORMAT.pptx
PSYCHIATRIC History collection FORMAT.pptx
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 

Introduction to Computer Graphics using OpenGLCan someone tell me .pdf

  • 1. Introduction to Computer Graphics using OpenGL Can someone tell me what shall I do to connect between the LineClipping, drawing the line, and rectangle function? I wrote the code below for the above question: #include #define red makecol(255,0,0) #define green makecol(0,255,0) #include // use as needed for your system #include #include #include #include #include "vector.h" const int screenWidth = 800; const int screenHeight = 600; double xmax, xmin, ymax, ymin; typedef int OutCode; double xvmin, yvmin, xvmax, yvmax; int clicks = 0; Point positions[4]; bool flag = false; const int INSIDE = 0; // 0000 const int LEFT = 1; const int RIGHT = 2; const int BOTTOM = 4; // 0100 const int TOP = 8; OutCode ComputeOutCode(double x, double y) { OutCode code; code = INSIDE; if (x < xmin) code |= LEFT; else if (x > xmax) code |= RIGHT;
  • 2. if (y < ymin) code |= BOTTOM; else if (y > ymax) code |= TOP; return code; } void LineClipping(double x0, double y0, double x1, double y1) { OutCode outcode0 = ComputeOutCode(x0, y0); OutCode outcode1 = ComputeOutCode(x1, y1); bool accept = false; bool done = false; while (done) { if (!(outcode0 | outcode1)) // Trivially accept and get out of loop { accept = true; done = true; break; } else if (outcode0 & outcode1) // Trivially reject and get out of loop { done = true; break; } else { // failed both tests, so calculate the line segment to clip // from an outside point to an intersection with clip edge double x, y; // At least one endpoint is outside the clip rectangle; pick it. OutCode outcodeOut = outcode0 ? outcode0 : outcode1; // Now find the intersection point; if (outcodeOut & TOP) { // point is above the clip rectangle x = x0 + (x1 - x0) * (ymax - y0) / (y1 - y0); y = ymax; } else if (outcodeOut & BOTTOM) { // point is below the clip rectangle
  • 3. x = x0 + (x1 - x0) * (ymin - y0) / (y1 - y0); y = ymin; } else if (outcodeOut & RIGHT) { // point is to the right of clip rectangle y = y0 + (y1 - y0) * (xmax - x0) / (x1 - x0); x = xmax; } else if (outcodeOut & LEFT) { // point is to the left of clip rectangle y = y0 + (y1 - y0) * (xmin - x0) / (x1 - x0); x = xmin; } if (outcodeOut == outcode0) { x0 = x; y0 = y; outcode0 = ComputeOutCode(x0, y0); } else { x1 = x; y1 = y; outcode1 = ComputeOutCode(x1, y1); } } } if (accept) { // window to viewport mapping /* double sx = (xvmax - xvmin) / (xmax - xmin);// scale parameter in x direction double sy = (yvmax - yvmin) / (ymax - ymin);// scale parameter in y direction double vx0 = xvmin + (x0 - xmin)*sx; double vy0 = yvmin + (y0 - ymin)*sy; double vx1 = xvmin + (x1 - xmin)*sx; double vy1 = yvmin + (y1 - ymin)*sy;*/ //draw a red color viewport glColor3f(1.0, 0.0, 0.0);
  • 4. glBegin(GL_LINE_LOOP); glVertex2f(xmin, ymin); glVertex2f(xmax, ymin); glVertex2f(xmax, ymax); glVertex2f(xmin, ymax); glEnd(); glColor3f(0.0, 0.0, 1.0); glBegin(GL_LINES); glVertex2d(x0, y0); glVertex2d(x1, y1); glEnd(); } } //<<<<<<<<<<<<<<<<<<<<<<< myInit >>>>>>>>>>>>>>>>>>>> void myInit(void) { glClearColor(1.0, 1.0, 1.0, 0.0); // set white background color glColor3f(0.4f, 0.7f, 0.2f); // set the drawing color glPointSize(8.0); // a ‘dot’ is 4 by 4 pixels } void setWindow(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(left, right, bottom, top); } // Set the screen viewport using thisfunction void setViewport(GLint left, GLint right, GLint bottom, GLint top) { glViewport(left, bottom, right - left, top - bottom); } //<<<<<<<<<<<<<<<<<<<<<<<< myDisplay >>>>>>>>>>>>>>>>> void myDisplay(void) { glClear(GL_COLOR_BUFFER_BIT); // clear the screen
  • 5. setWindow(0, screenWidth, 0, screenHeight); setViewport(0, screenWidth, 0, screenHeight); xmax = double(positions[0].x); xmin = double(positions[1].x); ymax = double(positions[0].y); ymin = double(positions[1].y); if (clicks >1) { { glBegin(GL_LINE_LOOP); glVertex2i(positions[0].x, positions[0].y); glVertex2i(positions[1].x, positions[0].y); glVertex2i(positions[1].x, positions[1].y); glVertex2i(positions[0].x, positions[1].y); glEnd(); } } glColor3f(0.0, 1.0, 0.0); glBegin(GL_LINES); for (int i = 0; i < clicks; i++) { glVertex2i(positions[i].x, positions[i].y); } glEnd(); // draw a blue colored window for (int i = 0; i < clicks; i++) { glColor3f(0.0, 0.0, 1.0); glBegin(GL_POINTS); glVertex2d(positions[i].x, positions[i].y);
  • 6. } glEnd(); glFlush(); // send all output to display glutSwapBuffers(); } void myKeyboard(unsigned char key, int x, int y) { if (key == 'i') flag = true; } void myMouse(int button, int state, int x, int y) { if (button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN) { if (clicks == 4) clicks = 0; positions[clicks] = Point(x, screenHeight - y); clicks++; } if (button == GLUT_MIDDLE_BUTTON && state == GLUT_DOWN) clicks = 0; glutPostRedisplay(); } void main(int argc, char** argv) { glutInit(&argc, argv); // initialize the toolkit glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_MULTISAMPLE); // set display mode glutInitWindowSize(screenWidth, screenHeight); // set window size glutInitWindowPosition(100, 100); // set window position on screen glutCreateWindow("cohen sutherland clipping"); // open the screen window glutDisplayFunc(myDisplay); // register redraw function glutMouseFunc(myMouse); //glutMotionFunc(myMouseMove); //glutKeyboardFunc(myKeyboard); myInit();
  • 7. glutMainLoop(); // go into a perpetual loop } Dynamic Line Clipping Input 2 points. Draw an axis aligned rectangle using the 2 points. Input 2 more points Draw the line segment between the two points Using the Cohen-Sutherland Clipping Algorithm find the clipped coordinates of the line segment with the rectangle. Draw the clipped line segment in a different color. Allow the user to move the rectangle, and calculate new clipping coordinate. Optional: Allow the user to also scale the rectangle using the mouse and calculate new clipping coordinates. Solution I will suggest you to go through this code,because the code you have written is very big and the thing with the programming is to write the small codes instead of big ones(which will create confusion). So here is the code:-