資源簡介
光纖跟蹤算法的實現,基于C語言的一個程序,可以自己移動,非常好用

代碼片段和文件信息
#include?
#include?
#include?
#include?“raytracer/colour.h“
#include?“raytracer/Material/material.h“
#include?“raytracer/Geometry/rayplane.h“
#include?“raytracer/Geometry/raysphere.h“
#include?“raytracer/object.h“
#include?“raytracer/light.h“
#include?“scene.h“
#define?defSCREEN_WIDTH?700
#define?defSCREEN_HEIGHT?700
float?lx=50;
//屏幕像素數組
GLubyte?g_abyScreenImage[defSCREEN_HEIGHT][defSCREEN_WIDTH][3];
Scene?s(defSCREEN_WIDTHdefSCREEN_HEIGHT);
void?createScene(){
//添加物體和光源
s.clear();
s.setCamPos(0340);
object*sphere;
Light*light;
float?planedist=-10;
//地面
{
Material?mat(Colour(0.6f0.6f0.6f)Colour(0.2f0.2f0.2f)Colour(0.5f0.5f0.5f)100.0f);
RayPlane*?planegeom?=?new?RayPlane(Plane(Vec3(010)?planedist));
object*?groundplane?=?new?object(mat?planegeom);
s.insertobject(groundplane);
}
/*{
Material?mat(Colour(0.05f0.05f0.05f)Colour(0.0f0.0f0.0f)Colour(1.0f1.0f1.0f)200.0f);
RayPlane*?planegeom?=?new?RayPlane(Plane(Vec3(100)?-30));
object*?groundplane?=?new?object(mat?planegeom);
s.insertobject(groundplane);
}*/
//白球
{
Material?mat(Colour(0.0f0.0f0.0f)Colour(0.6f0.6f0.6f)Colour(0.6f0.6f0.6f)100.0f);
RaySphere*?geom?=?new?RaySphere(Vec3(0planedist+9-35)?3);
sphere?=?new?object(mat?geom);
s.insertobject(sphere);
}
//藍球
{
Material?mat(Colour(0.0f0.0f0.0f)Colour(0.0f0.0f0.6f)Colour(0.5f0.5f0.6f)100.0f);
RaySphere*?geom?=?new?RaySphere(Vec3(-7planedist+14-30)?4);
sphere?=?new?object(mat?geom);
s.insertobject(sphere);
}
//紅球
{
Material?mat(Colour(0.0f0.0f0.0f)Colour(0.6f0.0f0.0f)Colour(0.6f0.50.5f)100.0f);
RaySphere*?geom?=?new?RaySphere(Vec3(10planedist+12-40)4);
sphere?=?new?object(mat?geom);
s.insertobject(sphere);
}
//綠球
{
Material?mat(Colour(0.0f0.0f0.0f)Colour(0.0f0.6f0.0f)Colour(0.5f0.6f0.5f)100.0f);
RaySphere*?geom?=?new?RaySphere(Vec3(5planedist+7-32)?2);
sphere?=?new?object(mat?geom);
s.insertobject(sphere);
}
//光源
light?=?new?Light(Vec3(lx10020)?Colour(1?1?1)?);
s.insertLight(light);
light?=?new?Light(Vec3(0320)?Colour(0.4?0.4?0.4)?);
s.insertLight(light);
}
void?myInit(){
s.setTraceNum(4);
createScene();
s.draw();
}
//初始化屏幕像素數組為全黑
void?InitScreenImage()
{
int?iHeightiWidth;
int?iColorRediColorGreeniColorBlue;
for(iHeight=0;iHeight for(iWidth=0;iWidth iColorRed=0;
iColorGreen=0;
iColorBlue=0;
g_abyScreenImage[iHeight][iWidth][0]=(GLubyte)iColorRed;
g_abyScreenImage[iHeight][iWidth][1]=(GLubyte)iColorGreen;
g_abyScreenImage[iHeight][iWidth][2]=(GLubyte)iColorBlue;
}
}
}
//改變屏幕像素數組
void?ModifyScreenImage()
{
for(int?i=0;i for(int?j=0;j
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????544984??2009-12-09?11:07??光線跟蹤\OpenGL\debug\OpenGL.ilk
?????文件???????7054??2009-12-09?11:07??光線跟蹤\OpenGL\OpenGL\Debug\BuildLog.htm
?????文件???????2023??2009-08-21?14:54??光線跟蹤\OpenGL\OpenGL\graphics2d\graphics2d.cpp
?????文件???????2270??2004-04-15?03:06??光線跟蹤\OpenGL\OpenGL\graphics2d\graphics2d.h
?????文件???????4939??2010-01-08?13:09??光線跟蹤\OpenGL\OpenGL\main.cpp
?????文件???????2348??2009-08-28?18:41??光線跟蹤\OpenGL\OpenGL\maths\mathstypes.h
?????文件???????4896??2009-10-11?22:34??光線跟蹤\OpenGL\OpenGL\maths\plane.h
?????文件???????5958??2009-08-21?14:54??光線跟蹤\OpenGL\OpenGL\maths\plane2.h
?????文件???????4737??2009-11-29?14:51??光線跟蹤\OpenGL\OpenGL\maths\vec2.h
?????文件??????10760??2010-01-08?12:46??光線跟蹤\OpenGL\OpenGL\maths\vec3.h
?????文件???????5298??2010-01-07?00:06??光線跟蹤\OpenGL\OpenGL\OpenGL.vcproj
?????文件???????1427??2009-12-09?12:12??光線跟蹤\OpenGL\OpenGL\OpenGL.vcproj.8D36904777A6491.Administrator.user
?????文件???????1427??2009-08-24?11:06??光線跟蹤\OpenGL\OpenGL\OpenGL.vcproj.CHINA-0FA973DF4.Administrator.user
?????文件???????1421??2010-01-15?13:07??光線跟蹤\OpenGL\OpenGL\OpenGL.vcproj.DHCHENSHUHUA.Administrator.user
?????文件???????1427??2009-08-21?14:59??光線跟蹤\OpenGL\OpenGL\OpenGL.vcproj.PC-200903061639.Administrator.user
?????文件???????1409??2010-01-05?18:04??光線跟蹤\OpenGL\OpenGL\OpenGL.vcproj.user41.user.user
?????文件???????1415??2010-01-05?19:39??光線跟蹤\OpenGL\OpenGL\OpenGL.vcproj.傻Paul-PC.傻Paul.user
?????文件???????2649??2010-01-07?00:51??光線跟蹤\OpenGL\OpenGL\raytracer\colour.h
?????文件????????645??2009-10-11?20:22??光線跟蹤\OpenGL\OpenGL\raytracer\Geometry\geometry.h
?????文件????????403??2009-10-12?19:34??光線跟蹤\OpenGL\OpenGL\raytracer\Geometry\rayplane.cpp
?????文件????????826??2009-10-11?20:21??光線跟蹤\OpenGL\OpenGL\raytracer\Geometry\rayplane.h
?????文件????????742??2009-10-11?22:36??光線跟蹤\OpenGL\OpenGL\raytracer\Geometry\raysphere.cpp
?????文件????????979??2009-10-11?20:21??光線跟蹤\OpenGL\OpenGL\raytracer\Geometry\raysphere.h
?????文件????????587??2009-11-29?15:18??光線跟蹤\OpenGL\OpenGL\raytracer\light.h
?????文件????????248??2009-10-11?22:13??光線跟蹤\OpenGL\OpenGL\raytracer\Material\material.cpp
?????文件????????808??2009-10-11?22:13??光線跟蹤\OpenGL\OpenGL\raytracer\Material\material.h
?????文件????????284??2009-10-11?22:32??光線跟蹤\OpenGL\OpenGL\raytracer\ob
?????文件????????650??2009-10-11?22:33??光線跟蹤\OpenGL\OpenGL\raytracer\ob
?????文件????????481??2009-08-28?17:04??光線跟蹤\OpenGL\OpenGL\raytracer\ray.h
?????文件???????4572??2010-01-15?13:07??光線跟蹤\OpenGL\OpenGL\raytracer\world.cpp
............此處省略39個文件信息
評論
共有 條評論