public async static Task<RoomGeometryViewModel> CreateFromRoom(Room room)
        {
            Data data = new Data();

            double[] projectedEdgeHeights = room.Edges.Select(e => e.ProjectedHeight).ToArray();
            double focalDistance = await data.GetFoucsDistance();

            List<double> distances = Measurer.GetEdgeDistances(
                projectedEdgeHeights,
                focalDistance,
                room.ProjectedReferenceHeight,
                room.ActualReferenceHeight);

            List<double> orientations = room.Edges.Select(e => e.ZRotation).ToList();

            List<double> actualWallSizes = Measurer.GetActualWallSizes(distances, orientations);

            RoomGeometryViewModel roomGeometry = new RoomGeometryViewModel(distances, orientations, actualWallSizes);

            return roomGeometry;
        }
        internal void CalculateRoomCorners(RoomGeometryViewModel room)
        {
            //room = new RoomGeometryViewModel(new System.Collections.Generic.List<double>
            //{
            //    50, 50, 50
            //}, new System.Collections.Generic.List<double>
            //{
            //    0, 120, 240
            //});

            PointCollection roomCorners = new PointCollection();
            for (int i = 0; i < room.Yaws.Count; i++)
            {
                double angle = room.Yaws[i] * Math.PI / 180;
                double distance = room.Distances[i];
                double x = Math.Sin(angle) * distance;
                double y = Math.Cos(angle) * distance;

                roomCorners.Add(new Point(x, y));
            }

            this.RoomCorners = roomCorners;
        }