ARCHITECTURE 541

2D CAD Programming

Prerequisite: Architecture 431 or equivalent

Monday, Wednesday 10:40 am - 11:30 am
Friday Lab Session
(Unless arranged by instructor)

3 Credit hours

An introduction to the data-structures, mathematics, and algorithms underlying computer graphics, computer modeling, and computer-aided design. Topics include: data-structures for two-dimensional geometries, coordinate transformations, interactive sketching, operations and measurements on lines and polygons, polygon set-operations and windowing environments.

The instructor is Jim Turner. The student is required to purchase a course pack and a reference book.

"Programming Windows 95" by Charles Petzold (or newer edition), available from MicroSoft Press or amazon.com.

This term we will be designing and implementing a "Space Syntax" application. The first month will be spent reading papers pertaining to the subject and designing the necessary C++ classes and GUI. The second month will be spent writing the class interfaces. The third and fourth months will be spent trying to fit the pieces together. The instructor will manage the project. If all goes well this term, we can continue development in winter term. The instructor is not a very good O-O programmer and hopes to learn from the students. The winter course number will be Arch 611. Fundamentals of 2D graphic programming will be covered as listed below.

This is a computer programming course. Mondays and Wednesdays will be a lecture and recitation and Fridays will be optional lab sessions.



	Week 1	Introduction	
		Binary sorting, malloc, free, recursion
		Structures re-visited, enum, typedef
		Lab Session
	        Assignment 1 Binary Sort
		Linked list example

	Week 2	2-D Computer Graphics Introduction	
		PostScript library
		Lab Session
		Assignment 2 Pretty Picture 1
		Clown.dat (Picture file)
		pslib.cpp
		pslib.hpp
		pt2_transform.cpp
		Pattern2.cpp
		Pattern2 Output

	Week 3	2-D Geometric Data-structures
		point, line, polygon, graph
		GeometryStructure.hpp
		GeometryStructure.cpp
		Lab Session
		
	Week 4	2-D Transformations	
		scale, rotate, translate, reflect, multiplication
		Lab Session
		Assignment 3 2D Matrix Library
		matrixtest.c	

	Week 5	2-D Viewport Transformations	
		Lab Session

	Week 6	2-D Display list, Viewport Clipping
		MS Windows Application Programming Interface
		Lab Session
		Assignment 4 Windows Programming 1

	Week 7	Windows programming
		Menus, Dialog boxes, Resource editor
		Lab Session
		Assignment 5 Windows Programming 2

	Week 8	2-D	Sketching	
		Move, Draw, Redraw
		Lab Session
		Popfile.c
		Popfile.h
		Assignment 6 Sketch 1

	Week 9 	VACATION

	Week 10	2-D Sketching	
		File I/O, Scale, Point snapping
		Lab Session

	Week 11	2-D Sketching	
		Zoom-in, Zoom-out, Line clipping
		Lab Session
		ln2clp.c
		Utility.c
		Utility.h
		Assignment 7 Sketch 2

	Week 12	2-D Sketching
		Line algorithms, Polygon algorithms
		Lab Session
	
	Week 13	2-D Drafting
		Commands, Menu, Data structure, Copy, Delete, Move, Sketch
		Lab Session
		Assignment 8 Sketch 3

	Week 14	Converting network to polygon
		Convex hull, 2D set operations, wall thickness
		Lab Session	
		Final Project	
		Assignment 9 Final Project