This commit is contained in:
Marion Lenfant 2015-03-11 16:29:15 +01:00
commit 193b811658
9 changed files with 115 additions and 7 deletions

View File

@ -0,0 +1,14 @@
#ifndef ANIMATION_HPP
#define ANIMATION_HPP
//////////////////////////////////////////////
/// \defgroup animation Animation module
///
/// Contains all the classes and functions to animate a mesh
//////////////////////////////////////////////
#include <Animation/AnimatedMesh.hpp>
#include <Click.hpp>
#include <Menu.hpp>
#endif // ANIMATION_HPP

View File

@ -32,6 +32,8 @@ float base(int j, int n, float t, std::vector<float> const& nodes);
/// \brief Compute the length of a spline
///
/// \param spline Spline to compute the length.
///
/// \return the length of the spline
//////////////////////////////////////////////////////////////////
float splineLenght(Spline<Vector3<float>, float> const& spline);

View File

@ -11,6 +11,7 @@ namespace geo
{
///////////////////////////////////////////////////////////////
/// \ingroup geometry
/// \brief Utility template class for manipulating B-splines
//////////////////////////////////////////////////////////////
template<typename... Types>
@ -71,8 +72,24 @@ class Spline
template<typename... T>
friend std::ostream& operator<<( std::ostream& out, Spline<T...> const& spline);
///////////////////////////////////////////////////////////
/// \brief Computes a circle around a spline
///
/// \param t instant of the spline where the circle will be computed
/// \param nbPoints number of the points on the circle
/// \param v up vector (the first point of the circle will be center + v)
/// \param offset offset for the indices in the mesh
/// \return a circle containing the center and the points of the circle
///////////////////////////////////////////////////////////
geo::Circle<float> computeCircle(float t, unsigned int const nbPoints, geo::Vector3<float>& v, unsigned int const offset = 0) const;
///////////////////////////////////////////////////////////
/// \brief Computes circles around the spline
/// \parap nbCircles number of circles on the spline
/// \param nbPoints number of points on the circles
/// \param globalOffset offset for the indices in the mesh
/// \return a vector of the circles
///////////////////////////////////////////////////////////
std::vector<geo::Circle<float>> computeCircles(unsigned int nbCircles, unsigned int const nbPoints, unsigned int const globalOffset = 0) const;
// private:
@ -103,10 +120,3 @@ std::tuple<Types...> evalDerivativeSpline(std::vector<std::tuple<Types...>> cons
#include "Spline.inl"
#endif // SPLINE_HPP
////////////////////////////////////////////////////////////
/// \class geo::Spline
/// \ingroup geometry
///
/// A class that can manage splines and generates points on the splines
////////////////////////////////////////////////////////////

View File

@ -0,0 +1,12 @@
#ifndef MESHING_HPP
#define MESHING_HPP
//////////////////////////////////////////////////
/// \defgroup meshing Meshing module
///
/// Contains the function and classes to mesh 3D skeletons
//////////////////////////////////////////////////
#include <Meshing/Skeleton3D.hpp>
#endif // MESHING_HPP

View File

@ -23,6 +23,8 @@ using Junction = std::vector<std::pair<unsigned int,float>>;
namespace detail
{
/////////////////////////////////////////////////////////////
/// \ingroup meshing
/// \relates Skeleton3D
/// \brief compute on which side of the plane is the point (depending on the orientation of the plane
///
/// \param plane the caracteristic elements of the plane a, b, c, d in the plane equation : ax + by + cz + d = 0.
@ -34,6 +36,8 @@ namespace detail
bool whichSide(geo::Vector<T,4> const& plane, geo::Vector3<T> const& point);
//////////////////////////////////////////////////////////
/// \ingroup meshing
/// \relates Skeleton3D
/// \brief compute the equation of the optimal plane for a given set of points. For 3 points it only computes the equation of a plane, beyond 3 points with ACP decomposition it returns the mean plane.
///
/// \param points the given set of points to estimate the equation of the plane
@ -44,6 +48,8 @@ namespace detail
geo::Vector<float,4> closestPlane(std::vector<geo::Vector3<T>> const& points);
//////////////////////////////////////////////////////////
/// \ingroup meshing
/// \relates Skeleton3D
/// \brief sort all the points of all the circles of the junction according to the side of the plane where they are. For one side of one circle the points are sorted in the order on the circle. See the example
///
/// \param plane the caracteristic elements of the plane a, b, c, d in the plane equation : ax + by + cz + d = 0.
@ -57,11 +63,24 @@ namespace detail
template<typename T>
std::pair<std::vector<std::list<geo::Point<T>>>, std::vector<std::list<geo::Point<T>>>> sortedPoints(geo::Vector<T,4> const& plane, std::vector<geo::Circle<T>> const& junction_circles);
/////////////////////////////////////////////////////////
/// \ingroup meshing
/// \relates Skeleton3D
/// \brief push the face to the mesh with the correct orientation
/// \param mesh mesh to add the face
/// \face face to be added
/// \sphere_center center of the sphere
///
/// Compute the vector between the center of the sphere and the points of the faces
/// and add the face so that the normal is pointing outside the sphere.
//////////////////////////////////////////////////////////
template<typename T>
void pushFaceOriented(geo::Mesh& mesh, geo::Vector3<unsigned int> const& face, geo::Vector3<T> const& sphere_center);
}
/////////////////////////////////////////////////////////////////
/// \ingroup meshing
/// \relates Skeleton3D
/// \brief mesh one junction given the circles associated, the center of the junction and its radius.
//
/// \param mesh the existing mesh to complete.
@ -74,6 +93,7 @@ template<typename T>
geo::Vector<T,4> meshJunction(geo::Mesh& mesh, geo::Vector3<T> const& junction_point, float junction_radius, std::vector<geo::Circle<T>> const& junction_circles);
/////////////////////////////////////////////////////////////////
/// \ingroup meshing
/// \brief Template class for 3D Skeleton
///
/// This class allows to load a 3D skeleton from a file. Then, you can generate
@ -160,6 +180,15 @@ class Skeleton3D
////////////////////////////////////////////////////////
void arcSubdivise(geo::Vector3<float> pt1, geo::Vector3<float> pt2, unsigned int profondeur, std::vector<geo::Vector3<float>>& arc, geo::Vector3<float> center, float radius) const;
////////////////////////////////////////////////////////
/// \brief sort the indexes
/// \param a first index of the vector
/// \param b second index of the vector
/// \param c third index of the vector
/// \param t instant of the spline
/// \pre t must be 0 or 1
/// \return (a,b,c) if t == 0, (a,c,b) if t == 1
////////////////////////////////////////////////////////
geo::Vector3<unsigned int> sortedIndexes(unsigned int a, unsigned int b, unsigned int c, float t) const;
////////////////////////////////////////////////////////

View File

@ -33,6 +33,8 @@ class FreeFlyCamera : public Camera
/// \brief computes the next step of the camera
/// \pre mouse must be in the middle of the screen
/// before the movement of the mouse
/// \param width width of the window
/// \param height height of the window
///////////////////////////////////////////////////
void nextStep(int width, int height);

View File

@ -32,6 +32,8 @@ class JoyCam : public Camera
///////////////////////////////////////////////////
/// \brief computes the next step of the camera
/// \param width width of the window
/// \param height height of the window
///////////////////////////////////////////////////
void nextStep(int width, int height);

View File

@ -1,5 +1,8 @@
\chapter{Actions}
In order to avoid the realization of the identified risks, we applied some of our preventive actions.
\section{Initial actions table}
\begin{table}[h!]
\begin{center}

View File

@ -1,6 +1,40 @@
\chapter{Risks management}
In order to anticipate problems and to set a right schedule, we tried to find as many risks as possible. We made our risks table evolve while the project progressed.
\section{Initial risks table}
\bottomcaption{Risks table on 25th February}
\begin{supertabular}{|p{0.5cm}|p{2cm}|p{2cm}|p{1cm}|p{2cm}|p{1.5cm}|p{2cm}|p{2cm}|p{2cm}|p{1.5cm}|}
\hline
Id & Description & risk cause & Proba (1-5) & Consequence & Seriousness (1-5) & Preventive actions & Corrective actions & Risk state \\
\hline
\cellcolor{green} 1 & Bad time estimation & Under estimation of the problem difficulty & 3 & Late delivery & 4 & Time margin of the planning, name a task advancement responsible & Raise the work amount, revise the planning & Open \\
\hline
\cellcolor{green} 2 & The other group does not deliver the deliverables on time & Under estimation of their problem difficulty, last time augmentation of the work amount & 2 & Delay for tests on the 3D part of the skeleton & 3 & Contemplate an other method to test on simple case & Implement ourselves a segmentation method based on simple threshold & Open \\
\hline
\cellcolor{green} 3 & The other group delivers wrong outputs & Bad comprehension of the subject & 3 & Tests do not work correctly & 1 & Find en agreement on the format & Develop a transition function & Open \\
\hline
\cellcolor{green} 4 & Binaries provided by the client are not compatible & Systems complexity & 4 & We can not carry on with the pipeline & 4 & Discuss with the client the provided binary & Emulate the system allowing the use of the binaries & Open \\
\hline
\cellcolor{green} 5 & Fragile harmony inside the group & Different uses for project management and programmation & 1 & Tensions, bad ambiance, intense stress & 5 & Name a cohesion responsible & Organize a mediation beetween the two parties & Open \\
\hline
\cellcolor{green} 6 & Bad understanding with the other group & A bancal division of the project might bring tensions & 2 & Difficulty to manage shared parts & 3 & Bring a present as a sign of sympathy & Come to a compromise & Open \\
\hline
\cellcolor{green} 7 & A group member is absent during a certain period of time & Illness, event & 5 & Someone's absence & 1 & Put in place teleworking solutions & Planning adaptation & Open \\
\hline
\cellcolor{green} 8 & Production of unreliable, unmaintainable and illegible code & Lack of skills with the used technology & 4 & Lack of time, bad quality, need to reprogram & 3 & C++ formation by a technical expert & Call of the expert & Open \\
\hline
\cellcolor{green} 9 & Need to access urgently to a deleted resource & Utilization of a suppression command, material crash & 2 & Lack of time, need to reprogram & 5 & Use github & Use of recuperation technology on long and complicated files & Open \\
\hline
\cellcolor{green} 10 & Pictures unadapted & Client not satisfied of the pictures & 4 & Wasting time & 2 & Defined the conditions of the shoot with the client more precisely & Be aware of client expectations and taking again the picture & Open \\
\hline
\end{supertabular}
\section{Final risks table}
In the table below you can find the risks state in the end of the project.\\
\bottomcaption{Risks table on 25th February}
\begin{supertabular}{|p{0.5cm}|p{2cm}|p{2cm}|p{1cm}|p{2cm}|p{1.5cm}|p{2cm}|p{2cm}|p{2cm}|p{1.5cm}|}
\hline