cs452 | computer graphics - washington … | computer graphics courtesy of andries van damscan...

42
CS452 | COMPUTER GRAPHICS Courtesy of Andries van Dam © Scan Conversion CS452 1

Upload: dangkhanh

Post on 18-Apr-2018

224 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©

Scan ConversionCS452

1

Page 2: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13

} EnrollyourselftoPiazza} Assignment0willbeduenextMonday} Testuploadingadummyfilenow} VisualStudioversion(onlyVS2013?NoVS2015)

} Officehourslocation(conferenceroominJolleyoruniversitylabs)?} Officehours(differenttime?)

2

Logistics

Page 3: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©

Scan ConversionCS452

3

Page 4: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13

} Point} Line} Circle} Ellipse} …} Woody

4

What is the simplest possible thing to draw?

Page 5: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©

LineDrawing} Firstproblemstatement:Drawalineonarasterscreenbetweentwopoints

5

Scan Converting Lines

Page 6: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 6

Raster Screen

Page 7: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©

LineDrawing} Firstproblemstatement:Drawalineonarasterscreenbetweentwopoints

} Whyisthisadifficultproblem?} Whatis“drawing”onarasterdisplay?} Whatisa“line”inrasterworld?} Efficiencyandappearancearebothimportant

7

Scan Converting Lines

Page 8: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©

LineDrawing} Firstproblemstatement:Drawalineonarasterscreenbetweentwopoints

} Whyisthisadifficultproblem?} Whatis“drawing”onarasterdisplay?} Whatisa“line”inrasterworld?} Efficiencyandappearancearebothimportant

ProblemStatement} GiventwopointsPandQinXYplane(integercoordinates),} determinewhichpixelsshouldbeon} tobestapproximateaunit-widthlinesegmentfromPtoQ.

8

Scan Converting Lines

Page 9: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©

Specialcases:} HorizontalLine:

} DrawpixelPandincrementxcoordinatevalueby1togetnextpixel.} VerticalLine:

} DrawpixelPandincrementycoordinatevalueby1togetnextpixel.} DiagonalLine:

} DrawpixelPandincrementbothxandycoordinateby1togetnextpixel.} Whatshouldwedoingeneralcase?

} Forslope<=1,incrementxcoordinateby1andchoosepixelonorclosesttoline.Slopesinotheroctantsbyreflection(e.g.,insecondoctant,incrementY)

} Buthowdowemeasure“closest”?

9

Scan-converting a Line: Finding the next pixel:

Page 10: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 10

Page 11: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 11

Page 12: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam© 12

Strategy 1 – Incremental Algorithm (3/3) - issuesvoidLine(intx0,inty0,intx1,inty1){intx,y;floatdy=y1–y0;floatdx=x1–x0;floatm=dy/dx;

y=y0;for(x=x0;x<x1;++x){ WritePixel(x,Round(y)); y=y+m;}}

Roundingtakestime

Sinceslopeisfractional,needspecialcaseforverticallines(dx=0)

Page 13: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 13

Page 14: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 14

Page 15: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 15

Page 16: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 16

Page 17: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 17

Page 18: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 18

Page 19: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 19

Page 20: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 20

Page 21: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 21

Page 22: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13

voidMidpointLine(intx0,inty0,intx1,inty1){intdx=(x1-x0),dy=(y1-y0);intd=2*dy-dx;intincrE=2*dy;intincrNE=2*(dy-dx);intx=x0,y=y0;WritePixel(x,y);

while(x<x1){if(d<=0)d=d+incrE;//EastCaseelse{d=d+incrNE;++y;}//NortheastCase++x;WritePixel(x,y);} }

22

Example Code

Page 23: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 23

Page 24: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 24

Page 25: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 25

Page 26: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 26

Page 27: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 27

Page 28: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 28

Page 29: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 29

Page 30: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 30

Page 31: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 31

Page 32: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 32

Page 33: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 33

Page 34: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13

}

34

Incremental Computation (2/2)

Page 35: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13

MidpointEighthCircle(R){/*1/8thofacirclew/radiusR*/intx=0,y=R;floatdecision=(x+1)*(x+1)+(y-0.5)*(y-0.5)–R*R;WritePixel(x,y);

while(y>x){if(decision<0){//MoveEastdecision+=2*x+3;x++;WritePixel(x,y);}else{//MoveSouthEastdecision+=2*x–2*y+5;y--;x++;WritePixel(x,y);}}}

35

Midpoint Eighth Circle Algorithm (less optimized)

Page 36: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 36

Page 37: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 37

Page 38: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13

MidpointEighthCircle(R){/*1/8thofacirclew/radiusR*/intx=0,y=R;intdeltaE=2*x+3;intdeltaSE=2*(x-y)+5;floatdecision=(x+1)*(x+1)+(y-0.5)*(y-0.5)–R*R;WritePixel(x,y);

while(y>x){if(decision<0){//MoveEastx++;WritePixel(x,y);decision+=deltaE;deltaE+=2;deltaSE+=2;//Updatedeltas}else{//MoveSouthEast y--;x++;WritePixel(x,y);decision+=deltaSE;deltaE+=2;deltaSE+=4;//Updatedeltas}}}

38

Midpoint Eighth Circle Algorithm

Page 39: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13

} AlignedEllipses

} Non-integerprimitives

} Generalconics

} Patternedprimitives

39

Other Scan Conversion Problems

Page 40: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 40

Page 41: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 41

Page 42: CS452 | COMPUTER GRAPHICS - Washington … | COMPUTER GRAPHICS Courtesy of Andries van DamScan Conversion - 10/15/13©} Point } Line } Circle } Ellipse } … } Woody 4 What is the

CS452 | COMPUTER GRAPHICS

CourtesyofAndriesvanDam©ScanConversion-10/15/13 42