예제 #1
0
        private void OnBerechnenClick(object sender, RoutedEventArgs e)
        {
            try {
                var winkel          = Winkel.FromDeg(double.Parse(AbsprungWinkelTextBox.Text));
                var geschwindigkeit = Geschwindigkeit.FromKilometerProStunde(double.Parse(AbsprungGeschwindigkeitTextBox.Text));
                var schanzenHöhe    = Länge.FromCentimeter(double.Parse(AbsprungHöheTextBox.Text));

                var schanze  = Schanze.Create(schanzenHöhe, winkel);
                var flugbahn = Flugbahn.Create(schanze, geschwindigkeit);
                var setting  = SettingViewModel.Create(schanze, flugbahn);

                _viewModel.Settings.Add(setting);
                _viewModel.SelectedSetting = setting;
            } catch (Exception) {
                // TODO Fehler visualisieren
            }
        }
예제 #2
0
        public static Flugbahn Create(
            Schanze schanze,
            Geschwindigkeit absprungGeschwindigkeit)
        {
            var weite = Wurfparabel.Weite(
                v0: absprungGeschwindigkeit.MeterProSekunde,
                y0: schanze.Höhe.Meter,
                alpha: schanze.Absprungwinkel.Rad);

            var scheitelpunktX = Wurfparabel.ScheitelpunktX(
                v0: absprungGeschwindigkeit.MeterProSekunde,
                y0: schanze.Höhe.Meter,
                alpha: schanze.Absprungwinkel.Rad
                );

            var höhe = Wurfparabel.ScheitelpunktY(
                v0: absprungGeschwindigkeit.MeterProSekunde,
                y0: schanze.Höhe.Meter,
                alpha: schanze.Absprungwinkel.Rad);

            var aufprallWinkel = Wurfparabel.AufprallWinkel(
                v0: absprungGeschwindigkeit.MeterProSekunde,
                y0: schanze.Höhe.Meter,
                alpha: schanze.Absprungwinkel.Rad
                );

            var aufprallGeschwindigkeit = Wurfparabel.AufprallGeschwindigkeit(
                v0: absprungGeschwindigkeit.MeterProSekunde,
                y0: schanze.Höhe.Meter,
                alpha: schanze.Absprungwinkel.Rad
                );

            return(new Flugbahn(
                       absprungHöhe: schanze.Höhe,
                       absprungWinkel: schanze.Absprungwinkel,
                       absprungGeschwindigkeit: absprungGeschwindigkeit,
                       sprungWeite: Länge.FromMeter(weite),
                       scheitelpunktX: Länge.FromMeter(scheitelpunktX),
                       scheitelpunktY: Länge.FromMeter(höhe),
                       aufprallWinkel: Winkel.FromRad(aufprallWinkel),
                       aufprallGeschwindigkeit: Geschwindigkeit.FromMeterProSekunde(aufprallGeschwindigkeit),
                       scale: 1));
        }
예제 #3
0
 Flugbahn(Länge absprungHöhe,
          Winkel absprungWinkel,
          Geschwindigkeit absprungGeschwindigkeit,
          Länge sprungWeite,
          Länge scheitelpunktX,
          Länge scheitelpunktY,
          Winkel aufprallWinkel,
          Geschwindigkeit aufprallGeschwindigkeit,
          double scale)
 {
     _absprungHöhe           = absprungHöhe;
     AbsprungWinkel          = absprungWinkel;
     AbsprungGeschwindigkeit = absprungGeschwindigkeit;
     _sprungWeite            = sprungWeite;
     _scheitelpunktY         = scheitelpunktY;
     _scheitelpunktX         = scheitelpunktX;
     Scale                   = scale;
     AufprallWinkel          = aufprallWinkel;
     AufprallGeschwindigkeit = aufprallGeschwindigkeit;
 }
예제 #4
0
        public SceneViewModel()
        {
            _settings = new ObservableCollection <SettingViewModel>();
            _settings.CollectionChanged += OnSettingCollectionChanged;

            if (DesignerProperties.GetIsInDesignMode(new DependencyObject()))
            {
                var winkel          = Winkel.FromDeg(22);
                var geschwindigkeit = Geschwindigkeit.FromKilometerProStunde(20);
                var schanzenHöhe    = Länge.FromCentimeter(16);

                var schanze  = Berechnung.Schanze.Create(schanzenHöhe, winkel);
                var flugbahn = Berechnung.Flugbahn.Create(schanze, geschwindigkeit);

                var model = new SettingViewModel(schanze, flugbahn)
                {
                    RenderMetrics = true
                };
                Settings.Add(model);
            }
        }