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