• 大小: 1.24MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-30
  • 语言: C/C++
  • 标签:

资源简介

光纤跟踪算法的实现,基于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\object.cpp

     文件        650  2009-10-11 22:33  光线跟踪\OpenGL\OpenGL\raytracer\object.h

     文件        481  2009-08-28 17:04  光线跟踪\OpenGL\OpenGL\raytracer\ray.h

     文件       4572  2010-01-15 13:07  光线跟踪\OpenGL\OpenGL\raytracer\world.cpp

............此处省略39个文件信息

评论

共有 条评论