middleware/src/Tracking/Gestures/UserPositionDetector.cs
changeset 15 4b78f179e7ce
parent 14 10d5199d9874
child 16 a9ebacd6c089
--- a/middleware/src/Tracking/Gestures/UserPositionDetector.cs	Fri Mar 30 11:14:14 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-/*
-* This file is part of the TraKERS\Middleware package.
-*
-* (c) IRI <http://www.iri.centrepompidou.fr/>
-*
-* For the full copyright and license information, please view the LICENSE_MIDDLEWARE
-* file that was distributed with this source code.
-*/
-
-/*
- * Projet : TraKERS
- * Module : MIDDLEWARE
- * Sous-Module : Tracking/Gestures
- * Classe : UserPositionDetector
- * 
- * Auteur : alexandre.bastien@iri.centrepompidou.fr
- * 
- * Fonctionnalités : Permet de détecter si l'utilisateur s'est déplacé dans la zone de détection, en se basant
- * sur la distance de l'utilisateur à Kinect.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Trakers.Tracking.Gestures
-{
-    public class UserPositionDetector
-    {
-        Debug.DebugWindow debug;
-
-        float minDistance, maxDistance, zeroPoint;
-        float searchMinDistance, searchMaxDistance;
-
-        static int n = 0;
-
-        /*
-         * Le constructeur prend en entrée le debug mais aussi les principales distances qui délimitent la
-         * zone de détection.
-         */
-        public UserPositionDetector(Debug.DebugWindow _d, float _minDistance, float _maxDistance, float _zeroPoint, float _searchMinDistance, float _searchMaxDistance)
-        {
-            minDistance = _minDistance;
-            maxDistance = _maxDistance;
-            searchMinDistance = _searchMinDistance;
-            searchMaxDistance = _searchMaxDistance;
-            zeroPoint = _zeroPoint;
-            debug = _d;
-        }
-
-        /*
-         * Getters et Setters des distances (dans le cadre d'une modification des paramètres).
-         */
-        public void setMinDistance(float dist)
-        {
-            minDistance = dist;
-        }
-        public void setMaxDistance(float dist)
-        {
-            maxDistance = dist;
-        }
-        public void setSearchMinDistance(float dist)
-        {
-            searchMinDistance = dist;
-        }
-        public void setSearchMaxDistance(float dist)
-        {
-            searchMaxDistance = dist;
-        }
-        public void setZeroPoint(float dist)
-        {
-            zeroPoint = dist;
-        }
-        public void setParams(float minDist, float maxDist, float minDistHands, float maxDistHands, float zero)
-        {
-            //On charge tous les paramètres d'un coup.
-            minDistance = minDist;
-            maxDistance = maxDist;
-            searchMinDistance = minDistHands;
-            searchMaxDistance = maxDistHands;
-            zeroPoint = zero;
-        }
-
-        public float getMinDistance()
-        {
-            return minDistance;
-        }
-        public float getMaxDistance()
-        {
-            return maxDistance;
-        }
-        public float getSearchMinDistance()
-        {
-            return searchMinDistance;
-        }
-        public float getSearchMaxDistance()
-        {
-            return searchMaxDistance;
-        }
-        public float getZeroPoint()
-        {
-            return zeroPoint;
-        }
-
-        /*
-         * Lit la position de l'utilisateur à Kinect et ressort un pourcentage de proximité.
-         * Règles : Droite affine de coefficient négatif.
-         * .
-         */
-        public float CalcProximity(float distance)
-        {
-            //Si on se trouve trop loin.
-            if (distance > maxDistance)
-                return 0.0f;
-            //Si on se trouve trop près.
-            if (distance < searchMinDistance)
-                return 0.0f;
-            //Si on n'est pas encore trop près mais qu'on dépasse le point zéro.
-            if (distance < zeroPoint)
-                return 100.0f;
-
-            //Equation, de droite affine à partir de deux points.
-            //Ici 99 tout simplement car 100 - 1, les limites de pourcentage de proximité.
-            float a = 99/((float)zeroPoint - maxDistance);
-            float b = 100 - a * zeroPoint;
-
-            return a * distance + b;
-        }
-
-        /*
-         * Estime le nombre de vidéos à afficher en fonction du pourcentage de proximité et du nombre de
-         * vidéos dans la mosaïque.
-         * .
-         */
-        public int ImagesToShow(float proximity, int N)
-        {
-            //Si la proximité est nulle, on retourne 0.
-            if (proximity == 0f)
-                return 0;
-            //Si on n'est pas encore trop près mais qu'on dépasse le point zéro.
-            if (proximity >= 90f)
-                return N;
-
-            //Pour chaque intervalle de déciles (dans les pourcentages), le nombre de dizaines
-            //du pourcentage de proximité plus un, fois le nombre de dizaines d'images seront affichées.
-            return (((int)proximity / 10) + 1) * ((int)N / 2);
-        }
-    }
-}