MinMaxValue GetWindStrength() { MinMaxValue minMaxAvgValue = new MinMaxValue(); minMaxAvgValue.LowLimit = -10; minMaxAvgValue.HighLimit = 10; float min = 0, max = 0; for (int i = 0; i < WindMaterials.Length; i++) { float StrengthValue = WindMaterials[i].GetFloat("Vector1_36BC0FD6"); if (min > StrengthValue) { min = StrengthValue; } else if (max < StrengthValue) { max = StrengthValue; } } minMaxAvgValue.minValue = min; minMaxAvgValue.maxValue = max; return(minMaxAvgValue); }
public MinMaxValue(MinMaxValue temp) { minValue = temp.minValue; maxValue = temp.maxValue; LowLimit = temp.LowLimit; HighLimit = temp.HighLimit; }
private void CopyHealProperty(HealProperty prop) { eStat scaling = new eStat(); scaling = prop.scaleFactor; MinMaxValue[] values = new MinMaxValue[5]; for (int i = 0; i < 5; i++) { MinMaxValue val = new MinMaxValue(prop.healPerLevel [i].min, prop.healPerLevel [i].max); values [i] = val; } bool targetCaster = prop.targetCasterOverride; bool affectCaster = prop.affectsCaster; bool allies = prop.affectsAllyPlayers; bool allySummon = prop.affectsAllySummons; bool enemies = prop.affectsEnemyPlayers; bool enemySummon = prop.affectsAllySummons; HealProperty newProp = new HealProperty(); newProp.scaleFactor = scaling; newProp.healPerLevel = values; newProp.targetCasterOverride = targetCaster; newProp.affectsCaster = affectCaster; newProp.affectsAllyPlayers = allies; newProp.affectsAllySummons = allySummon; newProp.affectsEnemyPlayers = enemies; newProp.affectsEnemySummons = enemySummon; ability.critHealEffects.Add(newProp); }
public double SetEps(double eps0) { if (_Values.Count < 2) { Initialize(); } var n1 = _Values.First; var n2 = n1.Next; var I = 0d; var v1 = n1.Value; var x1 = v1.Key; var y1 = _DoubleConverter(v1.Value); var eps1 = 0d; var min_max = new MinMaxValue(); var dI = y1 / 2; min_max.AddValue(y1); do { var v2 = n2.Value; var x2 = v2.Key; var y2 = _DoubleConverter(v2.Value); min_max.AddValue(y2); var eps = GetEps(x1, x2, y1, y2); if (eps < eps0) { if (eps > eps1) { eps1 = eps; } n1 = n2; dI += y2 / 2; I += dI * (x2 - x1); dI = y2 / 2; y1 = y2; x1 = x2; n2 = n1.Next; continue; } x2 = (x1 + x2) / 2; v2 = new KeyValuePair <double, T>(x2, _Function(x2)); n2 = _Values.AddAfter(n1, v2); } while (n2 != null); if (eps1.Equals(0d)) { eps1 = eps0; } Set(ref _Eps0, eps1, nameof(Eps0)); Set(ref _Min, min_max.Min, nameof(Min)); Set(ref _Max, min_max.Max, nameof(Max)); Set(ref _Integral, I, nameof(Integral)); return(eps1); }
/// <summary> /// Generate data for the request, return Constrain.NoValue instead of null /// </summary> /// <param name="request">data request</param> /// <returns>generated data</returns> public override object GenerateData(DataRequest request) { if (!request.Populate) { return(LocateValue); } MinMaxValue <int> lengthMinMax; if (request.ExtraInfo is MemberInfo) { lengthMinMax = GetMemberInfoStringLength(request.ExtraInfo as MemberInfo); if (lengthMinMax.Min < 0) { lengthMinMax.Min = 5; } if (lengthMinMax.Max == int.MaxValue) { lengthMinMax.Max = 16; } } else { lengthMinMax = new MinMaxValue <int> { Min = 5, Max = 16 }; } lengthMinMax.Min = _constraintHelper.GetValue(request.Constraints, lengthMinMax.Min, "min", "minlength"); lengthMinMax.Max = _constraintHelper.GetValue(request.Constraints, lengthMinMax.Max, "max", "maxlength"); var prefix = _constraintHelper.GetValue(request.Constraints, string.Empty, "prefix", "pre", "seed"); if (!string.IsNullOrEmpty(prefix)) { lengthMinMax.Min -= prefix.Length; lengthMinMax.Max -= prefix.Length; } var postfix = _constraintHelper.GetValue(request.Constraints, string.Empty, "postfix", "post"); if (!string.IsNullOrEmpty(postfix)) { lengthMinMax.Min -= postfix.Length; lengthMinMax.Max -= postfix.Length; } var stringType = _constraintHelper.GetValue(request.Constraints, StringType.MostCharacter, "stringType", "Type"); if (lengthMinMax.Min > lengthMinMax.Max) { lengthMinMax.Min = lengthMinMax.Max; } return(prefix + _dataGenerator.NextString(stringType, lengthMinMax.Min, lengthMinMax.Max) + postfix); }
private void CopyBuffDebuffProperty(BuffDebuffProperty prop) { eStat stat = new eStat(); stat = prop.stat; eElement res = new eElement(); res = prop.resistance; MinMaxValue[] values = new MinMaxValue[5]; int[] durations = new int[5]; for (int i = 0; i < 5; i++) { MinMaxValue val = new MinMaxValue(prop.valuePerLevel [i].min, prop.valuePerLevel [i].max); values [i] = val; } for (int i = 0; i < 5; i++) { int val = prop.durationPerLevel [i]; durations [i] = val; } bool isResist = prop.isResistanceModifier; bool resistable = prop.resistable; bool isBuff = prop.isBuff; bool targetCaster = prop.targetCasterOverride; bool affectCaster = prop.affectsCaster; bool allies = prop.affectsAllyPlayers; bool allySummon = prop.affectsAllySummons; bool enemies = prop.affectsEnemyPlayers; bool enemySummon = prop.affectsAllySummons; BuffDebuffProperty newProp = new BuffDebuffProperty(); newProp.isResistanceModifier = isResist; newProp.isBuff = isBuff; newProp.resistable = resistable; newProp.resistance = res; newProp.stat = stat; newProp.valuePerLevel = values; newProp.targetCasterOverride = targetCaster; newProp.affectsCaster = affectCaster; newProp.affectsAllyPlayers = allies; newProp.affectsAllySummons = allySummon; newProp.affectsEnemyPlayers = enemies; newProp.affectsEnemySummons = enemySummon; ability.critBuffDebuffEffects.Add(newProp); }
public void InitCount(Single[] pers, Single angle = 0, Color[] colors = null) { var tmpMM = new MinMaxValue[pers.Length]; for (var i = 0; i < pers.Length; i++) { tmpMM[i].Min = 0; tmpMM[i].Max = pers[i]; } InitCount(tmpMM, angle, colors); }
void SetWindSetArtistTool() { VisualElement root = rootVisualElement; root.Clear(); //Loads and clones our VisualTree inside the root. VisualTreeAsset quickToolVisualTree = Resources.Load <VisualTreeAsset>("WindArtistTool"); quickToolVisualTree.CloneTree(root); root.styleSheets.Add(Resources.Load <StyleSheet>("WindArtistTool")); #region Wind Shader // Set Initial Values VisualElement windComponent = root.Q <VisualElement>(name: "Wind"); if (windComponent != null) { Vector4Field windDirectionQuaternion = windComponent.Q <Vector4Field>(name: "WindDirection"); windDirectionQuaternion.value = GetWindDirection(); FloatField windScaleFloat = windComponent.Q <FloatField>(name: "WindScale"); windScaleFloat.value = GetWindScale(); MinMaxValue minMaxStrength = GetWindStrength(); VisualElement windStrengthHolder = windComponent.Q <VisualElement>(name: "WinStrengthHolder"); MinMaxSlider windStrengthSlider = windStrengthHolder.Q <MinMaxSlider>(name: "WindStrength"); windStrengthSlider.highLimit = minMaxStrength.HighLimit; windStrengthSlider.lowLimit = minMaxStrength.LowLimit; windStrengthSlider.value = new Vector2(minMaxStrength.minValue, minMaxStrength.maxValue); windStrengthHolder.Q <Label>(name: "MinValue").text = "Min Value :" + minMaxStrength.minValue; windStrengthHolder.Q <Label>(name: "MaxValue").text = "Max Value :" + minMaxStrength.maxValue; FloatField windSpeedFloat = windComponent.Q <FloatField>(name: "WindSpeed"); windSpeedFloat.value = GetWindSpeed(); //Set Callbacks values windDirectionQuaternion.RegisterCallback <ChangeEvent <Vector4> >(ChangeWindDirection); windScaleFloat.RegisterCallback <ChangeEvent <float> >(ChangeWindScale); windStrengthSlider.RegisterCallback <ChangeEvent <Vector2> >(ChangeWindStrength); windSpeedFloat.RegisterCallback <ChangeEvent <float> >(ChangeWindSpeed); } #endregion root.Q <Button>(name: "SaveButton").clicked += SaveButton; root.Q <Button>(name: "ResetButton").clicked += ResetToInitialSceneValues; }
private void AlarmList_Load(object sender, EventArgs e) { try { MinMaxValue mmv = null; if (UnitNO == 5) { dtAvg = TableMinMaxValue.getDatasFiveWithValueToData(); foreach (DataRow row in dtAvg.Rows) { mmv = (MinMaxValue)TagLJValue.MinMaxValueHsFive["F" + row["TagID"].ToString()]; row["AvgValue"] = mmv.AvgValue * mmv.AvgToDataRate; } dtTotal = FTableTotalTags.getDataTableByRowFilter("IsResetShow=1"); DataTable dtTemp = GlobalVariables.dtOneRowTotalDataFive; foreach (DataRow row in dtTotal.Rows) { try { row["TotalValue"] = dtTemp.Rows[0]["F" + row["id"].ToString()]; } catch { } } } else if (UnitNO == 6) { dtAvg = TableMinMaxValue.getDatasSixWithValueToData(); foreach (DataRow row in dtAvg.Rows) { mmv = (MinMaxValue)TagLJValue.MinMaxValueHsSix["F" + row["TagID"].ToString()]; row["AvgValue"] = mmv.AvgValue * mmv.AvgToDataRate; } dtTotal = STableTotalTags.getDataTableByRowFilter("IsResetShow=1"); DataTable dtTemp = GlobalVariables.dtOneRowTotalDataSix; foreach (DataRow row in dtTotal.Rows) { try { row["TotalValue"] = dtTemp.Rows[0]["F" + row["id"].ToString()]; } catch { } } } dataGridView1.AutoGenerateColumns = false; this.dataGridView1.DataSource = dtAvg; dataGridView2.AutoGenerateColumns = false; this.dataGridView2.DataSource = dtTotal; } catch (Exception ex) { WriteLog.WriteLogs(ex.ToString()); MessageBox.Show("无数据"); } }
/// <summary> /// Generate a set of the min max value /// </summary> /// The most minimum value in all min max values is globalMin, and /// the most maximum value in all min max values is globalMax. /// The number of offset will be padded at the two ends of each min max value /// orderly according to the num of min max values. /// <param name="globalMin">The most minimum value</param> /// <param name="globalMax">The most maximum value</param> /// <param name="offset"> /// The unit offset to be padded at two ends of min max value</param> /// <param name="num">The number of min max values to be generated</param> /// <returns>An array of generated min max values</returns> public static MinMaxValue[] GetOffsetCluster( float globalMin, float globalMax, float offset, int num) { Debug.Assert( globalMin <= globalMax, $"{nameof(globalMin)} is greater than {nameof(globalMax)}"); Debug.Assert( globalMax - globalMin > offset, $"{nameof(offset)} is greater than the range " + $"from the {nameof(globalMin)} to {nameof(globalMax)}"); var range = (globalMax - globalMin) - offset * (num - 1); var minMaxValues = new MinMaxValue[num]; for (var i = 0; i < num; ++i) { var min = offset * i; var max = min + range; minMaxValues[i] = new MinMaxValue(min, max); } return(minMaxValues); }
private MinMaxValue <int> GetMemberInfoStringLength(MemberInfo memberInfo) { var returnValue = new MinMaxValue <int> { Min = -1, Max = int.MaxValue }; var attribute = memberInfo.GetCustomAttributes().FirstOrDefault(a => a.GetType().Name == "StringLengthAttribute"); if (attribute != null) { var minProperty = attribute.GetType().GetRuntimeProperty("MinimumLength"); var maxProperty = attribute.GetType().GetRuntimeProperty("MaximumLength"); if (minProperty != null) { var localMin = (int)minProperty.GetValue(attribute); if (localMin.CompareTo(returnValue.Min) > 0) { returnValue.Min = localMin; } } if (maxProperty != null) { var localMax = (int)maxProperty.GetValue(attribute); if (localMax.CompareTo(returnValue.Max) < 0) { returnValue.Max = localMax; } } } return(returnValue); }
void SetArtistTool() { VisualElement root = rootVisualElement; root.Clear(); VisualTreeAsset ArtistToolVisualTree = Resources.Load <VisualTreeAsset>("ArtistTool"); ArtistToolVisualTree.CloneTree(root); root.styleSheets.Add(Resources.Load <StyleSheet>("ArtistTool")); SerializedObject Tso = new SerializedObject(TimeController); Slider timeSlider = root.Q <Slider>(name: "Time"); timeSlider.Bind(Tso); #region SkyColor VisualElement gradientVisualElement = root.Q <VisualElement>(name: "SkyGradient"); if (gradientVisualElement != null) { GradientField gradientField = gradientVisualElement.Q <GradientField>(); if (gradientField != null) { skyColorSetter = GameObject.Find("Light - Sky").GetComponent <MaterialColorSetter>(); SerializedObject serialized_MaterialSetter = new SerializedObject(skyColorSetter); gradientField.bindingPath = "gradient"; gradientField.Bind(serialized_MaterialSetter); gradientVisualElement.Q <Label>().text = "Sky Gradient"; } } #endregion #region Ruins GradientEditorSetter("RuinsGradient", "Ruins Gradient", RuinsColorSetter); #endregion #region Trees GradientEditorSetter("TreesGradient", "Trees Gradient", TreesColorSetter); #endregion #region Rim GradientEditorSetter("RimColor", "Rim Gradient", RimColorSetter); #endregion #region Lights #region SunLights SerializedObject serialized_SunSpot = new SerializedObject(SunSpot_Group); VisualElement sunLightVisualElement = root.Q <VisualElement>(name: "Sunlight"); if (sunLightVisualElement.Q <VisualElement>(name: "LightGradient") != null) { GradientField sunLightGradient = sunLightVisualElement.Q <VisualElement>(name: "LightGradient").Q <GradientField>(); FloatField sunLightIntensity = root.Q <FloatField>(name: "Intensity"); if (sunLightGradient != null) { sunLightGradient.bindingPath = "gradient"; sunLightGradient.Bind(serialized_SunSpot); sunLightGradient.label = "Gradient"; } sunLightIntensity.value = GetSpotLightIntensity(); sunLightIntensity.RegisterCallback <ChangeEvent <float> >(ChangeIntensitySpotLightsEvent); } #endregion #region GrassLight SerializedObject serialized_GrassLight_Group = new SerializedObject(GrassLight_Group); VisualElement grassLightVisualElement = root.Q <VisualElement>(name: "GrassLight"); if (grassLightVisualElement.Q <VisualElement>(name: "LightGradient") != null) { GradientField grassLightGradient = grassLightVisualElement.Q <VisualElement>(name: "LightGradient").Q <GradientField>(); FloatField grassLightIntensity = grassLightVisualElement.Q <FloatField>(name: "Intensity"); if (grassLightGradient != null) { grassLightGradient.bindingPath = "gradient"; grassLightGradient.Bind(serialized_GrassLight_Group); grassLightGradient.label = "Gradient"; } grassLightIntensity.value = GrassLight.intensity; SerializedObject serialized_GrassLight = new SerializedObject(GrassLight); grassLightIntensity.Bind(serialized_GrassLight); } #endregion #region cave Light SerializedObject serialized_CaveHoleLight = new SerializedObject(CaveHoleLight); VisualElement caveLightVisualElement = root.Q <VisualElement>(name: "CaveHoleLight"); caveLightVisualElement.Q <FloatField>(name: "Falloff").Bind(serialized_CaveHoleLight); Slider fallOffSlider = caveLightVisualElement.Q <Slider>(name: "FalloffIntencity"); FloatField fallOffField = fallOffSlider.Q <FloatField>(name: "CurrentValue"); fallOffSlider.Bind(serialized_CaveHoleLight); fallOffField.SetValueWithoutNotify(CaveHoleLight.falloffIntensity); fallOffField.RegisterCallback <ChangeEvent <float> >((evt) => fallOffSlider.value = evt.newValue); fallOffSlider.RegisterCallback <ChangeEvent <float> >((evt) => fallOffField.SetValueWithoutNotify(evt.newValue)); #endregion #region Visualisers var AllGradientElements = root.Query <GradientField>(); AllGradientElements.ForEach((element) => { //registerCallback for Gradient to apply changes on scene element.RegisterCallback <ChangeEvent <Gradient> >(ChangeGradientEvent); VisualElement visualiser = element.Q <VisualElement>(name: "VisualisationColor"); //Init color of visualisation cube float currentTime = TimeController.timeValue; visualiser.style.backgroundColor = element.value.Evaluate(currentTime); //register Callback for each visualisation cube when gradient Changes element.RegisterCallback <ChangeEvent <Gradient> >((evt) => { float timeOfChange = TimeController.timeValue; visualiser.style.backgroundColor = evt.newValue.Evaluate(currentTime); }); //register Callback for each visualisation cube when Time Changes timeSlider.RegisterCallback <ChangeEvent <float> >((evt) => { visualiser.style.backgroundColor = element.value.Evaluate(evt.newValue); }); }); #endregion #endregion #region Wind Shader // Set Initial Values VisualElement windComponent = root.Q <VisualElement>(name: "Wind"); if (windComponent != null) { Vector4Field windDirectionQuaternion = windComponent.Q <Vector4Field>(name: "WindDirection"); windDirectionQuaternion.value = GetWindDirection(); FloatField windScaleFloat = windComponent.Q <FloatField>(name: "WindScale"); windScaleFloat.value = GetWindScale(); MinMaxValue minMaxStrength = GetWindStrength(); VisualElement windStrengthHolder = windComponent.Q <VisualElement>(name: "WinStrengthHolder"); MinMaxSlider windStrengthSlider = windStrengthHolder.Q <MinMaxSlider>(name: "WindStrength"); windStrengthSlider.highLimit = minMaxStrength.HighLimit; windStrengthSlider.lowLimit = minMaxStrength.LowLimit; windStrengthSlider.value = new Vector2(minMaxStrength.minValue, minMaxStrength.maxValue); windStrengthHolder.Q <Label>(name: "MinValue").text = "Min Value :" + minMaxStrength.minValue; windStrengthHolder.Q <Label>(name: "MaxValue").text = "Max Value :" + minMaxStrength.maxValue; FloatField windSpeedFloat = windComponent.Q <FloatField>(name: "WindSpeed"); windSpeedFloat.value = GetWindSpeed(); //Set Callbacks values windDirectionQuaternion.RegisterCallback <ChangeEvent <Vector4> >(ChangeWindDirection); windScaleFloat.RegisterCallback <ChangeEvent <float> >(ChangeWindScale); windStrengthSlider.RegisterCallback <ChangeEvent <Vector2> >(ChangeWindStrength); windSpeedFloat.RegisterCallback <ChangeEvent <float> >(ChangeWindSpeed); } #endregion #region Postprocessing #region WhiteBalance //serialize White balance property SerializedObject serialized_whiteBalanceProperty = new SerializedObject(whiteBalanceProperty); //Get White balance Visual Element VisualElement whiteBalanceVisualElement = root.Q <VisualElement>(name: "WhiteBalance"); #region Temperature //Get White Balance temperature Visual Element VisualElement whiteBalanceTemperatureVE = whiteBalanceVisualElement.Q <VisualElement>(name: "Temperature"); //Get White Balance temperature Slider Slider whiteBalanceTemperatureSlider = whiteBalanceTemperatureVE.Q <Slider>(name: "SliderValue"); //Bind Slider to value whiteBalanceTemperatureSlider.bindingPath = "temperature.m_Value"; whiteBalanceTemperatureSlider.Bind(serialized_whiteBalanceProperty); //Get White Balance temperature Float Field FloatField whiteBalanceTemperatureFloat = whiteBalanceTemperatureVE.Q <FloatField>(name: "CurrentValue"); //Set default Temperature whiteBalanceTemperatureFloat.SetValueWithoutNotify(whiteBalanceProperty.temperature.value); //Register change callback for the float field to change the slider value. Changing slider value will change the values bound with it. whiteBalanceTemperatureFloat.RegisterCallback <ChangeEvent <float> >((evt) => whiteBalanceTemperatureSlider.value = evt.newValue); //Register change Callback for the slider, to change the float fiel Without notification (to avoid triggering Float field callback) whiteBalanceTemperatureSlider.RegisterCallback <ChangeEvent <float> >((evt) => whiteBalanceTemperatureFloat.SetValueWithoutNotify(evt.newValue)); #endregion #region Tint //Get White Balance Tint Visual Element VisualElement whiteBalanceTintVE = whiteBalanceVisualElement.Q <VisualElement>(name: "Tint"); //Get White Balance Tint Slider Slider whiteBalanceTintSlider = whiteBalanceTintVE.Q <Slider>(name: "SliderValue"); //Bind Slider to value whiteBalanceTintSlider.bindingPath = "tint.m_Value"; whiteBalanceTintSlider.Bind(serialized_whiteBalanceProperty); //Get White Balance Tint Float Field FloatField whiteBalanceTintFloat = whiteBalanceTintVE.Q <FloatField>(name: "CurrentValue"); //Set default Tint whiteBalanceTintFloat.SetValueWithoutNotify(whiteBalanceProperty.tint.value); //Register change callback for the float field to change the slider value. Changing slider value will change the values bound with it. whiteBalanceTintFloat.RegisterCallback <ChangeEvent <float> >((evt) => whiteBalanceTintSlider.value = evt.newValue); //Register change Callback for the slider, to change the float fiel Without notification (to avoid triggering Float field callback) whiteBalanceTintSlider.RegisterCallback <ChangeEvent <float> >((evt) => whiteBalanceTintFloat.SetValueWithoutNotify(evt.newValue)); #endregion #endregion #region Bloom //serialize bloom property SerializedObject serialized_BloomProperty = new SerializedObject(BloomProperty); //Get Bloom Visual Element VisualElement bloomVisualElement = root.Q <VisualElement>(name: "Bloom"); //Get Bloom Tint Color ColorField bloomTint = bloomVisualElement.Q <ColorField>(name: "Tint"); //Bind color to value bloomTint.bindingPath = "tint.m_Value"; bloomTint.Bind(serialized_BloomProperty); //Get Bloom Intensity FloatField bloomIntensity = bloomVisualElement.Q <FloatField>(name: "Intensity"); //Bind Intensity to value bloomIntensity.Bind(serialized_BloomProperty); #endregion #endregion #region VFX SerializedObject serialized_GlowParticleSystem = new SerializedObject(GlowParticleSystem); VisualElement VFXVisualElement = root.Q <VisualElement>(name: "VFX"); VFXVisualElement.Q <FloatField>(name: "Emission").bindingPath = "EmissionModule.rateOverTime.scalar"; VFXVisualElement.Q <FloatField>(name: "Emission").Bind(serialized_GlowParticleSystem); VFXVisualElement.Q <EnumField>(name: "RenderMode").Init(GlowParticleSystem.GetComponent <ParticleSystemRenderer>().renderMode); VFXVisualElement.Q <EnumField>(name: "RenderMode").RegisterCallback <ChangeEvent <string> >(ChangeRenderMode); VFXVisualElement.Q <ObjectField>(name: "Material").objectType = typeof(Material); VFXVisualElement.Q <ObjectField>(name: "Material").RegisterCallback <ChangeEvent <string> >(ChangeRenderMaterial); #endregion root.Q <Button>(name: "SaveButton").clicked += SaveButton; root.Q <Button>(name: "ResetButton").clicked += ResetToInitialSceneValues; }
private void timerChartBind_Tick(object sender, EventArgs e) { DataRow row; if (lTotalCount < TagLJValue.GetTotalCount(UnitNO)) { lTotalCount = TagLJValue.GetTotalCount(UnitNO); dtChart.Dispose(); dtChart = null; dtChart = TagLJValue.GetTotalDataWithNewTable(UnitNO); if (dtChart.Rows.Count > 0) { dHourOfYear = double.Parse(dtChart.Rows[dtChart.Rows.Count - 1]["HourOfYear"].ToString()); if (rdoTotalHours.Checked == true) { chart1.Series[0].XValueMember = "HourOfYear"; chart1.Series[0].XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Double; dXMin = double.Parse(dtChart.Rows[0]["HourOfYear"].ToString()); chart1.ChartAreas[0].AxisX.MajorGrid.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Auto; chart1.ChartAreas[0].AxisX.MajorGrid.Interval = (dHourOfYear - dXMin) / 10; chart1.ChartAreas[0].AxisX.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Auto; chart1.ChartAreas[0].AxisX.Interval = (dHourOfYear - dXMin) / 10; chart1.ChartAreas[0].AxisX.Title = "供热期累计小时数"; chart1.ChartAreas[0].AxisX.LabelStyle.Format = "0"; } else { DateTime timeBegin = (DateTime)dtChart.Rows[0]["ValueTime"]; DateTime timeEnd = (DateTime)dtChart.Rows[dtChart.Rows.Count - 1]["ValueTime"]; chart1.Series[0].XValueMember = "ValueTime"; chart1.Series[0].XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.DateTime; chart1.ChartAreas[0].AxisX.MajorGrid.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Hours; chart1.ChartAreas[0].AxisX.MajorGrid.Interval = (timeEnd - timeBegin).TotalHours / 6; chart1.ChartAreas[0].AxisX.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Hours; chart1.ChartAreas[0].AxisX.Interval = (timeEnd - timeBegin).TotalHours / 6; chart1.ChartAreas[0].AxisX.Title = "时间"; chart1.ChartAreas[0].AxisX.LabelStyle.Format = "yyyy-MM-dd HH:mm"; } chart1.ChartAreas[0].AxisY.Title = "累计节标煤量:" + Math.Round(double.Parse(dtChart.Rows[dtChart.Rows.Count - 1][F18].ToString()), 2) + "吨"; row = dtChart.NewRow(); row["ValueTime"] = DateTime.Parse(dtChart.Rows[dtChart.Rows.Count - 1]["ValueTime"].ToString()).AddSeconds(1); row["HourOfYear"] = dHourOfYear + 0.0001; dtChart.Rows.Add(row); } } row = dtChart.NewRow(); row["ValueTime"] = DateTime.Now; dHourOfYear += timerChartBind.Interval / 1000 / 3600d; row["HourOfYear"] = dHourOfYear; MinMaxValue mmv = TagLJValue.GetMinMaxValue(F3197, UnitNO); if (UnitNO == 5) { chart1.ChartAreas[0].AxisX.Title = "供热期累计小时数:" + Math.Round(dHourOfYear, 4).ToString("0.0000") + " 累计开始时间:" + mmv.BeginDateString + "\n节标煤量最小值:" + mmv.MinValue.ToString("0.0000") + " 节标煤量最小值时间:" + mmv.MinDateString + "\n节标煤量最大值:" + mmv.MaxValue.ToString("0.0000") + " 节标煤量最大值时间:" + mmv.MaxDateString + "\n节标煤量平均值:" + TagLJValue.GetTotalDataAvg(F18, UnitNO) + "吨/小时 累计节省费用:" + Math.Round(double.Parse(GlobalVariables.dtChartTotalDatasFive.Rows[GlobalVariables.dtChartTotalDatasFive.Rows.Count - 1][F19].ToString()), 2) + "万元"; } else if (UnitNO == 6) { chart1.ChartAreas[0].AxisX.Title = "供热期累计小时数:" + Math.Round(dHourOfYear, 4).ToString("0.0000") + " 累计开始时间:" + mmv.BeginDateString + "\n节标煤量最小值:" + mmv.MinValue.ToString("0.0000") + " 节标煤量最小值时间:" + mmv.MinDateString + "\n节标煤量最大值:" + mmv.MaxValue.ToString("0.0000") + " 节标煤量最大值时间:" + mmv.MaxDateString + "\n节标煤量平均值:" + TagLJValue.GetTotalDataAvg(F18, UnitNO) + "吨/小时 累计节省费用:" + Math.Round(double.Parse(GlobalVariables.dtChartTotalDatasSix.Rows[GlobalVariables.dtChartTotalDatasSix.Rows.Count - 1][F19].ToString()), 2) + "万元"; } chart1.ChartAreas[0].AxisX.TitleAlignment = StringAlignment.Near; dtChart.Rows.Add(row); chart1.DataSource = dtChart; chart1.DataBind(); }
private void timerChartBind_Tick(object sender, EventArgs e) { try { DataRow row; if (lTotalCount < TagLJValue.GetTotalCount(UnitNO)) { lTotalCount = TagLJValue.GetTotalCount(UnitNO); dtChart.Dispose(); dtChart = null; dtChart = TagLJValue.GetTotalDataWithNewTable(UnitNO); if (dtChart.Rows.Count > 0) { dHourOfYear = double.Parse(dtChart.Rows[dtChart.Rows.Count - 1]["HourOfYear"].ToString()); if (rdoTotalHours.Checked == true) { chart1.Series[0].XValueMember = "HourOfYear"; chart1.Series[0].XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Double; dXMin = double.Parse(dtChart.Rows[0]["HourOfYear"].ToString()); chart1.ChartAreas[0].AxisX.MajorGrid.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Auto; chart1.ChartAreas[0].AxisX.MajorGrid.Interval = (int)(dHourOfYear - dXMin) / 10; chart1.ChartAreas[0].AxisX.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Auto; chart1.ChartAreas[0].AxisX.Interval = (int)(dHourOfYear - dXMin) / 10; chart1.ChartAreas[0].AxisX.Title = "供热期累计小时数"; chart1.ChartAreas[0].AxisX.LabelStyle.Format = "0"; } else { DateTime timeBegin = (DateTime)dtChart.Rows[0]["ValueTime"]; DateTime timeEnd = (DateTime)dtChart.Rows[dtChart.Rows.Count - 1]["ValueTime"]; chart1.Series[0].XValueMember = "ValueTime"; chart1.Series[0].XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.DateTime; chart1.ChartAreas[0].AxisX.MajorGrid.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Hours; chart1.ChartAreas[0].AxisX.MajorGrid.Interval = (int)(timeEnd - timeBegin).TotalHours / 6; chart1.ChartAreas[0].AxisX.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Hours; chart1.ChartAreas[0].AxisX.Interval = (int)(timeEnd - timeBegin).TotalHours / 6; chart1.ChartAreas[0].AxisX.Title = "时间"; chart1.ChartAreas[0].AxisX.LabelStyle.Format = "yyyy-MM-dd HH:mm"; } chart1.ChartAreas[0].AxisY.Title = "供电累计收入:" + Math.Round(double.Parse(dtChart.Rows[dtChart.Rows.Count - 1][F6].ToString()), 2) + "(万元)"; row = dtChart.NewRow(); row["ValueTime"] = DateTime.Parse(dtChart.Rows[dtChart.Rows.Count - 1]["ValueTime"].ToString()).AddSeconds(1); row["HourOfYear"] = dHourOfYear + 0.0001; dtChart.Rows.Add(row); } } row = dtChart.NewRow(); row["ValueTime"] = DateTime.Now; dHourOfYear += timerChartBind.Interval / 1000 / 3600d; row["HourOfYear"] = dHourOfYear; MinMaxValue mmv = TagLJValue.GetMinMaxValue(F3226, UnitNO); chart1.ChartAreas[0].AxisX.Title = "供热期累计小时数:" + Math.Round(dHourOfYear, 4).ToString("0.0000") + " 累计开始时间:" + mmv.BeginDateString + "\n供电收入最小值:" + Math.Round(mmv.MinValue / 10000, 4).ToString("0.0000") + " 供电收入最小值时间:" + mmv.MinDateString + "\n供电收入最大值:" + Math.Round(mmv.MaxValue / 10000, 4).ToString("0.0000") + " 供电收入最大值时间:" + mmv.MaxDateString + "\n供电收入平均值:" + TagLJValue.GetTotalDataAvg(F6, UnitNO) + "万元/小时"; chart1.ChartAreas[0].AxisX.TitleAlignment = StringAlignment.Near; dtChart.Rows.Add(row); chart1.DataSource = dtChart; chart1.DataBind(); WriteLog.WriteLogs("timerChartBind:" + timerChartBind.Enabled); } catch (Exception ex) { WriteLog.WriteLogs(ex.ToString()); } }
private void GenerateUV(Mesh mesh) { Vector3[] vertices = mesh.vertices; Vector3[] normals = mesh.normals; Vector2[] uvs = new Vector2[vertices.Length]; // Height should always be scaled to entire building because of small quads for (int i = 0; i < vertices.Length; i += 6) { Vector3 normal = normals[i]; float angle = Vector3.Angle(normal, Vector3.forward) + 180.0f; // Get quad vertices Vector3[] quadVertices = vertices.Skip(i).Take(6).ToArray(); // Check if quad is part of a bigger building bool smallQuad = quadVertices.Max(value => value.y) > vertices.Max(value => value.y); // get min max vertices of quad MinMaxValue minMaxX = new MinMaxValue { Min = quadVertices.Min(value => value.x), Max = quadVertices.Max(value => value.x) }; MinMaxValue minMaxY = new MinMaxValue { Min = quadVertices.Min(value => value.y), Max = smallQuad ? quadVertices.Max(value => value.y) : vertices.Max(value => value.y) }; MinMaxValue minMaxZ = new MinMaxValue { Min = quadVertices.Min(value => value.z), Max = quadVertices.Max(value => value.z) }; // How much of the texture will be mapped and the starting offset float textureAmount, textureOffset; // Top & Bottom if (normal == Vector3.up || normal == Vector3.down) { textureAmount = 0.25f; textureOffset = 0.75f; for (int j = 0; j < quadVertices.Length; j++) { uvs[i + j] = new Vector2 { x = Mathf.InverseLerp(minMaxX.Min, minMaxX.Max, quadVertices[j].x) * textureAmount + textureOffset, y = Mathf.InverseLerp(minMaxZ.Min, minMaxZ.Max, quadVertices[j].z) }; } } // Front & Back else if (180.0f <= angle && angle <= 220.0f) { textureAmount = 0.5f; textureOffset = 0.0f; for (int j = 0; j < quadVertices.Length; j++) { uvs[i + j] = new Vector2 { x = Mathf.InverseLerp(minMaxX.Min, minMaxX.Max, quadVertices[j].x) * textureAmount + textureOffset, y = Mathf.InverseLerp(minMaxY.Min, minMaxY.Max, quadVertices[j].y) }; } } // Sides else { textureAmount = 0.25f; textureOffset = 0.5f; for (int j = 0; j < quadVertices.Length; j++) { uvs[i + j] = new Vector2 { x = Mathf.InverseLerp(minMaxZ.Min, minMaxZ.Max, quadVertices[j].z) * textureAmount + textureOffset, y = Mathf.InverseLerp(minMaxY.Min, minMaxY.Max, quadVertices[j].y) }; } } } mesh.uv = uvs; }
public async Task <double> SetEpsAsync(double eps0, IProgress <double> progress = null, CancellationToken cancel = default) { await Task.Yield(); if (_Values.Count < 2) { await Task.Factory.StartNew(Initialize, cancel).ConfigureAwait(true); } var n1 = _Values.First; var n2 = n1.Next; var I = 0d; var v1 = n1.Value; var x1 = v1.Key; var y1 = _DoubleConverter(v1.Value); var eps1 = 0d; var min_max = new MinMaxValue(); var dI = y1 / 2; min_max.AddValue(y1); var Dx = _X2 - _X1; progress?.Report(0d); do { var v2 = n2.Value; var x2 = v2.Key; var y2 = _DoubleConverter(v2.Value); min_max.AddValue(y2); var eps = GetEps(x1, x2, y1, y2); if (eps < eps0) { if (eps > eps1) { eps1 = eps; } n1 = n2; dI += y2 / 2; I += dI * (x2 - x1); dI = y2 / 2; y1 = y2; x1 = x2; n2 = n1.Next; progress?.Report((x1 - _X1) / Dx); continue; } x2 = (x1 + x2) / 2; v2 = new KeyValuePair <double, T>(x2, _Function(x2)); n2 = _Values.AddAfter(n1, v2); } while (n2 != null); progress?.Report(1d); if (eps1.Equals(0d)) { eps1 = eps0; } Set(ref _Eps0, eps1, nameof(Eps0)); Set(ref _Min, min_max.Min, nameof(Min)); Set(ref _Max, min_max.Max, nameof(Max)); Set(ref _Integral, I, nameof(Integral)); return(eps1); }
private void timerChartBind_Tick(object sender, EventArgs e) { DataRow row; if (lTotalCount < TagLJValue.GetTotalCount(UnitNO)) { lTotalCount = TagLJValue.GetTotalCount(UnitNO); dtChart.Dispose(); dtChart = null; dtChart = TagLJValue.GetTotalDataWithNewTable(UnitNO); if (dtChart.Rows.Count > 0) { dHourOfYear = double.Parse(dtChart.Rows[dtChart.Rows.Count - 1]["HourOfYear"].ToString()); if (rdoTotalHours.Checked == true) { dXMin = double.Parse(dtChart.Rows[0]["HourOfYear"].ToString()); for (int i = 0; i < sChartNames.Length; i++) { chartTemp = (Chart)pnlData.Controls.Find(sChartNames[i], true)[0]; chartTemp.Series[0].XValueMember = "HourOfYear"; chartTemp.Series[0].XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Double; chartTemp.ChartAreas[0].AxisX.MajorGrid.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Auto; chartTemp.ChartAreas[0].AxisX.MajorGrid.Interval = (int)(dHourOfYear - dXMin) / bHourOfYearGridCount; chartTemp.ChartAreas[0].AxisX.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Auto; chartTemp.ChartAreas[0].AxisX.Interval = (int)(dHourOfYear - dXMin) / bHourOfYearGridCount; chartTemp.ChartAreas[0].AxisX.Title = "供热期累计小时数(h)"; chartTemp.ChartAreas[0].AxisX.LabelStyle.Format = "0"; //chartTemp.ChartAreas[0].AxisY.Title = string.Format(sYValueLabels[i], Math.Round(double.Parse(dtChart.Rows[dtChart.Rows.Count - 1][sYValueMembers[i]].ToString()), 2)); chartTemp.Series[0].LegendText = string.Format(sYValueLabels[i], Math.Round(double.Parse(dtChart.Rows[dtChart.Rows.Count - 1][sYValueMembers[i]].ToString()), 2)); } } else { DateTime timeBegin = (DateTime)dtChart.Rows[0]["ValueTime"]; DateTime timeEnd = (DateTime)dtChart.Rows[dtChart.Rows.Count - 1]["ValueTime"]; for (int i = 0; i < sChartNames.Length; i++) { chartTemp = (Chart)pnlData.Controls.Find(sChartNames[i], true)[0]; chartTemp.Series[0].XValueMember = "ValueTime"; chartTemp.Series[0].XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.DateTime; chartTemp.ChartAreas[0].AxisX.MajorGrid.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Hours; chartTemp.ChartAreas[0].AxisX.MajorGrid.Interval = (int)(timeEnd - timeBegin).TotalHours / bDateTimeGridCount; chartTemp.ChartAreas[0].AxisX.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Hours; chartTemp.ChartAreas[0].AxisX.Interval = (int)(timeEnd - timeBegin).TotalHours / bDateTimeGridCount; chartTemp.ChartAreas[0].AxisX.Title = "日期时间(t)"; chartTemp.ChartAreas[0].AxisX.LabelStyle.Format = "yyyy-MM-dd HH:mm"; //chartTemp.ChartAreas[0].AxisY.Title = string.Format(sYValueLabels[i], Math.Round(double.Parse(dtChart.Rows[dtChart.Rows.Count - 1][sYValueMembers[i]].ToString()), 2)); chartTemp.Series[0].LegendText = string.Format(sYValueLabels[i], Math.Round(double.Parse(dtChart.Rows[dtChart.Rows.Count - 1][sYValueMembers[i]].ToString()), 2)); } } row = dtChart.NewRow(); row["ValueTime"] = DateTime.Parse(dtChart.Rows[dtChart.Rows.Count - 1]["ValueTime"].ToString()).AddSeconds(1); row["HourOfYear"] = dHourOfYear + 0.0001; dtChart.Rows.Add(row); } } row = dtChart.NewRow(); row["ValueTime"] = DateTime.Now; dHourOfYear += timerChartBind.Interval / 1000 / 3600d; row["HourOfYear"] = dHourOfYear; MinMaxValue mmv = TagLJValue.GetMinMaxValue(F3225, UnitNO); //chartRLLJZC.ChartAreas[0].AxisX.Title = "供热期累计小时数:" + Math.Round(dHourOfYear, 4).ToString("0.0000") // + " 累计开始时间:" + mmv.BeginDateString + "\n燃料支出最小值:" // + Math.Round(mmv.MinValue / 10000, 4).ToString("0.0000") + " 燃料支出最小值时间:" + mmv.MinDateString // + "\n燃料支出最大值:" + Math.Round(mmv.MaxValue / 10000, 4).ToString("0.0000") + " 燃料支出最大值时间:" // + mmv.MaxDateString + "\n燃料支出平均值:" + TagLJValue.GetTotalDataAvg(F10, UnitNO) + "万元/小时"; lblMsg.Text = "供热期累计小时数:" + Math.Round(dHourOfYear, 4).ToString("0.0000") + " 累计开始时间:" + mmv.BeginDateString + " 双击每个图可以放大显示。"; dtChart.Rows.Add(row); foreach (string sChartName in sChartNames) { chartTemp = (Chart)pnlData.Controls.Find(sChartName, true)[0]; chartTemp.DataSource = dtChart; chartTemp.DataBind(); } }
private static void TimerThreadRunner() { MinMaxValue<long> sleepTime = new MinMaxValue<long>(0); List<IntervalTimer> deprecated = new List<IntervalTimer>(); while (true) { if (_threadWait.WaitOne((int)sleepTime.Min) == true) break; using (_lock.ReaderLock) { deprecated.Clear(); sleepTime.Reset(100); foreach (var timer in _queue) { long remainTime = timer.Interval - (_stopwatch.ElapsedMilliseconds - timer._lastCallTime); if (remainTime > 0) sleepTime.Value = remainTime; else { timer._lastCallTime = _stopwatch.ElapsedMilliseconds; SpinWorker.Dispatch(timer._action); // 호출횟수 만료 if (timer._remainCount != -1 && --timer._remainCount == 0) deprecated.Add(timer); } } } foreach (var timer in deprecated) timer.Dispose(); } _timerThread = null; }