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 }