diff --git a/VECTO.sln.DotSettings b/VECTO.sln.DotSettings index ea095ae4b542a4e5424f0a6f9141674e8069bbf0..4f0f609125e85e8f93b0ca187d92c473514fb999 100644 --- a/VECTO.sln.DotSettings +++ b/VECTO.sln.DotSettings @@ -23,8 +23,10 @@ <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AMT/@EntryIndexedValue">AMT</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AT/@EntryIndexedValue">AT</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CSV/@EntryIndexedValue">CSV</s:String> + <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HVAC/@EntryIndexedValue">HVAC</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MT/@EntryIndexedValue">MT</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PT/@EntryIndexedValue">PT</s:String> + <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PTO/@EntryIndexedValue">PTO</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RP/@EntryIndexedValue">RP</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SI/@EntryIndexedValue">SI</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=WHTC/@EntryIndexedValue">WHTC</s:String> diff --git a/VECTO/File Browser/FileBrowserDialog.vb b/VECTO/File Browser/FileBrowserDialog.vb index 4b1b7886b492b09ff64f29d99fb4993cfbfad396..d5a31cbd3a6840c5b7c1a122381daa5d564faf07 100644 --- a/VECTO/File Browser/FileBrowserDialog.vb +++ b/VECTO/File Browser/FileBrowserDialog.vb @@ -186,7 +186,8 @@ Public Class FileBrowserDialog End Sub 'Browse - Custom Dialog - Public Function Browse(path As String, fileMustExist As Boolean, overwriteCheck As Boolean, extMode As FileBrowserFileExtensionMode, + Public Function Browse(path As String, fileMustExist As Boolean, overwriteCheck As Boolean, + extMode As FileBrowserFileExtensionMode, multiFile As Boolean, ext As String, caption As String) As Boolean If Not _initialized Then Init() @@ -494,7 +495,7 @@ Public Class FileBrowserDialog TextBoxPath.Text = "" Else If ListViewFiles.SelectedItems.Count > 1 Then - TextBoxPath.Text = "<" & ListViewFiles.SelectedItems.Count & " Files selected>" + TextBoxPath.Text = String.Format("<{0} Files selected>", ListViewFiles.SelectedItems.Count) Else TextBoxPath.Text = ListViewFiles.SelectedItems.Item(0).Text TextBoxPath.SelectionStart = TextBoxPath.Text.Length diff --git a/VECTO/GUI/MainForm.vb b/VECTO/GUI/MainForm.vb index 12177b69ae3c38c80556160eba4ab91569ca3087..dc4e4a6bfaab3cd51fe86c836b5c13d4df208257 100644 --- a/VECTO/GUI/MainForm.vb +++ b/VECTO/GUI/MainForm.vb @@ -269,6 +269,7 @@ Public Class MainForm DeclOnOff() End Sub + ' ReSharper disable once UnusedMember.Global -- used via Logging Framework! Public Shared Sub LogMethod(level As String, message As String) Try If level = "Warn" Then @@ -641,16 +642,15 @@ lbFound: 'Update job files counter in tab titel Private Sub UpdateJobTabText() - Dim c As Integer - c = LvGEN.Items.Count + Dim count As Integer = LvGEN.Items.Count - TabPageGEN.Text = "Job Files ( " & _genChecked & " / " & c & " )" + TabPageGEN.Text = String.Format("Job Files ( {0} / {1} )", _genChecked, count) _genCheckAllLock = True If _genChecked = 0 Then ChBoxAllGEN.CheckState = CheckState.Unchecked - ElseIf _genChecked = c Then + ElseIf _genChecked = count Then ChBoxAllGEN.CheckState = CheckState.Checked Else ChBoxAllGEN.CheckState = CheckState.Indeterminate @@ -1547,8 +1547,8 @@ lbFound: Private _mouseDownOnListView As Boolean Private Class GUItest - Private ReadOnly RowLim As Integer = 9 - Private ReadOnly ColLim As Integer = 45 + Private Const RowLim As Integer = 9 + Private Const ColLim As Integer = 45 Public TestActive As Boolean = False Private _testAborted As Boolean Private _xCtrl As Integer diff --git a/VECTO/GUI/VectoJobForm.vb b/VECTO/GUI/VectoJobForm.vb index 80bf50e3fb33724ec421746a8e04d626a1fade92..6b3457089f922e33dfe8037aaf487165c48b600e 100644 --- a/VECTO/GUI/VectoJobForm.vb +++ b/VECTO/GUI/VectoJobForm.vb @@ -108,17 +108,17 @@ Public Class VectoJobForm If Not RdEcoRoll.Checked Then RdOverspeed.Checked = True CbLookAhead.Checked = True - TbSSspeed.Text = DeclarationData.Driver.StartStop.MaxSpeed.AsKmph().ToGUIFormat() 'cDeclaration.SSspeed + TbSSspeed.Text = DeclarationData.Driver.StartStop.MaxSpeed.AsKmph.ToGUIFormat() 'cDeclaration.SSspeed TbSStime.Text = DeclarationData.Driver.StartStop.MinTime.ToGUIFormat() 'cDeclaration.SStime TbSSdelay.Text = DeclarationData.Driver.StartStop.Delay.ToGUIFormat() ' cDeclaration.SSdelay tbLacPreviewFactor.Text = DeclarationData.Driver.LookAhead.LookAheadDistanceFactor.ToGUIFormat() tbLacDfTargetSpeedFile.Text = "" tbLacDfVelocityDropFile.Text = "" - TbOverspeed.Text = DeclarationData.Driver.OverSpeedEcoRoll.OverSpeed.AsKmph().ToGUIFormat() 'cDeclaration.Overspeed - TbUnderSpeed.Text = DeclarationData.Driver.OverSpeedEcoRoll.UnderSpeed.AsKmph().ToGUIFormat() _ + TbOverspeed.Text = DeclarationData.Driver.OverSpeedEcoRoll.OverSpeed.AsKmph.ToGUIFormat() 'cDeclaration.Overspeed + TbUnderSpeed.Text = DeclarationData.Driver.OverSpeedEcoRoll.UnderSpeed.AsKmph.ToGUIFormat() _ ' cDeclaration.Underspeed - TbVmin.Text = DeclarationData.Driver.OverSpeedEcoRoll.MinSpeed.AsKmph().ToGUIFormat() 'cDeclaration.ECvmin + TbVmin.Text = DeclarationData.Driver.OverSpeedEcoRoll.MinSpeed.AsKmph.ToGUIFormat() 'cDeclaration.ECvmin If _ LvAux.Items.Count <> 5 OrElse @@ -396,7 +396,7 @@ Public Class VectoJobForm 'Start/Stop Dim driver As IDriverEngineeringInputData = inputData.DriverInputData ChBStartStop.Checked = driver.StartStop.Enabled - TbSSspeed.Text = driver.StartStop.MaxSpeed.AsKmph().ToGUIFormat() + TbSSspeed.Text = driver.StartStop.MaxSpeed.AsKmph.ToGUIFormat() TbSStime.Text = driver.StartStop.MinTime.ToGUIFormat() TbSSdelay.Text = driver.StartStop.Delay.ToGUIFormat() @@ -464,12 +464,12 @@ Public Class VectoJobForm Else RdOff.Checked = True End If - TbOverspeed.Text = driver.OverSpeedEcoRoll.OverSpeed.AsKmph().ToGUIFormat() - TbUnderSpeed.Text = driver.OverSpeedEcoRoll.UnderSpeed.AsKmph().ToGUIFormat() - TbVmin.Text = driver.OverSpeedEcoRoll.MinSpeed.AsKmph().ToGUIFormat() + TbOverspeed.Text = driver.OverSpeedEcoRoll.OverSpeed.AsKmph.ToGUIFormat() + TbUnderSpeed.Text = driver.OverSpeedEcoRoll.UnderSpeed.AsKmph.ToGUIFormat() + TbVmin.Text = driver.OverSpeedEcoRoll.MinSpeed.AsKmph.ToGUIFormat() CbLookAhead.Checked = driver.Lookahead.Enabled 'TbAlookahead.Text = CStr(VEC0.ALookahead) - tbLacMinSpeed.Text = driver.Lookahead.MinSpeed.AsKmph().ToGUIFormat() + tbLacMinSpeed.Text = driver.Lookahead.MinSpeed.AsKmph.ToGUIFormat() 'TbVminLA.Text = CStr(VEC0.VMinLa) tbLacPreviewFactor.Text = driver.Lookahead.LookaheadDistanceFactor.ToGUIFormat() tbDfCoastingOffset.Text = driver.Lookahead.CoastingDecisionFactorOffset.ToGUIFormat() @@ -625,7 +625,7 @@ Public Class VectoJobForm TbDesMaxFile.Text = "" 'Start/Stop - TbSSspeed.Text = DeclarationData.Driver.StartStop.MaxSpeed.AsKmph().ToGUIFormat() + TbSSspeed.Text = DeclarationData.Driver.StartStop.MaxSpeed.AsKmph.ToGUIFormat() TbSStime.Text = DeclarationData.Driver.StartStop.MinTime.ToGUIFormat() TbSSdelay.Text = DeclarationData.Driver.StartStop.Delay.ToGUIFormat() ChBStartStop.Checked = False @@ -637,12 +637,12 @@ Public Class VectoJobForm RdOff.Checked = True CbLookAhead.Checked = True 'TbAlookahead.Text = "-0.5" - TbOverspeed.Text = DeclarationData.Driver.OverSpeedEcoRoll.OverSpeed.AsKmph().ToGUIFormat() - TbUnderSpeed.Text = DeclarationData.Driver.OverSpeedEcoRoll.UnderSpeed.AsKmph().ToGUIFormat() - TbVmin.Text = DeclarationData.Driver.OverSpeedEcoRoll.MinSpeed.AsKmph().ToGUIFormat() + TbOverspeed.Text = DeclarationData.Driver.OverSpeedEcoRoll.OverSpeed.AsKmph.ToGUIFormat() + TbUnderSpeed.Text = DeclarationData.Driver.OverSpeedEcoRoll.UnderSpeed.AsKmph.ToGUIFormat() + TbVmin.Text = DeclarationData.Driver.OverSpeedEcoRoll.MinSpeed.AsKmph.ToGUIFormat() 'TbVminLA.Text = "50" - tbLacMinSpeed.Text = DeclarationData.Driver.LookAhead.MinimumSpeed.AsKmph().ToGUIFormat() + tbLacMinSpeed.Text = DeclarationData.Driver.LookAhead.MinimumSpeed.AsKmph.ToGUIFormat() tbLacPreviewFactor.Text = DeclarationData.Driver.LookAhead.LookAheadDistanceFactor.ToGUIFormat() tbDfCoastingOffset.Text = DeclarationData.Driver.LookAhead.DecisionFactorCoastingOffset.ToGUIFormat() tbDfCoastingScale.Text = DeclarationData.Driver.LookAhead.DecisionFactorCoastingScaling.ToGUIFormat() @@ -1005,14 +1005,7 @@ lbDlog: Public Sub UpdatePic() - Dim i As Integer - Dim pmax As Double - - Dim s As Series - Dim a As ChartArea = New ChartArea() - Dim img As Bitmap - Dim engOk As Boolean = False TbHVCclass.Text = "" TbVehCat.Text = "" @@ -1033,30 +1026,31 @@ lbDlog: If chart Is Nothing Then Return - a.Name = "main" + Dim chartArea As ChartArea = New ChartArea() + chartArea.Name = "main" - a.AxisX.Title = "engine speed [1/min]" - a.AxisX.TitleFont = New Font("Helvetica", 10) - a.AxisX.LabelStyle.Font = New Font("Helvetica", 8) - a.AxisX.LabelAutoFitStyle = LabelAutoFitStyles.None - a.AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dot + chartArea.AxisX.Title = "engine speed [1/min]" + chartArea.AxisX.TitleFont = New Font("Helvetica", 10) + chartArea.AxisX.LabelStyle.Font = New Font("Helvetica", 8) + chartArea.AxisX.LabelAutoFitStyle = LabelAutoFitStyles.None + chartArea.AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dot - a.AxisY.Title = "engine torque [Nm]" - a.AxisY.TitleFont = New Font("Helvetica", 10) - a.AxisY.LabelStyle.Font = New Font("Helvetica", 8) - a.AxisY.LabelAutoFitStyle = LabelAutoFitStyles.None - a.AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dot + chartArea.AxisY.Title = "engine torque [Nm]" + chartArea.AxisY.TitleFont = New Font("Helvetica", 10) + chartArea.AxisY.LabelStyle.Font = New Font("Helvetica", 8) + chartArea.AxisY.LabelAutoFitStyle = LabelAutoFitStyles.None + chartArea.AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dot - a.AxisX.Minimum = 300 - a.BorderDashStyle = ChartDashStyle.Solid - a.BorderWidth = 1 + chartArea.AxisX.Minimum = 300 + chartArea.BorderDashStyle = ChartDashStyle.Solid + chartArea.BorderWidth = 1 - a.BackColor = Color.GhostWhite + chartArea.BackColor = Color.GhostWhite - chart.ChartAreas.Add(a) + chart.ChartAreas.Add(chartArea) chart.Update() - img = New Bitmap(chart.Width, chart.Height, PixelFormat.Format32bppArgb) + Dim img As Bitmap = New Bitmap(chart.Width, chart.Height, PixelFormat.Format32bppArgb) chart.DrawToBitmap(img, New Rectangle(0, 0, PicBox.Width, PicBox.Height)) PicBox.Image = img @@ -1080,7 +1074,7 @@ lbDlog: If gearbox Is Nothing Then Return - TbGbxTxt.Text = gearbox.Gears.Count & "-Speed " & gearbox.Type.ShortName() & " " & gearbox.ModelName + TbGbxTxt.Text = String.Format("{0}-Speed {1} {2}", gearbox.Gears.Count, gearbox.Type.ShortName(), gearbox.ModelName) If Cfg.DeclMode Then For i = 1 To gearbox.Gears.Count @@ -1200,8 +1194,7 @@ lbDlog: pmax = fullLoadCurve.MaxPower.Value() / 1000 'FLD0.Pfull(FLD0.EngineRatedSpeed) - TbEngTxt.Text = (engine.Displacement.Value() * 1000).ToString("0.0") & " l " & pmax.ToString("#") & " kW " & - engine.ModelName + TbEngTxt.Text = String.Format("{0} l {1} kw {2}", (engine.Displacement.Value() * 1000).ToString("0.0"), pmax.ToString("#"), engine.ModelName) Dim fuelConsumptionMap As FuelConsumptionMap = FuelConsumptionMapReader.Create(engine.FuelConsumptionMap) @@ -1259,7 +1252,7 @@ lbDlog: PicVehicle.Image = ConvPicPath(If(s0 Is Nothing, -1, HDVclass.ToInt()), False) _ 'Image.FromFile(cDeclaration.ConvPicPath(HDVclass, False)) - TbHVCclass.Text = "HDV Class " & HDVclass + TbHVCclass.Text = String.Format("HDV Class {0}", HDVclass) TbVehCat.Text = vehicle.VehicleCategory.GetCategoryName() 'ConvVehCat(VEH0.VehCat, True) TbMass.Text = (vehicle.GrossVehicleMassRating.Value() / 1000) & " t" TbAxleConf.Text = vehicle.AxleConfiguration.GetName() 'ConvAxleConf(VEH0.AxleConf) diff --git a/VECTO/GUI/VehicleAuxiliariesDialog.vb b/VECTO/GUI/VehicleAuxiliariesDialog.vb index 871f0be6248cd3c9928a53b130293c028ded43ac..3e25d287e0604a46f01216acb4d4437e8f561e1c 100644 --- a/VECTO/GUI/VehicleAuxiliariesDialog.vb +++ b/VECTO/GUI/VehicleAuxiliariesDialog.vb @@ -129,7 +129,7 @@ Public Class VehicleAuxiliariesDialog If Trim(TbID.Text) = "" Or Cfg.DeclMode Then LbIDhelp.Text = "" Else - LbIDhelp.Text = "Header in Driving cycle: <AUX_" & Trim(TbID.Text) & ">" + LbIDhelp.Text = String.Format("Header in Driving cycle: <AUX_{1}>", Trim(TbID.Text)) End If End Sub End Class diff --git a/VectoCommon/VectoCommon/Exceptions/VectoSimulationException.cs b/VectoCommon/VectoCommon/Exceptions/VectoSimulationException.cs index 502b8e1b8c22b349c5534b3794b3b59566ee201a..8dd07914048d2566ef171fbaa9cb9b7720836f7a 100644 --- a/VectoCommon/VectoCommon/Exceptions/VectoSimulationException.cs +++ b/VectoCommon/VectoCommon/Exceptions/VectoSimulationException.cs @@ -75,7 +75,7 @@ namespace TUGraz.VectoCommon.Exceptions Response = (IResponse)info.GetValue("Response", typeof(IResponse)); } - public IResponse Response; + public readonly IResponse Response; public UnexpectedResponseException(string message, IResponse resp) : base(message + Environment.NewLine + "{0}", resp) diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index 913b3cb088c5c21254f82703d852b7d88fbb5859..bbc06175f338f3274c583030474c2d43f37ca4ea 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -30,7 +30,6 @@ */ using System.Collections.Generic; -using System.Data; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; diff --git a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs index 2d8e96935cf7275e262473f642dcb10cd614716f..538ed4e621c1cc252cb7fc9c17b13da03ea84143 100644 --- a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs +++ b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs @@ -31,7 +31,6 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.Data; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; diff --git a/VectoCommon/VectoCommon/Models/AuxiliaryModel.cs b/VectoCommon/VectoCommon/Models/AuxiliaryModel.cs index e7b39dc8d5589eb98a3e2b3c958730a4357bfaa6..f86b29c2a24cb9e36267f4e880474afbe2858538 100644 --- a/VectoCommon/VectoCommon/Models/AuxiliaryModel.cs +++ b/VectoCommon/VectoCommon/Models/AuxiliaryModel.cs @@ -37,7 +37,7 @@ namespace TUGraz.VectoCommon.Models Advanced } - public class AuxiliaryModelHelper + public static class AuxiliaryModelHelper { public static AuxiliaryModel Parse(string auxAssemblyStr) { diff --git a/VectoCommon/VectoCommon/Models/AxleConfiguration.cs b/VectoCommon/VectoCommon/Models/AxleConfiguration.cs index 382e888e48fe1471df956a001fc91926ccf57e7e..7317e3aa7af5f7278b44a57dd5a503f6b92e245c 100644 --- a/VectoCommon/VectoCommon/Models/AxleConfiguration.cs +++ b/VectoCommon/VectoCommon/Models/AxleConfiguration.cs @@ -29,7 +29,6 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ -using System; using System.Diagnostics.CodeAnalysis; using TUGraz.VectoCommon.Utils; diff --git a/VectoCommon/VectoCommon/Models/IResponse.cs b/VectoCommon/VectoCommon/Models/IResponse.cs index ce8922fc0c44e63638861fd0c81a2fe6ace2e5b1..f2252936aae39d16abd00544e7393fb1a8e0e9d1 100644 --- a/VectoCommon/VectoCommon/Models/IResponse.cs +++ b/VectoCommon/VectoCommon/Models/IResponse.cs @@ -29,7 +29,6 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ -using System; using TUGraz.VectoCommon.Utils; namespace TUGraz.VectoCommon.Models diff --git a/VectoCommon/VectoCommon/Models/VehicleCategory.cs b/VectoCommon/VectoCommon/Models/VehicleCategory.cs index 609a21b2efc6b32ceb6b27b949b186910ed269b8..0b8bf3e37789f94e201675cfeb4ca6b1ffeabeb9 100644 --- a/VectoCommon/VectoCommon/Models/VehicleCategory.cs +++ b/VectoCommon/VectoCommon/Models/VehicleCategory.cs @@ -29,8 +29,6 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ -using System; - namespace TUGraz.VectoCommon.Models { public enum VehicleCategory diff --git a/VectoCommon/VectoCommon/Utils/EnumerableExtensionMethods.cs b/VectoCommon/VectoCommon/Utils/EnumerableExtensionMethods.cs index 6ccdbe2f4b6aedad66ecf7758064e3d1747acdcd..666526060e53e3b4a7479f161d1c7d9021159985 100644 --- a/VectoCommon/VectoCommon/Utils/EnumerableExtensionMethods.cs +++ b/VectoCommon/VectoCommon/Utils/EnumerableExtensionMethods.cs @@ -55,6 +55,7 @@ namespace TUGraz.VectoCommon.Utils return false; } + // ReSharper disable once LoopCanBeConvertedToQuery for (var i = 0; i < self.Length; i++) { if (self[i].CompareTo(other[i]) != 0) { return self.OrderBy(x => x).SequenceEqual(other.OrderBy(x => x)); diff --git a/VectoCommon/VectoCommon/Utils/SI.cs b/VectoCommon/VectoCommon/Utils/SI.cs index 46eb8fae123599dd84a7851b1164d8a495c69db2..c51e9f87f2489d9535db969240c1bdb28d0f66f8 100644 --- a/VectoCommon/VectoCommon/Utils/SI.cs +++ b/VectoCommon/VectoCommon/Utils/SI.cs @@ -611,7 +611,7 @@ namespace TUGraz.VectoCommon.Utils /// <summary> /// SI Class for one per second [1/s]. /// </summary> - [DebuggerDisplay("rad/s: {this} | rpm: {ConvertTo().Rounds.Per.Minute}")] + [DebuggerDisplay("rad/s: {Val} | rpm: {AsRPM}")] public class PerSecond : SIBase<PerSecond> { private static readonly Unit[] DenominatorDefault = { Unit.s }; @@ -628,7 +628,7 @@ namespace TUGraz.VectoCommon.Utils /// <summary> /// SI Class for Meter per second [m/s]. /// </summary> - [DebuggerDisplay("{this} | {ConvertTo().Kilo.Meter.Per.Hour}")] + [DebuggerDisplay("{Val} | {AsKmph}")] public class MeterPerSecond : SIBase<MeterPerSecond> { private static readonly Unit[] NumeratorDefault = { Unit.m }; @@ -637,9 +637,9 @@ namespace TUGraz.VectoCommon.Utils [DebuggerHidden] private MeterPerSecond(double val) : base(val, NumeratorDefault, DenominatorDefault) {} - public double AsKmph() + public double AsKmph { - return Val * 3.6; + get { return Val * 3.6; } } /// <summary> @@ -2194,7 +2194,7 @@ namespace TUGraz.VectoCommon.Utils /// </returns> public int CompareTo(object obj) { - var si = (obj as SI); + var si = obj as SI; if (si == null) { return 1; } diff --git a/VectoCommon/VectoCommon/Utils/Validation.cs b/VectoCommon/VectoCommon/Utils/Validation.cs index 21c249508bed125b0e224f49e85bd6864731db43..2ab037be88e735995b47090c0ce627e5a6dfc1f3 100644 --- a/VectoCommon/VectoCommon/Utils/Validation.cs +++ b/VectoCommon/VectoCommon/Utils/Validation.cs @@ -254,7 +254,6 @@ namespace TUGraz.VectoCommon.Utils /// </summary> /// <param name="minimum">The minimum.</param> /// <param name="maximum">The maximum.</param> - /// <param name="mode">if specified the validation is only performed in the corresponding mode</param> public SIRangeAttribute(double minimum, double maximum) : base(minimum, maximum) {} /// <summary> @@ -273,7 +272,6 @@ namespace TUGraz.VectoCommon.Utils /// </summary> /// <param name="minimum">The minimum.</param> /// <param name="maximum">The maximum.</param> - /// <param name="mode">if specified the validation is only performed in the corresponding mode</param> public SIRangeAttribute(SI minimum, SI maximum) : base(minimum.Value(), maximum.Value()) {} /// <summary> diff --git a/VectoCommon/VectoCommon/Utils/VectoMath.cs b/VectoCommon/VectoCommon/Utils/VectoMath.cs index a6a0629cd9e84c7be48324a79015def78ff21116..3f801863df03a528c33ed2908dd7a658b35ab3fc 100644 --- a/VectoCommon/VectoCommon/Utils/VectoMath.cs +++ b/VectoCommon/VectoCommon/Utils/VectoMath.cs @@ -154,7 +154,7 @@ namespace TUGraz.VectoCommon.Utils retVal.Add((-b - Math.Sqrt(d)) / (2 * a)); } else { // only one solution possible - retVal.Add((-b / (2 * a))); + retVal.Add(-b / (2 * a)); } return retVal; } @@ -186,7 +186,7 @@ namespace TUGraz.VectoCommon.Utils } var t = tNumer / denom; - return new Point(line1.P1.X + (t * s10X), line1.P1.Y + t * s10Y); + return new Point(line1.P1.X + t * s10X, line1.P1.Y + t * s10Y); } /// <summary> @@ -261,31 +261,17 @@ namespace TUGraz.VectoCommon.Utils return Math.Ceiling(si.Value()).SI<T>(); } - public static List<double> CubicEquationSolver(double A, double B, double C, double D) + public static List<double> CubicEquationSolver(double a, double b, double c, double d) { - //var a = B / A; - //var b = C / A; - //var d = D / A; - - //var p = b / a - a * a / 3; - //var q = 2 * a * a / 27 - a * b / 3 + C; - - //var R = q * q / 4 + p * p * p / 27; - //if (R > 0) { - // // one real and two complex solutions - we are only interested on the real solution - - //} else { - // // three real solutions (two may coincide) - //} var solutions = new List<double>(); - if (A.IsEqual(0, 1e-12)) { - return QuadraticEquationSolver(B, C, D); + if (a.IsEqual(0, 1e-12)) { + return QuadraticEquationSolver(b, c, d); } - var w = B / (3 * A); - var p = Math.Pow(C / (3 * A) - w * w, 3); - var q = -0.5 * (2 * (w * w * w) - (C * w - D) / A); - var d = q * q + p; // discriminant - if (d < 0.0) { + var w = b / (3 * a); + var p = Math.Pow(c / (3 * a) - w * w, 3); + var q = -0.5 * (2 * (w * w * w) - (c * w - d) / a); + var discriminant = q * q + p; + if (discriminant < 0.0) { // 3 real solutions var h = q / Math.Sqrt(-p); var phi = Math.Acos(Math.Max(-1.0, Math.Min(1.0, h))); @@ -295,15 +281,15 @@ namespace TUGraz.VectoCommon.Utils } } else { // only one real solution - d = Math.Sqrt(d); - solutions.Add(Cbrt(q + d) + Cbrt(q - d) - w); + discriminant = Math.Sqrt(discriminant); + solutions.Add(Cbrt(q + discriminant) + Cbrt(q - discriminant) - w); } // 1 Newton iteration step in order to minimize round-off errors for (var i = 0; i < solutions.Count; i++) { - var h = C + solutions[i] * (2 * B + 3 * solutions[i] * A); + var h = c + solutions[i] * (2 * b + 3 * solutions[i] * a); if (!h.IsEqual(0, 1e-12)) { - solutions[i] -= (D + solutions[i] * (C + solutions[i] * (B + solutions[i] * A))) / h; + solutions[i] -= (d + solutions[i] * (c + solutions[i] * (b + solutions[i] * a))) / h; } } solutions.Sort(); @@ -431,10 +417,10 @@ namespace TUGraz.VectoCommon.Utils [DebuggerDisplay("Plane({X}, {Y}, {Z}, {W})")] public class Plane { - public double X; - public double Y; - public double Z; - public double W; + public readonly double X; + public readonly double Y; + public readonly double Z; + public readonly double W; public Plane(double x, double y, double z, double w) {