Exemplo n.º 1
0
        /// <summary>
        /// Hakee alfan taulukosta tuentatapauksen, sarakelisän ja sivujen suhteen avulla
        /// </summary>
        /// <param name="tapaus">Tuentatapaus</param>
        /// <param name="taulukonSarakeLisa">ays = 0, axs = 1, ayf = 2, axf = 3</param>
        /// <param name="sivujenSuhde">Kentän sivujen suhde</param>
        /// <returns>Palauttaa taulukosta alfan</returns>
        private double HaeTaulukostaAlfa(Kentta.Tuentatapaukset tapaus, int taulukonSarakeLisa, double sivujenSuhde)
        {
            double palautus        = -1;
            int    taulukonIndeksi = 0;

            if (sivujenSuhde >= 2)
            {
                taulukonIndeksi = (int)(sivujenSuhde * 10) % 10 + 10;
            }
            else
            {
                taulukonIndeksi = (int)(sivujenSuhde * 10) % 10;
            }
            switch (tapaus)
            {
            case Kentta.Tuentatapaukset.EiTukia:
                palautus = momenttiTaulukko[(int)Kentta.Tuentatapaukset.EiTukia + taulukonSarakeLisa, taulukonIndeksi];
                break;

            case Kentta.Tuentatapaukset.TukiPitkallaSivulla:
                palautus = momenttiTaulukko[(int)Kentta.Tuentatapaukset.TukiPitkallaSivulla + taulukonSarakeLisa, taulukonIndeksi];
                break;

            case Kentta.Tuentatapaukset.TukiLyhyellaSivulla:
                palautus = momenttiTaulukko[(int)Kentta.Tuentatapaukset.TukiLyhyellaSivulla + taulukonSarakeLisa, taulukonIndeksi];
                break;

            case Kentta.Tuentatapaukset.TukiaKaksiVierekkain:
                palautus = momenttiTaulukko[(int)Kentta.Tuentatapaukset.TukiaKaksiVierekkain + taulukonSarakeLisa, taulukonIndeksi];
                break;

            case Kentta.Tuentatapaukset.TukiaKaksiVastakkainLSivulla:
                palautus = momenttiTaulukko[(int)Kentta.Tuentatapaukset.TukiaKaksiVastakkainLSivulla + taulukonSarakeLisa, taulukonIndeksi];
                break;

            case Kentta.Tuentatapaukset.TukiaKaksiVastakkainPSivulla:
                palautus = momenttiTaulukko[(int)Kentta.Tuentatapaukset.TukiaKaksiVastakkainPSivulla + taulukonSarakeLisa, taulukonIndeksi];
                break;

            case Kentta.Tuentatapaukset.TukiaKolmeLSivuVapaa:
                palautus = momenttiTaulukko[(int)Kentta.Tuentatapaukset.TukiaKolmeLSivuVapaa + taulukonSarakeLisa, taulukonIndeksi];
                break;

            case Kentta.Tuentatapaukset.TukiaKolmePSivuVapaa:
                palautus = momenttiTaulukko[(int)Kentta.Tuentatapaukset.TukiaKolmePSivuVapaa + taulukonSarakeLisa, taulukonIndeksi];
                break;

            case Kentta.Tuentatapaukset.TukiaNelja:
                palautus = momenttiTaulukko[(int)Kentta.Tuentatapaukset.TukiaNelja + taulukonSarakeLisa, taulukonIndeksi];
                break;
            }
            return(palautus);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Hakee taulukosta ylös- ja alaspäin pyöristetyt arvot sivujen suhteesta ja laskee interpoloimalla
        /// alfan arvon
        /// </summary>
        /// <param name="tapaus"></param>
        /// <param name="pyoristysYlos">Sivujen suhde pyöristettynä yhden desimaalin tarkkuuteen ylöspäin</param>
        /// <param name="pyoristysAlas">Sivujen suhde pyöristettynä yhden desimaalin tarkkuuteen alaspäin</param>
        /// <param name="interpolointikerroin">Etukäteen laskettu toinen desimaali sivujen suhteesta</param>
        /// <param name="taulukkoindeksi">ays = 0, axs = 1, ayf = 2, axf = 3</param>
        /// <returns>Alfan interpoloituna double tietotyypissä</returns>
        private double LaskeAlfa(Kentta.Tuentatapaukset tapaus, double pyoristysYlos, double pyoristysAlas, double interpolointikerroin, int taulukkoindeksi)
        {
            double ays1 = HaeTaulukostaAlfa(tapaus, taulukkoindeksi, pyoristysYlos);
            double ays2 = HaeTaulukostaAlfa(tapaus, taulukkoindeksi, pyoristysAlas);

            if (virheenkorjausMomentti)
            {
                MessageBox.Show("\tAlfa taulukosta" +
                                "\n\nTapaus: " + tapaus +
                                "\nTaulukkoindeksi (ys = 0, xs = 1, yf = 2, xf = 3): " + taulukkoindeksi +
                                "\nSivujen suhde: " + sivujenSuhde +
                                "\nPyöristys alas alfa: " + ays2 +
                                "\nPyöristys ylös alfa: " + ays1 +
                                "\nInterpolointikerroin: " + interpolointikerroin,
                                "Momentti");
            }
            return(Math.Abs((ays2 - ays1)) * interpolointikerroin + Math.Min(ays1, ays2));
        }