aboutsummaryrefslogblamecommitdiff
path: root/problem.hpp
blob: 10adaf8c225788c243e264ff77292816d8ae316e (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

















                                    


                                                             
                                 



                                                                      

















                                                                       
#pragma once

#include <vector>

#include "geom.hpp"

struct obstacle {
	circle c;
};

struct hilare_a {	// System A
	// paramètres globaux
	double l;
	double r_c_car, r_c_trolley;

	// position actuelle
	double x, y, theta, phi;

	vec pos() const { return vec(x, y); }
	vec dir() const { return vec::from_polar(1, theta); }

	vec pos_trolley() const {
		return pos() + vec::from_polar(l, theta + phi + M_PI);
	}
	vec dir_trolley() const {
		return vec::from_polar(1, theta + phi);
	}
};

struct problem {
	std::vector<obstacle> map;

	hilare_a begin_pos, end_pos;
};

struct solution {
	std::vector<hilare_a> movement;

	// TODO : décrire mieux un mouvement entre deux points (donner
	// le centre de rotation, l'angle, etc.)
};


/* vim: set ts=4 sw=4 tw=0 noet :*/