Till KTH:s startsida Till KTH:s startsida

Tracing rays

Elixir is a dynamically typed programming language; a property that has its pros and cons. It is very easy to write smaller programs in a dynamically typed programming language but ones systems grow larger one will benefit from a static type system where the compiler can help us to find bugs in our code. Elixir is a programming language that is targeting large systems and would benefit from a static type system but there are certain aspects when it come to concurrency and change to running systems that makes it very hard to implement a static type system.

We will discuss how a type system would have made things different by implementing a ray tracer. If everything works as expected you should be able to generate images as the one below.

Ray tracing

Before the lecture

You should before the lecture have completed a small ray tracer in Elixir following the tutorial below. During the lecture we will discuss different aspects of the program,  how we have worked with data types  and how things could have been different in another programming language.

Lärare Johan Montelius skapade sidan 19 januari 2015

Lärare Johan Montelius ändrade rättigheterna 21 januari 2015

Kan därmed läsas av alla och ändras av lärare.
Johan Montelius redigerade 1 februari 2015

Erlang är ett dynamiskt typat språk vilket har sin  för och nackdelar. Det är viktigat att förstå hur typsystem fungerar, vad de kan bidra till och varför man väljer att ge ett språk ett dynamiskt eller statiskt typsystem.

Vi skall titt på hur Erlangs "records" används i brist på bättre typsystem och vad det innebär för en implementering. Som exempel skall vi implementera en lite "ray tracer" dvs ett program som generar en bild från en beskrivning av en tredimensionell värld. Om allt går vägen kanske det ser ut så här:

Ray tracing

Läs kapitel 7 i kursboken.

Under föreläsningen Tanken är att vi under föreläsningen skall få klart en liten ray-tracer. Här är de moduler som vi skall arbeta med, en del är klara andra halvfärdiga. Vi kommer att generera bilder på ett format som heter PPM, ett tröstlöst volymiöst format där varje pixel kodas med ett RGB-värde men å andra sidan ett väldigt enkelt format att generera. Hitta bild vidare som stödjer PPM, kolla om du kan öppna och se bilderna nedan.


* ppm.erl
* world.erl
* test.erl
* tracer.erl
* lights.erl
* camera.erl
* vector.erl
* test1ppm

Johan Montelius redigerade 2 februari 2015

Erlang är ett dynamiskt typat språk vilket har sin  för och nackdelar. Det är viktigat att förstå hur typsystem fungerar, vad de kan bidra till och varför man väljer att ge ett språk ett dynamiskt eller statiskt typsystem.

Vi skall titt på hur Erlangs "records" används i brist på bättre typsystem och vad det innebär för en implementering. Som exempel skall vi implementera en lite "ray tracer" dvs ett program som generar en bild från en beskrivning av en tredimensionell värld. Om allt går vägen kanske det ser ut så här:

Ray tracing

Läs kapitel 7 i kursboken.


* tracer.pdf
Under föreläsningen Tanken är att vi under föreläsningen skall få klart en liten ray-tracer. Här är de moduler som vi skall arbeta med, en del är klara andra halvfärdiga. Vi kommer att generera bilder på ett format som heter PPM, ett tröstlöst voluminöst format där varje pixel kodas med ett RGB-värde men å andra sidan ett väldigt enkelt format att generera (kolla om du kan öppna och se bilden nedan).

De moduler som finns nedan kommer inte att generera bilden som syns ovan men det är en början som vi kanske hinner komplettera under föreläsningen.


* ppm.erl
* tracer.erl
* camera.erl
* objects.erl
* vector.erl
* test1.ppm
* test.erl
Dessa moduler används för att komplettera programmet.


* lights.erl
* world.erl
* tracer1.erl
* tracer2.erl
* tracer3.erl

kommenterade 2 februari 2015

Det fattas slides i tracer.pdf. Det finns bara 15 slides medan den i föreläsningen hade 35

kommenterade 4 februari 2015

Hade också uppskattat att få alla slides.

Johan Montelius redigerade 8 februari 2016

Erlang is a dynamically typed programming language; a property that has its pros and cons. It is very easy to write smaller programs in a dynamically typed programming language but ones systems grow larger one will benefit from a static type system where the compiler can help us to find bugs in our code. Erlang is a programming language that is targeting large systems and would benefit from a static type system but there are certain aspects when it come to concurrency and change to running systems that makes it very hard to implement a static type system.

We will discuss how a type system would have made things different by implementing a ray tracer. If everything works as expected you should be able to generate images as the one below.

Ray tracing

Read chapter 7 in the course book.

Before the lecture You should before the lecture have completed a small ray tracer in Erlang following the tutorial below. During the lecture we will discuss different aspects of the program,  how we have worked with data types  and how things could have been different in another programming language.


* assignment
* slides
* tracer.erl
* objects.erl
* camera.erl
* lights.erl
* ppm.erl
* test.erl

Johan Montelius redigerade 5 februari 2018

Elixir is a dynamically typed programming language; a property that has its pros and cons. It is very easy to write smaller programs in a dynamically typed programming language but ones systems grow larger one will benefit from a static type system where the compiler can help us to find bugs in our code. Elixir is a programming language that is targeting large systems and would benefit from a static type system but there are certain aspects when it come to concurrency and change to running systems that makes it very hard to implement a static type system.

We will discuss how a type system would have made things different by implementing a ray tracer. If everything works as expected you should be able to generate images as the one below.

Ray tracing

Before the lecture You should before the lecture have completed a small ray tracer in Elixir following the tutorial below. During the lecture we will discuss different aspects of the program,  how we have worked with data types  and how things could have been different in another programming language.


* tracer.pdf
* slides