Grafikk
Børre Stenseth
Å tegne:>Josef

Josef

Hva

Et gjennomgående tema i oppgavene har vært programmering av Josef K, en menneskelignende robot som skulle foreta seg forskjellige ting. Hvis du lurer på hvorfor figuren heter Josef K, så les Kafka.

Gå og hopp

Oppgaven gikk ut på å programmere Josef til å gå bortover et gulv, opp en spiraltrapp og så hoppe ut på en trampoline.

Utsnitt fra besvarelsen til Robert Brynhildsen, vist som en serie snapshots.

Syklist

Oppgaven gikk ut på å sende Josef K på sykkeltur.

Del av besvarelsen til Bjørn Stærk, vist som en serie med snapshots.

En kikk på den komplette exe-fila anbefales (MS-Windows)

Mer om Josef

Josef ble i oppgavene angitt omtrent slik:

Det er selvsagt en rekke muligheter som melder seg når det gjelder Josef Ks utseende. Vi kjenner ham ikke og kan stå ganske fritt i utformingen av hans jordiske, eller rettere sagt virtuelle, hylster. Det viktigste er at han gis en form som gjør at vi kan modellere tydelige bevegelser.

Nedenfor er analysert en variant med kroppsdeler som sylindere og ledd som kuler.

Image450

Alle lemmene er sylindere, med forskjellig og passende radius og lengde. Alle kuler untatt hodet og hendene er ledd. Kulene bør sikkert få ulik størrelse for å få til en velformet kropp. Vi antar i utgangspunktet at alle ledd er kuleledd med tre frihetsgrader.

Lagrer vinklene i :


Glfloat v[16][3]
    

r(vi):


glRotatef(v[i][0],1,0,0)
glRotatef(v[i][1],0,1,0)
glRotatef(v[i][2],0,0,1)
    

Leddene er slik at sylinderenes senterlinjer møtes og sylindrene skjærer i hverandre. Kula dekker leddet og fjerner gap mellom skråstilte sylindere

Image451

Typisk situasjon

Image452

Det forenkler situasjonen noe dersom vi kan legge en strategi som lar oss tenke og tegne langs z-aksen til en hver tid

k  - start
push
   // torso
   r(v0)
   1
   k
   push
      // hals og hode
      r(v1)
      2
      k(hode)
   pop
   push
      // høyre arm
      r(v2)
      3
      k
      r(v3)
      4
      k
      r(v4)
      5
      k
   pop
   push
      // venstre arm
      r(v5)
      6
      k
      r(v6)
      7
      k
      r(v7)
      8
      k
   pop
pop
push
   // høyre bein
   r(v8)
   9
   k
   r(v9)
   10
   r(v10)
   10
   k
   r(v11)
   11
   k
   r(v12)
   12
pop
push
   // venstre bein
   r(v13)
   13
   k
   r(v14)
   14
   k
   r(v15)
   15
   k
   r(v16)
   16
pop

Besvarelsene til:

  • Robert Brynhildsen, student våren 1998
  • Bjørn Stærk, student høsten 1998.
    Kildeprosjektet. josefbike.zip(VC++/gml)
    josefbike.zip(VC++/.Net)
Vedlikehold
Børre Stenseth, juni 2002
Å tegne:>Josef
til toppen