Starting from:
$35

$29

Assignment 5 Solution

For this project, you will write a program in C that implements a simple ray casting renderer and produces a 2D image of spheres. A file of sphere information will be provided. Your code should produce a PPM image of 1000x1000 pixels.

Your code must be modular and use functions, structures, and typedefs. We will discuss the algorithm and PPM files in class. Your solution should consist of four files with data types and functions listed below:

rc.h

RAY_T with origin and  direction fields
COLOR_T with R, G, B fields

SPHERE_T with  center and  radius
OBJ_T with  sphere, color, and  next fields

rc.c
void read_objs (OBJ_T **list)

reads spheres from stdin; creates linked list using dynamic memory

int intersect_sphere (RAY_T ray, SPHERE_T sphere, double *t)

computes intersection of ray and sphere; returns 1 if intersection, 0 otherwise; t is set to distance from camera to sphere intersection

COLOR_T cast (RAY_T ray, OBJ_T *list)

iterates through linked list; finds closest intersection using intersect_sphere; returns color of closest sphere

main

calls read_objs; initializes image file; loops through pixels: sets ray, calls cast, prints pixel; frees linked list

vec.h

VEC_T with x, y, and z fields

vec.c

VEC_T normalize (VEC_T v)

computes and returns normalized vector v

double dot (VEC_T v1, VEC_T v2)

computes and returns dot product of v1 and  v2

The program can be compiled with the command:    gcc rc.c vec.c –lm –o rc

The program can be executed with the command:  ./rc < spheres.txt > img.ppm

More products