示例#1
0
        private object GetTissueInputVM(string tissueType)
        {
            // ops to use as the basis for instantiating multi-region tissues based on homogeneous values (for differential comparison)
            if (_currentHomogeneousOpticalProperties == null)
            {
                _currentHomogeneousOpticalProperties = new OpticalProperties(0.01, 1, 0.8, 1.4);
            }

            switch (tissueType)
            {
            case "SemiInfinite":
                if (_currentSemiInfiniteTissueInput == null)
                {
                    _currentSemiInfiniteTissueInput =
                        new SemiInfiniteTissueInput(
                            new SemiInfiniteTissueRegion(_currentHomogeneousOpticalProperties));
                }
                return(new OpticalPropertyViewModel(
                           _currentSemiInfiniteTissueInput.Regions.First().RegionOP,
                           IndependentVariableAxisUnits.InverseMM.GetInternationalizedString(),
                           StringLookup.GetLocalizedString("Heading_OpticalProperties")));

            case "MultiLayer":
                if (_currentMultiLayerTissueInput == null)
                {
                    _currentMultiLayerTissueInput = new MultiLayerTissueInput(new ITissueRegion[]
                    {
                        new LayerTissueRegion(new DoubleRange(0, 2), _currentHomogeneousOpticalProperties.Clone()),
                        new LayerTissueRegion(new DoubleRange(2, double.PositiveInfinity),
                                              _currentHomogeneousOpticalProperties.Clone())
                    });
                }
                return(new MultiRegionTissueViewModel(_currentMultiLayerTissueInput));

            case "SingleEllipsoid":
                if (_currentSingleEllipsoidTissueInput == null)
                {
                    _currentSingleEllipsoidTissueInput = new SingleEllipsoidTissueInput(
                        new EllipsoidTissueRegion(new Position(0, 0, 10), 5, 5, 5,
                                                  new OpticalProperties(0.05, 1.0, 0.8, 1.4)),
                        new ITissueRegion[]
                    {
                        new LayerTissueRegion(new DoubleRange(0, double.PositiveInfinity),
                                              _currentHomogeneousOpticalProperties.Clone())
                    });
                }
                return(new MultiRegionTissueViewModel(_currentSingleEllipsoidTissueInput));

            default:
                throw new ArgumentOutOfRangeException(nameof(tissueType));
            }
        }