资源简介
光线追踪算法应用的一个小场景,图形学的朋友结业作业可以进来看看

代码片段和文件信息
#include
#include
#include “rt.h“
#include “rtlib.h“
object objs [NUM_OBJS];
LIGHT lights [NUM_LIGHTS];
int obj_num = 4;
VEC_PT normalize (VEC_PT vec)
{
/*** find length of vec; scale vec by length; return new vec ***/
double len;
len = sqrt(vec.x * vec.x + vec.y * vec.y + vec.z * vec.z);
vec.x = vec.x/len;
vec.y = vec.y/len;
vec.z = vec.z/len;
return vec;
}
double vec_len(VEC_PT vec)
{
double len;
len = sqrt(vec.x * vec.x + vec.y * vec.y + vec.z * vec.z);
return len;
}
double dot (VEC_PT v1 VEC_PT v2)
{
/*** return result of dot product formula ***/
double dot_res;
dot_res = v1.x * v2.x + v1.y * v2.y + v1.z * v2.z;
return dot_res;
}
VEC_PT substract (VEC_PT vec1 VEC_PT vec2)
{
vec1.x = vec1.x - vec2.x;
vec1.y = vec1.y - vec2.y;
vec1.z = vec1.z - vec2.z;
return vec1;
}
VEC_PT add (VEC_PT vec1 VEC_PT vec2)
{
vec1.x = vec1.x + vec2.x;
vec1.y = vec1.y + vec2.y;
vec1.z = vec1.z + vec2.z;
return vec1;
}
VEC_PT multipy_cons (double cons VEC_PT vec)
{
vec.x = vec.x * cons;
vec.y = vec.y * cons;
vec.z = vec.z * cons;
return vec;
}
COLOR add_color (COLOR c1 COLOR c2)
{
c1.R = c1.R + c2.R;
c1.G = c1.G + c2.G;
c1.B = c1.B + c2.B;
return c1;
}
COLOR cap_color_to_one (COLOR c)
{
if(c.R > 1)
c.R = 1;
if(c.G >1)
c.G = 1;
if(c.B > 1)
c.B = 1;
return c;
}
void define_scene (void)
{
/*** define all objects (location type color) and lights here ***/
objs [0].sph_ctr.x = 0.5;
objs [0].sph_ctr.y = 0.8;
objs [0].sph_ctr.z = 4.0;
objs [0].object_type = SPHERE;
objs [0].sph_radius = 0.5;
objs [0].color.R = 1;
objs [0].color.G = 0;
objs [0].color.B = 0;
objs [1].sph_ctr.x = -0.5;
objs [1].sph_ctr.y = 0.15;
objs [1].sph_ctr.z = 4.2;
objs [1].object_type = SPHERE;
objs [1].sph_radius = 0.6;
objs [1].color.R = 0;
objs [1].color.G = 1;
objs [1].color.B = 0;
objs [2].plane_normal.x = 0;
objs [2].plane_normal.y = 1;
objs [2].plane_normal.z = 0;
objs [2].object_type = PLANE;
objs [2].plane_D = 0.9;
objs [2].color.R = 0.3;
objs [2].color.G = 0.3;
objs [2].color.B = 0.3;
objs [2].color2.R = 1;
objs [2].color2.G = 1;
objs [2].color2.B = 1;
objs [3].box_ll.x = 0.3;
objs [3].box_ll.y = -0.6;
objs [3].box_ll.z = 2.3;
objs [3].box_ur.x = 0.7;
objs [3].box_ur.y = -0.2;
objs [3].box_ur.z = 3.0;
objs [3].object_type = BOX;
objs [3].color.R = 0;
objs [3].color.G = 0;
objs [3].color.B = 1;
lights [0].location.x = -10;
lights [0].location.y = 10;
lights [0].location.z = -5;
lights[0].color.R = 1.0;
lights[0].color.G = 1.0;
lights[0].color.B = 1.0;
lights [1].location.x = 0;
lights [1].location.y = 10;
lights [1].location.z = -10;
lights[1].color.R = 1.0;
lights[1].color.G = 1.0;
lights[1].color.B =
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-03 09:10 pj2_normal\
文件 346 2012-02-07 04:23 pj2_normal\Makefile
文件 64935 2012-02-08 10:29 pj2_normal\pj2-f.jpg
文件 2515854 2012-02-07 12:59 pj2_normal\pj2-f.ppm
文件 7539 2012-02-07 12:59 pj2_normal\rt.c
文件 927 2012-02-07 05:43 pj2_normal\rt.h
文件 225 2012-02-07 04:23 pj2_normal\rtlib.h
文件 6312 2012-02-07 04:23 pj2_normal\rtlib.o
- 上一篇:微信公众号扫码自动回复文字和合成海报
- 下一篇:图书管理系统数据库设计报告
相关资源
- Rational Rose Common破解文件
- ASUS BIOS 加NVME协议文件: Nvme.ffs NV
- U盘强力修复器SD_MMC等内存卡超强修复
- Gamma函数的解法
- 经典的Viterbi算法
- Gauss-Bonnet AdS黑洞的参数相变
- Thermal stability and glass-forming ability of
- Effects of the cultured Cordyceps exopolysacch
- Synthesis Characterization and in vitro Antitu
- ILC对W +W-γ产生的电弱辐射校正
- 在sNN = 200 GeV时Au + Au碰撞和在sNN = 19
- 在sNN = 200 GeV时与横向极化质子束发生
- 在sNN = 200 GeV极化p + A碰撞中产生正中
- 在sNN = 200GeV的Cu + Au碰撞中产生π0和
- 在sNN = 200 GeV极化p + p,p + Al和p + Au碰
- sNN = 200GeV质子核碰撞中二面角角相关
- sNN = 200GeV时Cu + Cu碰撞中的低动量直接
- 在sNN = 5.02 TeV时Pb-Pb碰撞中带电粒子的
- 由s = 7 $$ \\ sqrt {\\ mathrm {s}} = 7 $$ TeV
- 与ATLAS探测器在sNN = 5.02 TeV质子-铅碰撞
- 在sNN = 5.02TeV的pPb碰撞中测量包容性射
- 用ATLAS测量在$$ \\ sqrt {s _ {\\ mathrm {N
- sNN = 5.02 TeV时,p-Pb碰撞中带电射流产
- 在sNN = 5.02 TeV的pPb碰撞中的魅力射流截
- 带电粒子的横向动量高达100 GeV / c在
- 在sNN = 5.02 TeV的pPb碰撞中包含b射流的
- 使用分离的光子标记射流观察sNN = 5
- 搜索希格斯玻色子衰变为bb的暗物质的
- LOM网卡驱动:Intel(R) Ethernet Connecti
- SunnyUI.Net
评论
共有 条评论