const int odsazeni = 5; //čím menší tím budou šipky blíže k sobě

        #endregion Fields

        #region Constructors

        public ElektronovyDiagram(Konfigurace subKonfigurace)
        {
            InitializeComponent();
            //rozpoznání orbitalu

            int elektronyKeKonfiguraci = subKonfigurace.PocetElektronu;

            ToolTip = subKonfigurace.ToString();
            Width = (int) (subKonfigurace.TypOrbitalu)*100 + 50; //přizpůsobení šířky

            //vykreslení potřebného množství čtverečku
            for (int count = 0; count < (int) subKonfigurace.TypOrbitalu * 2 + 1; count++)
            {
                Rectangle rect = new Rectangle() {Width = 50,Height = 50, Stroke = Brushes.Gray, Fill = Brushes.White,StrokeThickness = 3};

                Canvas.SetLeft(rect,count * 50);
                KresliciPlocha.Children.Add(rect);
            }

            //výstavbový princip
            //spinové pravidlo
            //elektrony s kladným spinem
            for (int count = 0; count < (int)subKonfigurace.TypOrbitalu * 2 + 1; count++)
            {
                if (elektronyKeKonfiguraci > 0)
                {
                    KresliciPlocha.Children.Add(sipkaNahoru(count*50 + 25));
                    elektronyKeKonfiguraci--;
                }
            }
            //elektrony s opačným spinem
            for (int count = 0; count < (int)subKonfigurace.TypOrbitalu * 2 + 1; count++)
            {
                if (elektronyKeKonfiguraci > 0)
                {
                    KresliciPlocha.Children.Add(sipkaDolu(count * 50 + 25));
                    elektronyKeKonfiguraci--;
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Vytvoří konfiguraci pro orbital s
        /// </summary>
        /// <param name="cisloPeriody"></param>
        /// <returns>Konfiguraci pro orbital s</returns>
        private Konfigurace Skonfigurace(int cisloPeriody)
        {
            if (elektronyKeKonfiguraci == 0)
                return null;

            Konfigurace orbitalS;
            if (elektronyKeKonfiguraci >= 2) // pokud tam je 2 a více elektronů
            {
                orbitalS = new Konfigurace(cisloPeriody, TypOrbitalu.s, 2);
                elektronyKeKonfiguraci -= 2;
            }
            else
            {
                orbitalS = new Konfigurace(cisloPeriody, TypOrbitalu.s, elektronyKeKonfiguraci);
                elektronyKeKonfiguraci = 0;
            }
            return orbitalS;
        }
Exemplo n.º 3
0
        /// <summary>
        /// Vytvoří konfiguraci pro orbital P
        /// </summary>
        /// <param name="cisloPeriody"></param>
        /// <returns>Konfigurace orbitalu P</returns>
        private Konfigurace Pkonfigurace(int cisloPeriody)
        {
            if (elektronyKeKonfiguraci == 0)
                return null;

            Konfigurace orbitalP;
            if (elektronyKeKonfiguraci >= 6) // pokud tam je 6 a více elektronů
            {
                orbitalP = new Konfigurace(cisloPeriody, TypOrbitalu.p, 6);
                elektronyKeKonfiguraci -= 6;
            }
            else
            {
                orbitalP = new Konfigurace(cisloPeriody, TypOrbitalu.p, elektronyKeKonfiguraci);
                elektronyKeKonfiguraci = 0;
            }
            return orbitalP;
        }
Exemplo n.º 4
0
        /// <summary>
        /// Vytvoří konfiguraci pro orbital F
        /// </summary>
        /// <param name="cisloPeriody"></param>
        /// <returns>Konfigurace orbitalu F</returns>
        private Konfigurace Fkonfigurace(int cisloPeriody)
        {
            if (elektronyKeKonfiguraci == 0)
                return null;

            Konfigurace orbitalF;
            if (elektronyKeKonfiguraci >= 14) // pokud tam je 14 a více elektronů
            {
                orbitalF = new Konfigurace(cisloPeriody - 2, TypOrbitalu.f, 14);
                elektronyKeKonfiguraci -= 14;
            }
            else
            {
                orbitalF = new Konfigurace(cisloPeriody - 2, TypOrbitalu.f, elektronyKeKonfiguraci);
                elektronyKeKonfiguraci = 0;
            }
            return orbitalF;
        }
Exemplo n.º 5
0
        /// <summary>
        /// Vytvoří konfiguraci pro orbital D
        /// </summary>
        /// <param name="cisloPeriody"></param>
        /// <returns>Konfigurace orbitalu D</returns>
        private Konfigurace Dkonfigurace(int cisloPeriody)
        {
            if (elektronyKeKonfiguraci == 0)
                return null;

            Konfigurace orbitalD;
            if (elektronyKeKonfiguraci >= 10) // pokud tam je 10 a více elektronů
            {
                orbitalD = new Konfigurace(cisloPeriody - 1, TypOrbitalu.d, 10);
                elektronyKeKonfiguraci -= 10;
            }
            else
            {
                orbitalD = new Konfigurace(cisloPeriody - 1, TypOrbitalu.d, elektronyKeKonfiguraci);
                elektronyKeKonfiguraci = 0;
            }
            return orbitalD;
        }