예제 #1
0
        /// <summary>
        /// Calculates bond radius for the given style
        /// </summary>
        /// <param name="geometryStyle"></param>
        public static double GetBondRadius(GeometryStyle geometryStyle)
        {
            // Here hydrogen has taken as the smallest one
            switch (geometryStyle.AtomSizeStyle)
            {
                case AtomSizeStyle.VanderWaals:
                    return 1.2 * geometryStyle.AtomSize * geometryStyle.BondSize;
                case AtomSizeStyle.Uniform:
                    return 0.35 * geometryStyle.AtomSize * geometryStyle.BondSize;
                case AtomSizeStyle.Empirical:
                    return 0.35 * geometryStyle.AtomSize * geometryStyle.BondSize;
                case AtomSizeStyle.Covalent:
                    return 0.38 * geometryStyle.AtomSize * geometryStyle.BondSize;
                case AtomSizeStyle.Calculated:
                    return 0.53 * geometryStyle.AtomSize * geometryStyle.BondSize;
            }

            return 0.35;
        }
예제 #2
0
        static GeometryStyle()
        {
            if (Storage.DirectoryExists(GeometryStylesStorageDirectoryName))
            {
                string[] files = Storage.GetFileNames(GeometryStylesStorageDirectoryName + "\\*");
                for (int i = 0; i < files.Length; i++)
                {
                    geometryStyles.Add(Path.GetFileNameWithoutExtension(files[i]));
                }
            }
            else
            {
                Storage.CreateDirectory(GeometryStylesStorageDirectoryName);

                #region Add default geometry styles

                GeometryStyle style = new GeometryStyle();
                style.atomSize.Value = 1;
                style.atomSizeStyle.Value = AtomSizeStyle.VanderWaals;
                style.bondSize.Value = 0;
                style.sheetHeight.Value = 0;
                style.turnWidth.Value = 0;
                style.helixWidth.Value = 0;
                style.SaveAs("Space filled");

                style = new GeometryStyle();
                style.atomSize.Value = 0.80;
                style.atomSizeStyle.Value = AtomSizeStyle.Calculated;
                style.bondSize.Value = 0.50;
                style.sheetHeight.Value = 0;
                style.turnWidth.Value = 0;
                style.helixWidth.Value = 0;
                style.SaveAs("Ball-and-Stick (Calculated)");

                style = new GeometryStyle();
                style.atomSize.Value = 0.80;
                style.atomSizeStyle.Value = AtomSizeStyle.Empirical;
                style.bondSize.Value = 0.50;
                style.sheetHeight.Value = 0;
                style.turnWidth.Value = 0;
                style.helixWidth.Value = 0;
                style.SaveAs("Ball-and-Stick (Empirical)");

                style = new GeometryStyle();
                style.atomSize.Value = 0.5;
                style.atomSizeStyle.Value = AtomSizeStyle.Uniform;
                style.bondSize.Value = 1;
                style.sheetHeight.Value = 0;
                style.turnWidth.Value = 0;
                style.helixWidth.Value = 0;
                style.SaveAs("Wireframe");

                style = new GeometryStyle();
                style.atomSize.Value = 0;
                style.atomSizeStyle.Value = AtomSizeStyle.VanderWaals;
                style.bondSize.Value = 1;
                style.sheetHeight.Value = 1;
                style.turnWidth.Value = 1;
                style.helixWidth.Value = 1;
                style.SaveAs("Cartoon");

                #endregion
            }
        }
예제 #3
0
        /// <summary>
        /// Calculates radius of a visual atom
        /// </summary>
        /// <param name="atom">Data of the atom</param>
        /// <param name="geometryStyle">Geometry Style</param>
        /// <returns>Radius</returns>
        public static double GetAtomRadius(Data.Atom atom, GeometryStyle geometryStyle)
        {
            switch (geometryStyle.AtomSizeStyle)
            {
                case AtomSizeStyle.VanderWaals:
                    return atom.Element.VanderWaalsRadius * geometryStyle.AtomSize;
                case AtomSizeStyle.Uniform:
                    return 0.35 * geometryStyle.AtomSize;
                case AtomSizeStyle.Empirical:
                    return atom.Element.EmpiricalRadius * geometryStyle.AtomSize;
                case AtomSizeStyle.Covalent:
                    return atom.Element.CovalentRadius * geometryStyle.AtomSize;
                case AtomSizeStyle.Calculated:
                    return atom.Element.CalculatedRadius * geometryStyle.AtomSize;
            }

            return 1.0;
        }