osci-render/Source/obj/Camera.h

27 wiersze
816 B
C
Czysty Zwykły widok Historia

#pragma once
#include <vector>
#include <memory>
#include "WorldObject.h"
#include "../shape/Shape.h"
2023-01-19 20:46:41 +00:00
#include "../shape/Vector2.h"
class Camera {
public:
Camera(double focalLength, double x, double y, double z);
std::vector<std::unique_ptr<Shape>> draw(WorldObject& object);
2023-01-19 20:46:41 +00:00
void findZPos(WorldObject& object);
private:
2023-01-19 20:46:41 +00:00
const double VERTEX_VALUE_THRESHOLD = 1.0;
const double CAMERA_MOVE_INCREMENT = -0.1;
const int SAMPLE_RENDER_SAMPLES = 50;
const int VERTEX_SAMPLES = 1000;
2023-01-19 20:46:41 +00:00
const int MAX_NUM_STEPS = 1000;
double focalLength;
double x, y, z;
2023-01-19 20:46:41 +00:00
std::vector<Vector2> sampleVerticesInRender(WorldObject& object);
double maxVertexValue(std::vector<Vector2>& vertices);
Vector2 project(double objRotateX, double objRotateY, double objRotateZ, double x, double y, double z);
};