Output Primitives Jehee Lee Seoul National University.

Slides:



Advertisements
Similar presentations
COMPUTER GRAPHICS SOFTWARE.
Advertisements

CS 4731: Computer Graphics Lecture 20: Raster Graphics Part 1 Emmanuel Agu.
Computer Graphics 4: Bresenham Line Drawing Algorithm, Circle Drawing & Polygon Filling By:Kanwarjeet Singh.
CS 450: COMPUTER GRAPHICS REVIEW: DRAWING LINES AND CIRCLES SPRING 2015 DR. MICHAEL J. REALE.
+ CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.
Lecture 5 Rendering lines 1.Steps of line rendering 2.Scan-conversion for line segments 3.A1 tutorial CP411 Computer Graphics Fall 2007 Wilfrid Laurier.
Scan conversion of Line , circle & ellipse
Line Drawing Algorithms. Rasterization-Process of determining which pixels give the best approximation to a desired line on the screen. Scan Conversion-Digitizing.
30/9/2008Lecture 21 Computer Graphics Assistant Professor Dr. Sana’a Wafa Al-Sayegh 2 nd Semester ITGD3107 University of Palestine.
OUTPUT PRIMITIVES Screen vs. World coordinate systems ● Objects positions are specified in a Cartesian coordinate system called World Coordinate.
CS 352: Computer Graphics Chapter 7: The Rendering Pipeline.
In the name of God Computer Graphics Bastanfard.
Two-Dimensional Viewing Jehee Lee Seoul National University.
Output Primitives Computer Graphics.
Bresenham’s Midpoint Algorithm CS5600 Computer Graphics Rich Riesenfeld Spring 2006 Lecture Set 1.
Graphics Output Primitives Pixel Addressing and Fill Area Dr. M. Al-Mulhem Feb. 1, 2008.
CS123 | INTRODUCTION TO COMPUTER GRAPHICS Andries van Dam © Scan Conversion CS123 1 of 44Scan Conversion - 10/14/2014.
Rasterization Foley, Ch: 3. Pixels are represented as disjoint circles centered on uniform grid Each (x,y) of the grid has a pixel Y X (1,1) (1,2) (0,0)
CS 450: COMPUTER GRAPHICS DRAWING LINES AND CIRCLES SPRING 2015 DR. MICHAEL J. REALE.
March Shape Drawing Algorithms Shmuel Wimer Bar Ilan Univ., Engineering Faculty.
Rasterizing primitives: know where to draw the line Dr Nicolas Holzschuch University of Cape Town Modified.
1/1/20001 Topic >>>> Scan Conversion CSE Computer Graphics.
Scan Conversion. Also known as rasterization In our programs objects are represented symbolically –3D coordinates representing an object’s position –Attributes.
Dr. S.M. Malaek Assistant: M. Younesi
Jehee Lee Seoul National University
Graphics Output Primitives Sang Il Park Sejong University.
1 CPE 333 : Computer Graphics มหาวิทยาลัยเทคโนโลยีพระจอม เกล้าธนบุรี Dr. Natasha Dejdumrong.
WHERE TO DRAW A LINE?? Line drawing is accomplished by calculating intermediate positions along the line path between specified end points. Precise definition.
Scan Conversion Line and Circle
Tools for Raster Displays CVGLab Goals of the Chapter To describe pixmaps and useful operations on them. To develop tools for copying, scaling, and rotating.
3/4/04© University of Wisconsin, CS559 Spring 2004 Last Time Clipping Lines –Cohen-Sutherland: The use of outcodes and early reject/accept tests –Liang-Barsky:
10/15/02 (c) 2002 University of Wisconsin, CS559 Last Time Clipping.
Graphics Graphics & Graphical Programming Lecture 14 - Lines & Circles.
Introduction Computer Graphics & Its application Types of computer graphics Graphic display : random Scan & Raster Scan display Frame buffer and video.
Graphics Output Primitives
Line Drawing and Generalization. Outline  overview  line drawing  circle drawing  curve drawing.
CGMB214: Introduction to Computer Graphics
2D Output Primitives Points Lines Circles Ellipses Other curves Filling areas Text Patterns Polymarkers.
Graphics Output Primitives Sang Il Park Sejong University.
Computer Graphics Chapter 6 Andreas Savva. 2 Interactive Graphics Graphics provides one of the most natural means of communicating with a computer. Interactive.
Affine Geometry Jehee Lee Seoul National University.
10/15/02 (c) 2002 University of Wisconsin, CS559 Who Am I? Prof Stephen Chenney These notes will be online after the lecture – in fact they’re online already.
University of British Columbia CPSC 314 Computer Graphics Jan-Apr 2013 Tamara Munzner Rasterization.
Chun-Yuan Lin Introduction to OpenGL 2015/12/19 1 CG.
Midpoint Circle Algorithm
CS 325 Introduction to Computer Graphics 02 / 03 / 2010 Instructor: Michael Eckmann.
1 CSCE 441 Lecture 2: Scan Conversion of Lines Jinxiang Chai.
GEOMETRY AND LINE GENERATION Geometry and Line Generation Chapter 2.
In the name of God Computer Graphics. Today Introduction Sampling Graphic Output Primitives 1.Line 2.Circle 3.Curve 4.polygon.
2D Output Primitives Points Lines Circles Ellipses Other curves Filling areas Text Patterns Polymarkers.
Institute for Visualization and Perception Research 1 © Copyright 2000 Haim Levkowitz Raster graphics alg’s for drawing 2D primitives Points of view Application.
Scan Conversion.
Lecture 13: Raster Graphics and Scan Conversion
OUTPUT PRIMITIVES A.Aruna/Faculty of Information technology/SNSCE13/19/2016.
Computer Graphics CC416 Lecture 04: Bresenham Line Algorithm & Mid-point circle algorithm Dr. Manal Helal – Fall 2014.
Computer Graphics Inf4/MSc Computer Graphics Lecture 4 Line & Circle Drawing.
10/10/2006TCSS458A Isabelle Bichindaritz1 Line and Circle Drawing Algorithms.
Scan Conversion of Line Segments. What is Scan conversion? Final step of rasterization (the process of taking geometric shapes and converting them into.
Rasterization, or “What is glBegin(GL_LINES) really doing?” Course web page: February 23, 2012  Lecture 4.
OUTPUT PRIMITIVES CEng 477 Computer Graphics METU, 2004.
Objectives Understand Bresenhams line drawing algorithm. Apply the algorithm to plot a line with the end points specified.
Primitive graphic objects
(c) 2002 University of Wisconsin, CS559
CS 4731: Computer Graphics Lecture 20: Raster Graphics Part 1
Chapter Three Part I Output Primitives CS 380.
Scan Conversion (From geometry to pixels)
Chapter 3 Graphics Output Primitives
Primitive Drawing Algorithm
SUBJECT : COMPUTER GRAPHICS
Primitive Drawing Algorithm
Presentation transcript:

Output Primitives Jehee Lee Seoul National University

OpenGL Programming OpenGL ( gl ) is a common graphics library which provides functions for drawings and interactive input. OpenGL is accessible via C or C++ programs OpenGL basic (core) library –Functions, symbols, and types glBegin, glClear, glCopyPixels, glPolygonMode GL_2D, GL_RGB, GL_POLYGON Glbyte, Glshort, Glint, Glfloat, Gldouble

Related Libraries OpenGL Utility (GLU) –Setting up viewing and projection matrices –Complex objects Line and polygon approximations Displaying quadrics, B-splines –Prefix glu OpenGL Utility Toolkit (GLUT) –Support any screen-windowing system

An Example of Open GL Initialize OpenGL and GLUT Initialize a drawing window Draw a line segment

Output and Input Pipeline Scan conversion –converts primitives such as lines, circles, etc. into pixel values –geometric description  a finite scene area Clipping –the process of determining the portion of a primitive lying within a region called clip region

Output Pipeline Output pipeline (rendering process) –Application model : descriptions of objects –Application program : generates a sequence of functions to display a model –Graphics package : clipping, scan conversion, shading –Display H/W

Output Pipeline

Input Pipeline Input pipeline –user interaction (e.g., mouse click) –graphic package (by sampling or event-driven input functions) –application program –modify the model or the image on the screen

Hardware vs Software Pipelines Displays with frame buffers only –scan conversion by a graphic package Displays with frame buffers and display controllers –common in plug-in graphics card –scan conversion by a graphic package and display processor

Scan conversion and Clipping Clipping before scan conversion –Eg) Lines, rectangles, and polygons (scissoring) Clipping after scan converting the entire collection of primitives into a temporary canvas –Eg) Text window Text can be clipped

Scan Converting Lines A line from (x1,y1) to (x2,y2)  a series of pixels [Criteria] –uniform, user-selected density –straight lines should appear straight –line end-points should be constrained –line drawing algorithms should be fast

f f : L 1 => L 2  quality degradation!! Line drawing is at the heart of many graphics programs.  Smooth, even, and continuous as much as possible !!! Simple and fast !!! Scan Converting Lines ( x 1, y 1 ) ( x 2, y 2 )

Continuity 8-connectivity (king – continuity) 4-connectivity (rook – continuity)

Why Study Scan Conversion Algorithms?  Every high-end graphics card support this.  You will never have to write these routines yourself, unless you become a graphics hardware designer.  So why do we learn this stuff?  Maybe you will become a graphics hardware designer  But seriously, the same basic tricks underlie lots of algorithms:  3-D shaded polygons, texture mapping

Scan Converting Lines Digital Differential Analyzer(DDA) –Basic incremental algorithm –Each point is generated from the previous point in a simple fashion –Slope of a line m = Δy/Δx xx yy

Digital Differential Analyzer(DDA) Idea 1.Go to starting point 2.Increment x and y values by constants proportional to x and y such that one of them is 1. 3.Round to the closest raster position Drawbacks –rounding to an integer takes time –floating-point operations

Digital Differential Analyzer(DDA)

Bresenham’s Line Drawing Algorithm  additions / subtractions only  integer arithmetic  not programmers’ point of view but system developers’ point of view

Midpoint Line Algorithm (Bresenham's Line Algorithm) Assume a line from (x 0,y 0 ) to (x 1,y 1 ) that 0<slope<1 and x 0 <x 1 Suppose that we have just finished drawing a pixel P = (x p, y p ) and we are interested in figuring out which pixel to draw next.

Midpoint Line Algorithm (Bresenham's Line Algorithm) If distance(NE,Q) > distance(E,Q) then select E = (x p +1, y p ) else select NE = (x p +1, y p +1) NE E M P Q

Midpoint Line Algorithm (Bresenham's Line Algorithm) A line eq. in the implicit form F(x, y) = ax + by + c = 0 Using y = (Δy/Δx)x + B, where a = Δy, b = -Δx, c = B·Δx. F(x,y) = Δy·x - Δx·y + B·Δx = 0 Let's use an equivalent representation F(x,y) = 2ax + 2by + 2c = 0.

Midpoint Line Algorithm (Bresenham's Line Algorithm) Making slope assumptions, observe that b < 0, and this implies: –F(x,y) < 0 for points above the line –F(x,y) > 0 for points below the line To apply the midpoint criterion, we need only to compute F(M) = F(x p +1, y p +½) and to test its sign.

Midpoint Line Algorithm (Bresenham's Line Algorithm) To determine which one to pick up, we define a decision variable D = F(x p +1, y p +½) D = 2a(x p +1) + 2b(y p +½) + 2c = 2ax p + 2by p + (2a + b + c) If D > 0 then M is below the line, so select NE, otherwise select E. NE E M P Q

Midpoint Line Algorithm (Bresenham's Line Algorithm) How to compute D incrementally? –Suppose we know the current D value, and we want to determine the next D. –If we decide on going to E next, D new = F(x p + 2, y p + ½) = 2a(x p + 2) + 2b(y p + ½) + c = D + 2a = D + 2Δy –If we decide on going to NE next, D new = F(x p + 2, y p ½) = 2a(x p + 2) + 2b(y p ½) + c = D + 2(a + b) = D + 2(Δy - Δx).

Midpoint Line Algorithm (Bresenham's Line Algorithm) Since we start at (x 0,y 0 ), the initial value of D can be calculated by D init = F(x 0 + 1, y 0 + ½) = (2ax 0 + 2by 0 + c) + (2a + b) = 0 + 2a + b = 2Δy - Δx Advantages –need to add integers and multiply by 2 (which can be done by shift operations) –incremental algorithm

Line end points: (x 0,y 0 ) = (5,8); (x 1,y 1 ) = (9,11) Δx = 4; Δy = 3 D init = 2Δy – Δx = 2 > 0   select NE D new = D + 2(Δy - Δx) = 0  Select E D new = D + 2Δy = = 6  Select NE Midpoint Line Algorithm- Example

Scan Converting Lines (issues) Endpoint order –S 01 is a set of pixels that lie on the line from P 0 to P 1 –S 10 is a set of pixels that lie on the line from P 1 to P 0  S 01 should be the same as S 10 Varying intensity of a line as a function of slope –For the diagonal line, it is longer than the horizontal line but has the same number of pixels as the latter  needs antialiasing Outline primitives composed of lines –Care must be taken to draw shared vertices of polylines only once

Scan Converting Lines (issues) Starting at the edge of a clip rectangle –Starting point is not the intersection point of the line with clipping edge  Clipped line may have a different slope

Aliasing Effects staircases (or jaggies) intensity variation  line drawing

animation texturing popping-up Aliasing Effects

Anti-aliasing Lines Removing the staircase appearance of a line –Why staircases? raster effect !!!  need some compensation in line-drawing algorithms for this raster effect? How to anti-alias? well, … increasing resolution. However,...

Increasing resolution memory cost memory bandwidth scan conversion time display device cost

 super sampling (postfiltering)  area sampling (prefiltering)  stochastic sampling Cook, ACM Trans. CG, 5(1), , Anti-aliasing Line (Cont’) Anti-aliasing Techniques

Area Sampling (Prefiltering)

box filtercone filter Filters unweighted area sampling weighted area sampling

Table look-up for f ( D, t ) The table is invariant of the slope of line! Why? The search key for the table is D! Why? D

Intensity Functions f(D, t) (assumption : t=1)

Scan Converting Circles Equation of Circle?

Scan Converting Circles Eight-way symmetry We only consider 45° of a circle

Midpoint Circle Algorithm Suppose that we have just finished drawing a pixel (x p, y p ) and we are interested in figuring out which pixel to draw next.

Midpoint Circle Algorithm F(x,y) = x 2 + y 2 - R 2 = 0 on the circle > 0 outside the circle < 0 inside the circle If F(midpoint between E and SE) > 0 then select SE = (x p +1,y p -1) else select E = (x p +1, y p );

Midpoint Circle Algorithm Decision variable d old = F(x p +1, y p -½) = (x p +1) 2 + (y p -½) 2 - R 2 –If d old < 0, select E. d new = F(x p +2, y p -½) = d old + (2x p + 3) –If d old  0, select SE. d new = F(x p +2, y p -½-1) = d old + (2x p - 2y p + 5) We have to calculate new d based on the point of evaluation P=(x p, y p ), but this is not expensive computationally.

Midpoint Circle Algorithm Since we start at (0,R), the initial value of d can be calculated by d init = F(1, R - ½) = 5/4 – R By substituting d - 1/4 by h, we can get the integer midpoint circle scan-conversion algorithm.

Scan Converting Ellipses F(x,y) = b 2 x 2 + a 2 y 2 -a 2 b 2 Divide the quadrant into two regions; the boundary of two regions is the point at which the curve has a slope of -1. And then apply any midpoint algorithm.

4. Curve Drawing   parametric equation  discrete data set − curve fitting − piecewise linear

Homework 공통 숙제 : –Bresenham's Line Algorithm 완성  모든 경우에 동작 할 수 있도록 Test Image 만들기 :

Homework Graphics Group 학생들 숙제 – 원과 타원을 그리는 완성된 코드 –2 가지 버전 : 삼각 함수 및 라인그리기를 이용한 버전 Midpoint 알고리즘을 이용한 버젼 – 다양한 크기의 원과 다양한 파라메터의 타원을 그려서 제출