DATORGRAFIKLABORATION 1

ENKEL DATORGRAFIK I 2D

Demonstrationsuppgifter

Uppgift D1: Så ser vi ut

Kemister var tidiga användare av datorgrafik. Bl a ville man studera molekylstrukturer. Gå in på
http://molvis.sdsc.edu/fgij/
Välj förslagsvis hemoglobin med kod 1IRD. Testa Vines, Cartoon, Secondary structures för ett par olika sätt att betrakta proteinet. Beroende på vad man är ute efter att se så väljer man läge därefter.

Programmeringsuppgifter

Uppgift P1: Datorkonst

Tillverka ett program som producerar ett "konstverk" uppbyggt av räta linjer eller rektanglar. Låt gärna slumpen styra utseendet (C-funktionen rand() producerar heltalsslumptal i intervallet [0,RAND_MAX] där RAND_MAX är systemberoende. rand()%20 ger heltal i intervallet [0,19]).

Uppgift P2: Visualisering av en iterativ process

Den matematiskt lagde pepparkaksbagaren P har en trädgård intill sitt företag. Han har lagt ett koordinatsystem med gränserna -4 och 10 i både x- och y-led över den. P planterar nu 10000 (punktformiga) krokusar enligt följande metod.
1.Den första planteras i punkten (x0,y0) med x0 = -1.3 och y0 = 2.0
2.De följande planteras i en punkt (xi+1,yi+1) där
xi+1=1-yi+|xi|
yi+1=xi

varvid (x0,y0) är den punkt där föregående krokus planterades. P är så matematiskt lagd att han betraktar datorerna som ett intrång i sin stillsamma värld. Samtidigt är han oerhört nyfiken på hur trädgården skall se ut till våren att han ber dig att göra ett program som på datorskärmen ritar ut hur det kommer att se ut. Rita en prick per krokus. I C tar man absolutbelopp av reella storheter med funktionen fabs.
Frivilligt tillägg:
1.Låt programmet läsa position för första krokusen (tangenter eller mus) och låt det hantera flera sådana startvärden utan omstart.
2.Prova med att byta |x0| mot sqrt(|x0|).

Uppgift P3: Peka

Tillverka ett program som visar upp ett fönster och låter användaren markera t ex 5 punkter, varpå polygonen med dessa punkter som hörn ritas. Fungerar det för alla polygoner? Använd en vektor med fem element (eller fler om du vill göra en allmännare lösning) för punkterna och kombinera med en räknare som håller reda på hur många punkter som markerats.

C: En heltalsvektor (inkl minnesutrymmet) med 5 element v[0], ..., v[4] införs med int v[5]. En punktvektor med 5 element kan införas med
//POINT verkar vara ett använt namn. Testa ett annat om kompileringsfel uppstår tex POINT2D
typedef struct POINT
        {
        int x, y;
        } POINT;
POINT p[5];
Tips: ställer ni in glOrtho rätt så behöver ni inte konvertera mellan skärmkoordinater och världskoordinater. Leta rätt på var skärmens bredd och höjd finns i koden.

This is a personal www page. Opinions expressed here do not represent the official views of Chalmers University of Technology. Please refer to Chalmers www policy.