76 lines
2.3 KiB
C#
Executable File
76 lines
2.3 KiB
C#
Executable File
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace RaytracerEngine
|
|
{
|
|
class camera
|
|
{
|
|
vec3 origin;
|
|
vec3 lower_left_corner;
|
|
vec3 horizontal;
|
|
vec3 vertical;
|
|
private const float scale = 0.1f;
|
|
|
|
public camera()
|
|
{
|
|
origin = new vec3(0, 0, 0);
|
|
lower_left_corner = new vec3(-2.0f, -1.0f, -1.0f);
|
|
horizontal = new vec3(4.0f, 0.0f, 0.0f);
|
|
vertical = new vec3(0.0f, 2.0f, 0.0f);
|
|
}
|
|
|
|
public ray get_ray(float u, float v) { return new ray(origin, lower_left_corner + u*horizontal + v*vertical - origin); }
|
|
|
|
public void turn_left()
|
|
{
|
|
//rotational matrix on camera left 25*
|
|
lower_left_corner = vec3.turn_y(lower_left_corner, 25);
|
|
horizontal = vec3.turn_y(horizontal, 25);
|
|
vertical = vec3.turn_y(vertical, 25);
|
|
}
|
|
|
|
public void turn_right()
|
|
{
|
|
//rotational matrix on camera right 25*
|
|
lower_left_corner = vec3.turn_y(lower_left_corner, -25);
|
|
horizontal = vec3.turn_y(horizontal, -25);
|
|
vertical = vec3.turn_y(vertical, -25);
|
|
}
|
|
|
|
public void strafe_left()
|
|
{
|
|
vec3 forwards_back = vec3.cross(horizontal, vertical);
|
|
forwards_back.normalize();
|
|
vec3 left_right = vec3.cross(vertical, forwards_back);
|
|
left_right.normalize();
|
|
origin = origin - left_right * scale;
|
|
}
|
|
|
|
public void strafe_right()
|
|
{
|
|
vec3 forwards_back = vec3.cross(horizontal, vertical);
|
|
forwards_back.normalize();
|
|
vec3 left_right = vec3.cross(vertical, forwards_back);
|
|
left_right.normalize();
|
|
origin = origin + left_right * scale;
|
|
}
|
|
|
|
public void fore()
|
|
{
|
|
vec3 forwards_back = vec3.cross(horizontal, vertical);
|
|
forwards_back.normalize();
|
|
origin = origin - forwards_back * scale;
|
|
}
|
|
|
|
public void back()
|
|
{
|
|
vec3 forwards_back = vec3.cross(horizontal, vertical);
|
|
forwards_back.normalize();
|
|
origin = origin + forwards_back * scale;
|
|
}
|
|
}
|
|
}
|