/// <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; }
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 } }
/// <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; }