1 module des.mc.multitrack.model;
2 
3 public import des.mc.core;
4 
5 /+ пересчитывает значения qual для joint'ов +/
6 interface Heuristic
7 {
8     Skeleton opCall( in Skeleton );
9 }
10 
11 /+ классифицирует по группам скелеты с разных трекеров 
12    на выходе массив из групп скелетов, относящихся 
13    к одному пользователю +/
14 interface Classifier
15 {
16     Skeleton[][] opCall( in Skeleton[][] );
17 }
18 
19 /+ комплексирует информацию в группах для построения 
20    оптимальной оценки скелета пользователя +/
21 interface Complexer
22 {
23     Skeleton[] opCall( in Skeleton[][] );
24 }
25 
26 interface UserHandler
27 {
28     @property
29     {
30         bool respectable() const;
31         ref const(User) user() const;
32         bool isOverdue() const;
33     }
34     void setOverdue();
35     void setSkeleton( in Skeleton s );
36 
37     /+ вероятность того, что переданный 
38        скелет является трасформацией имеющегося +/
39     float calcTransformPossibility( in Skeleton s ) const;
40 }
41 
42 /+ распределяет скелеты по userhandler'ам
43    возвращает нераспределённые +/
44 interface Destributor
45 {
46     Skeleton[] opCall( UserHandler[], in Skeleton[] );
47 }
48 
49 interface MultiTrackerFactory
50 {
51     @property
52     {
53         Heuristic heuristic();
54         Classifier classifier();
55         Complexer complexer();
56         Destributor destributor();
57     }
58 
59     UserHandler newUserHandler( User );
60 }