Ejemplo n.º 1
0
 /// <summary>
 /// Draw body orientation on top view canvas
 /// </summary>
 /// <param name="diameter"></param>
 /// <param name="size"></param>
 /// <param name="orientation"></param>
 /// <param name="headPositionGroundX"></param>
 /// <param name="headPositionGroundY"></param>
 /// <param name="brush"></param>
 /// <param name="canvas"></param>
 public static void DrawOrientationOnCanvas(double diameter, double size, BodyOrientation.Orientations orientation, double headPositionGroundX, double headPositionGroundY, Brush brush, Canvas canvas)
 {
     if (orientation == BodyOrientation.Orientations.Front)
     {
         Point point1 = Transformation.ConvertGroundPlaneToCanvas(new Point(headPositionGroundX + size / 2, headPositionGroundY - diameter / 2), canvas);
         Point point2 = Transformation.ConvertGroundPlaneToCanvas(new Point(headPositionGroundX - size / 2, headPositionGroundY - diameter / 2), canvas);
         Point point3 = Transformation.ConvertGroundPlaneToCanvas(new Point(headPositionGroundX, headPositionGroundY - diameter / 2 - Math.Cos(30 / 180 * Math.PI) * size), canvas);
         DrawTriangle(point1, point2, point3, brush, canvas);
     }
     else if (orientation == BodyOrientation.Orientations.Left)
     {
         Point point1 = Transformation.ConvertGroundPlaneToCanvas(new Point(headPositionGroundX - diameter / 2, headPositionGroundY + size / 2), canvas);
         Point point2 = Transformation.ConvertGroundPlaneToCanvas(new Point(headPositionGroundX - diameter / 2, headPositionGroundY - size / 2), canvas);
         Point point3 = Transformation.ConvertGroundPlaneToCanvas(new Point(headPositionGroundX - diameter / 2 - Math.Cos(30 / 180 * Math.PI) * size, headPositionGroundY), canvas);
         DrawTriangle(point1, point2, point3, brush, canvas);
     }
     else if (orientation == BodyOrientation.Orientations.Right)
     {
         Point point1 = Transformation.ConvertGroundPlaneToCanvas(new Point(headPositionGroundX + diameter / 2, headPositionGroundY + size / 2), canvas);
         Point point2 = Transformation.ConvertGroundPlaneToCanvas(new Point(headPositionGroundX + diameter / 2, headPositionGroundY - size / 2), canvas);
         Point point3 = Transformation.ConvertGroundPlaneToCanvas(new Point(headPositionGroundX + diameter / 2 + Math.Cos(30 / 180 * Math.PI) * size, headPositionGroundY), canvas);
         DrawTriangle(point1, point2, point3, brush, canvas);
     }
     else
     {
         Point point1 = Transformation.ConvertGroundPlaneToCanvas(new Point(headPositionGroundX + size / 2, headPositionGroundY + diameter / 2), canvas);
         Point point2 = Transformation.ConvertGroundPlaneToCanvas(new Point(headPositionGroundX - size / 2, headPositionGroundY + diameter / 2), canvas);
         Point point3 = Transformation.ConvertGroundPlaneToCanvas(new Point(headPositionGroundX, headPositionGroundY + diameter / 2 + Math.Cos(30 / 180 * Math.PI) * size), canvas);
         DrawTriangle(point1, point2, point3, brush, canvas);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Add a defined activity
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_AddActivity(object sender, RoutedEventArgs e)
        {
            Rect area = new Rect(new Point(mouseDownPosition.X > mouseUpPosition.X ? mouseUpPosition.X : mouseDownPosition.X,
                                           mouseDownPosition.Y > mouseUpPosition.Y ? mouseUpPosition.Y : mouseDownPosition.Y),
                                 new Size(System.Math.Abs(mouseDownPosition.X - mouseUpPosition.X), System.Math.Abs(mouseDownPosition.Y - mouseUpPosition.Y)));
            string name = TextBox_ActivityName.Text;

            BodyOrientation.Orientations orientations = 0;
            if (CheckBox_OrientationFront.IsChecked == true)
            {
                orientations |= BodyOrientation.Orientations.Front;
            }
            if (CheckBox_OrientationLeft.IsChecked == true)
            {
                orientations |= BodyOrientation.Orientations.Left;
            }
            if (CheckBox_OrientationRight.IsChecked == true)
            {
                orientations |= BodyOrientation.Orientations.Right;
            }
            if (CheckBox_OrientationBack.IsChecked == true)
            {
                orientations |= BodyOrientation.Orientations.Back;
            }
            int minPeopleCount = ComboxBox_MinPeople.SelectedIndex + 1;
            LinkedList <Object.Objects> objects      = new LinkedList <Object.Objects>();
            LinkedList <Requirement>    requirements = new LinkedList <Requirement>();
            LinkedList <Posture>        pos          = new LinkedList <Posture>();

            foreach (KeyValuePair <Object.Objects, Object> pair in ListBox_Object.SelectedItems)
            {
                objects.AddLast(pair.Key);
            }
            foreach (Requirement req in ListBox_Requirement.SelectedItems)
            {
                requirements.AddLast(req);
            }
            foreach (Posture p in ListBox_Posture.SelectedItems)
            {
                pos.AddFirst(p);
            }

            if (ListBox_Area.SelectedIndex == -1)
            {
                activities.AddLast(new Activity(area, orientations, pos, objects, requirements, name, minPeopleCount));
            }
            else
            {
                foreach (Template t in ListBox_Area.SelectedItems)
                {
                    activities.AddLast(new Activity(t.Name, orientations, pos, objects, requirements, name, minPeopleCount));
                }
            }

            Popup_AddActivity.IsOpen = false;
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Constructor
 /// </summary>
 public Person()
 {
     IsTracked   = false;
     ID          = 0;
     Position    = new System.Windows.Point(0.0, 0.0);
     Orientation = BodyOrientation.Orientations.Front;
     Color       = System.Windows.Media.Brushes.Red;
     Activities  = "";
     postures    = new LinkedList <Posture>();
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Construction for static area activity
 /// </summary>
 /// <param name="area"></param>
 /// <param name="bodyOrientations"></param>
 /// <param name="postures"></param>
 /// <param name="objects"></param>
 /// <param name="requirements"></param>
 /// <param name="name"></param>
 /// <param name="minPeopleCount"></param>
 public Activity(System.Windows.Rect area, BodyOrientation.Orientations bodyOrientations, LinkedList <Posture> postures, LinkedList <Object.Objects> objects, LinkedList <Requirement> requirements, string name, int minPeopleCount)
 {
     Area             = area;
     BodyOrientations = bodyOrientations;
     Postures         = postures;
     Objects          = objects;
     Requirements     = requirements;
     Name             = name;
     MinPeopleCount   = minPeopleCount;
     IsActive         = false;
     IsRecording      = false;
     RecordRow        = 0;
     LastTime         = System.DateTime.Now.ToString(@"HHmmss");
 }
Ejemplo n.º 5
0
        /// <summary>
        /// Check if one side of an area containing a person
        /// </summary>
        /// <param name="area"></param>
        /// <param name="persons"></param>
        /// <param name="canvas"></param>
        /// <param name="orientation"></param>
        /// <returns></returns>
        public bool checkOneSide(Rect area, Person[] persons, System.Windows.Controls.Canvas canvas, BodyOrientation.Orientations orientation)
        {
            foreach (Person person in persons)
            {
                if (person.IsTracked && area.Contains(Transformation.ConvertGroundPlaneToCanvas(person.Position, canvas)) && person.Orientation == orientation)
                {
                    return(true);
                }
            }

            return(false);
        }