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; }