CS348A - Computer Graphics: Mathematical Foundations

Kursutvärdering 93/94

Gunnar Farnebäck


Kursansvarig:

Prof. L. Guibas

Kurslitteratur:

Föreläsningsanteckningar från föregående års kurs. Relevant material men ganska rörigt och med mycket upprepningar. Anledningen står att finna i att när kursen gavs första gången för två år sedan fanns inget kursmaterial alls utan studenterna fick turas om att ta anteckningar och skriva rent dem i Tex. Dessa delades sedan ut och till året efter fungerade dessa som kursmaterial. Även förra året gjordes likadant och i kursinformationen i år påstods att det systemet skulle användas igen men det verkade komma av sig. Det fanns också förslag på ett par böcker för referens men de var helt överflödiga.

Kursinnehåll:

Affine and projective geometry, homogeneous coordinates, matrix representations of various transformations, quaternion representation for rotations, polynomial interpolations. Polynomial and rational parametric splines: Bezier points, Bernstein polynomials, polar forms, de Casteljau algorithm, de Boor algorithm, polar interpolation, parametric continuity, NURBS. Surfaces: tensor-product surfaces and total degree surfaces, constraints on smoothness. Solid modeling, data structures, algorithmic complexity, randomization, rendering of curves.

Förkunskaper:

Linjär algebra, analys. Linjär algebra överkurs är marginellt nyttig (kvaternioner). Programmering i C. Grundläggande datorgrafik och grafikprogrammering sitter inte i vägen men jag klarade mig bra utan.

Föreläsningar:

Näst intill obegripliga. Guibas har en extremt knepig grekisk accent och en svår handstil. Dessutom flyger lapparna huller om buller under tv-kameran. Det är ett rent under att föreläsningsanteckningar någonsin har blivit skrivna. Han har dock bra grepp om det han pratar om så om man lyckas uppfatta vad han säger så är det i allmänhet givande.

Övrig undervisning:

Även här lär det ha funnits kontorstider som jag aldrig letade rätt på. Mail och klassens newsgrupp var ganska flitigt utnyttjad under kursen.

Inlämningsuppgifter:

Fem omgångar om cirka 6 uppgifter vardera. Tre och en halv omgångar teoriproblem och en och en halv omgång programmeringsuppgifter. Teoriproblemen såg ofta ganska omfattande ut men krympte i allmänhet ihop högst väsentligt när de blev lösta. Första programmeringsuppgiften var att lära sig använda Graphics Library på SGI-maskiner för att rita en torus, beskriven som en NURBS-yta. Andra programmeringsuppgiften var ett större projekt (se nedan). För inlämningsuppgifterna var det uttryckligt sagt att man fick samarbeta i mindre grupper men att var och en skulle skriva ner sin favoritlösning och lämna in. Programmeringsuppgifterna fick lösas gemensamt i grupper upp till 3 personer (med gemensam kod). Programmeringsuppgifterna gjordes på SGI-datorer och all programmering var i C.

Projekt:

Att konstruera det konvexa höljet av ett antal punkter i rymden med betoning på effektiva datastrukturer och låg tidskomplexitet. Det gavs en hel del ledtrådar för hur man borde lägga upp algoritmen och på möjliga datastrukturer samt hur man skulle klara av degenerationsfenomen. Däremot fick man inga kodskelett eller något sådant utan projektet skrevs från scratch. Det enda man bjöds på var en biblioteksfunktion som TA skrivit.

Midterm:

Nej.

Final:

Två timmar. Provet hade 24 uppgifter men man fick bara göra 16, dvs bara 16 blev rättade. Uppgifterna var i allmänhet lätta, vilket var nödvändigt för att hinna med dem på den korta tiden. Formatet passade mig perfekt eftersom vissa frågor var sådana som jag hade behövt en hel del tid att resonera mig fram till. Det blev ju bara tid till 8 timmars tentaplugg. Jag var för övrigt klar med de 16 frågor som jag klarade snabbt med ungefär tio minuter kvar så tentan kändes mer eller mindre skräddarsydd.

Sammanfattning:

Rolig kurs. Extremt nära forskningsfronten, mycket av det som togs upp var sånt som Guibas och en annan person (Lyle Ramshaw) som tidigare år samundervisat kursen skrivit papper på för omkring fem år sedan. Ett antal av dessa fanns dessutom med i kursmaterialet (även om de inte alltid var direkt roliga att läsa). Jag hade en väldig tur att hitta en labkompis som hade god erfarenhet av grafikprogrammering. Att hon var en andra generationens svenskamerikanska och talade svenska var ju inte heller så dumt. Utan henne hade jag förmodligen fått en hel del problem eller åtminstone extrajobb på programmeringsuppgifterna. Kursen är väldigt tacksam om man vill göra bra resultat eftersom computer science studenter inte alltid är så duktiga på matematik.

TA'n som rättade inlämningsuppgifterna verkade väldigt imponerad av mina lösningar och skrev saker som 'excellent' och 'very impressing' på dem. :-)