private void instantiateSparks(Collision2D col) { if (col.gameObject.layer != Consts.FloorLayer) { return; } var kmPerH = CalculateUtils.UnitsPerSecondToKmPerH(rb.velocity.magnitude); if (kmPerH < 5) { return; } float angle = CalculateUtils.Vector2ToAngle(rb.velocity); if (Time.time > lastTime + SPARKS_INSTANTIATE_PERIOD) { lastTime = Time.time; for (int i = 0; i < col.contactCount; i++) { sparksParticle = particleSystemContainer.NextAndPlay(); var emission = sparksParticle.emission; emission.rateOverTime = kmPerH * EMISSION_RATE; sparksParticle.transform.localScale = new Vector3(kmPerH * SCALE_RATE, 1, 1); sparksParticle.transform.position = new Vector3(col.GetContact(i).point.x, col.GetContact(i).point.y, Z_POSSITION); sparksParticle.transform.rotation = Quaternion.Euler(0, 0, angle); } } }
private void detect(Car car, ContactPoint2D[] burnContacts, PiekaMaterial frontWheelMaterial, PiekaMaterial rearWheelMaterial) { var velocityInKmPerH = CalculateUtils.UnitsPerSecondToKmPerH(car.FrontPartRigidbody.velocity.magnitude); handleBurn(car.FrontWheelCollider, car.FrontWheelSpriteRenderer, BurnInfo.WhichWheelEnum.FRONT, car.FrontWheel.AngularVelocity < 0 ? BurnInfo.DirectionEnum.LEFT : BurnInfo.DirectionEnum.RIGHT, car.Drive.FrontWheelKmPerH, velocityInKmPerH, burnContacts, frontWheelMaterial); handleBurn(car.RearWheelCollider, car.RearWheelSpriteRenderer, BurnInfo.WhichWheelEnum.REAR, car.RearWheel.AngularVelocity < 0 ? BurnInfo.DirectionEnum.LEFT : BurnInfo.DirectionEnum.RIGHT, car.Drive.RearWheelKmPerH, velocityInKmPerH, burnContacts, rearWheelMaterial); }
void Update() { float frontWheelRPM = Mathf.Abs(FrontWheelRpm); float rearWheelRPM = Mathf.Abs(RearWheelRpm); FrontWheelKmPerH = CalculateUtils.WheelRpmToKmPerHour(frontWheelRPM, frontWheel.DiameterInMeters); RearWheelKmPerH = CalculateUtils.WheelRpmToKmPerHour(rearWheelRPM, rearWheel.DiameterInMeters); }
public void TestCalculateVectorAngle() { Assert.AreEqual(0, CalculateUtils.Vector2ToAngle(new Vector2(1, 0)), 1); Assert.AreEqual(45, CalculateUtils.Vector2ToAngle(new Vector2(1, 1)), 1); Assert.AreEqual(90, CalculateUtils.Vector2ToAngle(new Vector2(0, 1)), 1); Assert.AreEqual(135, CalculateUtils.Vector2ToAngle(new Vector2(-1, 1)), 1); Assert.AreEqual(180, CalculateUtils.Vector2ToAngle(new Vector2(-1, 0)), 1); Assert.AreEqual(225, CalculateUtils.Vector2ToAngle(new Vector2(-1, -1)), 1); Assert.AreEqual(270, CalculateUtils.Vector2ToAngle(new Vector2(0, -1)), 1); Assert.AreEqual(315, CalculateUtils.Vector2ToAngle(new Vector2(1, -1)), 1); }
/// <summary> /// Places a figure on the tile /// </summary> /// <param name="currentTile">The tile, to put figure on</param> /// <param name="side">Which side of tile should be the figure placed</param> public bool PlaceFigure(GamePlay gamePlay, int side) { var tileToPlace = gamePlay.PlacedTiles.Last(); if (!CanPlaceFigure(tileToPlace, side, gamePlay)) { return(false); } if (gamePlay.FigureDown) { gamePlay.FigureDown = false; gamePlay.CurrentSideForFigure = -1; IFigure figureToGetDown = null; if (side == 4 && tileToPlace is Church) { figureToGetDown = tileToPlace.CenterFigure; tileToPlace.CenterFigure = null; } else { figureToGetDown = tileToPlace.Directions[side].Figure; tileToPlace.Directions[side].Figure = null; } if (figureToGetDown != null) { CalculateUtils.GiveBackFigureToOwner(figureToGetDown, ref gamePlay.Players); } return(false); } else { var playerFigure = gamePlay.CurrentPlayer.Figures.RemoveAndGet(0); if (side == 4 && tileToPlace is Church) { tileToPlace.CenterFigure = playerFigure; } else { tileToPlace.Directions[side].Figure = playerFigure; } gamePlay.FigureDown = true; gamePlay.CurrentSideForFigure = side; return(true); } }
public static float Angle(SpriteShapeController spriteShapeController, int pointIndex) { var spline = spriteShapeController.spline; var pointsCount = spline.GetPointCount(); if (pointIndex == 0) { return(CalculateUtils.Vector2ToAngle(spline.GetPosition(1) - spline.GetPosition(0))); } if (pointIndex == pointsCount - 1) { return(CalculateUtils.Vector2ToAngle(spline.GetPosition(pointIndex) - spline.GetPosition(pointIndex - 1))); } return(CalculateUtils.Vector2ToAngle(spline.GetPosition(pointIndex + 1) - spline.GetPosition(pointIndex - 1))); }
private void btnTestExpression_Click(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(txtUserExpression.Text)) { throw new Exception(); } double result = CalculateUtils.CalculateInfixExpression(txtUserExpression.Text, "x", 10); ShowSuccessMessage("x = 10, Xo = " + result); } catch (Exception exception) { ShowErrorMessage("Biểu thức không hợp lệ!"); } }
void Update() { var rpm = Mathf.Abs(rb.angularVelocity / 6); float kmPerh = CalculateUtils.WheelRpmToKmPerHour(rpm, wheel.DiameterInMeters); kmPerh -= 10; kmPerh = kmPerh < 0 ? 0 : kmPerh; var block = new MaterialPropertyBlock(); int index = (int)(kmPerh / 10) + 1; index = index > 4 ? 4 : index; while (kmPerh >= 10) { kmPerh -= 10; } block.SetTexture("_ATex", sprites[index - 1].texture); block.SetTexture("_BTex", sprites[index].texture); block.SetFloat("_Trans", kmPerh / 10); GetComponent <SpriteRenderer>().SetPropertyBlock(block); }
private async void btnGetData_Click(object sender, EventArgs e) { // GetData //object data = Utils.FileUtils.ReadSampleDataAsObject(); //var sampleData = SampleData.FromJson(data.ToString()); var budgetsData = await Utils.FileUtils.ReadBudgetDataAsync(); var budgetsDataJson = Budget.FromJson(budgetsData); var contractsData = await Utils.FileUtils.ReadContractsDataAsync(); var contractsDataJson = Contract.FromJson(contractsData); var workData = await Utils.FileUtils.ReadWorkDataAsync(); var workDataJson = Work.FromJson(workData); var budgetsOver = CalculateUtils.CalculateOverImputed(budgetsDataJson, workDataJson); var budgetsUnder = CalculateUtils.CalculateUnderImputed(budgetsDataJson, workDataJson); this.gridOverImputed.DataSource = budgetsOver; this.gridUnderImputed.DataSource = budgetsUnder; }
public void Calculate(ITile currentTile, bool gameover, ref List <Player> players) { int points = 0; var allSurrTiles = TileUtils.GetAllSurroundingTiles(currentTile); bool isCalledChurch = false; allSurrTiles.Add(currentTile); foreach (ITile tile in allSurrTiles) { if (tile is Church) { var church = (Church)tile; List <IFigure> figures; foreach (var side in church.Directions) { if (side.Landscape == Landscape.Road) { isCalledChurch = true; } } points += ChurchCalculatorService.calculate(tile, gameover); if (points != 0) { Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine($"Ennyi pontot találtam: {points}, és CHURCH vagyok"); Console.WriteLine(""); Console.WriteLine(""); figures = FigureService.GetFiguresToGiveBack(tile, 0, true); Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine($"Ennyi figurat találtam: {figures.Count}, és CHURCH vagyok"); Console.WriteLine(""); Console.WriteLine(""); CalculateUtils.DistributePoints(points, figures); foreach (var figure in figures) { CalculateUtils.GiveBackFigureToOwner(figure, ref players); } } points = 0; } } //Searching for castle sides, paying attention to be called only once for (int i = 0; i < 4; i++) { if (currentTile.Directions[i].Landscape == Landscape.Castle) { List <IFigure> figures; var pointDirections = CastleCalculatorService.calculate(currentTile, gameover); foreach (var item in pointDirections) { points = item.Value; Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine($"Erre megyek: {item.Key}, ennyi pontot találtam: {item.Value}, és CASTLE vagyok"); Console.WriteLine(""); Console.WriteLine(""); if (points != 0) { figures = FigureService.GetFiguresToGiveBack(currentTile, item.Key, true); Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine($"Ennyi figurat találtam: {figures.Count}, és CASTLE vagyok"); Console.WriteLine(""); Console.WriteLine(""); CalculateUtils.DistributePoints(points, figures); foreach (var figure in figures) { CalculateUtils.GiveBackFigureToOwner(figure, ref players); } } } break; } } //Searching for road sides, paying attention to be called only once for (int i = 0; i < 4; i++) { if (currentTile.Directions[i].Landscape == Landscape.Road) { List <IFigure> figures; var pointDirections = RoadCalculatorService.calculate(currentTile, gameover); foreach (var item in pointDirections) { points = item.Value; Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine($"Erre megyek: {item.Key}, ennyi pontot találtam: {item.Value}, és ROAD vagyok"); Console.WriteLine(""); Console.WriteLine(""); if (points != 0) { figures = FigureService.GetFiguresToGiveBack(currentTile, item.Key, !isCalledChurch); Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine($"Ennyi figurat találtam: {figures.Count}, és ROAD vagyok"); Console.WriteLine(""); Console.WriteLine(""); CalculateUtils.DistributePoints(points, figures); foreach (var figure in figures) { CalculateUtils.GiveBackFigureToOwner(figure, ref players); } } } break; } } }
private void addEdit() { try { if (_addEditState == 0 || _editingSensor == null) { _editingSensor = new Sensor(); _editingSensor.Logger = _logger; } string functionParameters = ""; int formulaType = 0; if (caclSelectTabs.SelectedTab == linearTab) { formulaType = CalculationBLL.FORMULA_LINEAR; functionParameters = string.Format(CalculationBLL.PARAMS_LINEAR, linear_C0.Text.ToDecimalTryParse().ToDecimalString(), linear_C1.Text.ToDecimalTryParse().ToDecimalString()); } else if (caclSelectTabs.SelectedTab == arcToLengthTab) { formulaType = arc_Degree.Checked ? CalculationBLL.FORMULA_ARCTOLENGTH_DEGREE : CalculationBLL.FORMULA_ARCTOLENGTH_RADIAN; functionParameters = string.Format(CalculationBLL.PARAMS_ARCTOLENGTH_DEGREE, arc_Length.Text.ToDecimalTryParse().ToDecimalString() ); } else if (caclSelectTabs.SelectedTab == polynomialTab) { formulaType = CalculationBLL.FORMULA_POLYNOMIAL; functionParameters = string.Format(CalculationBLL.PARAMS_POLYNOMIAL, poly_C0.Text.ToDecimalTryParse().ToDecimalString(), poly_C1.Text.ToDecimalTryParse().ToDecimalString(), poly_C2.Text.ToDecimalTryParse().ToDecimalString(), poly_C3.Text.ToDecimalTryParse().ToDecimalString(), poly_C4.Text.ToDecimalTryParse().ToDecimalString(), poly_C5.Text.ToDecimalTryParse().ToDecimalString() ); } else if (caclSelectTabs.SelectedTab == temperatureCompTab) { formulaType = CalculationBLL.FORMULA_TEMPRATURE_COMP; functionParameters = string.Format(CalculationBLL.PARAMS_TEMPRATURE_COMP, temp_Tk.Text.ToDecimalTryParse().ToDecimalString(), temp_Ti.Text.ToDecimalTryParse().ToDecimalString(), temp_Tc.SelectedValue,// temp_C0.Text.ToDecimalTryParse().ToDecimalString(), temp_C1.Text.ToDecimalTryParse().ToDecimalString(), temp_C2.Text.ToDecimalTryParse().ToDecimalString(), temp_C3.Text.ToDecimalTryParse().ToDecimalString(), temp_C4.Text.ToDecimalTryParse().ToDecimalString(), temp_C5.Text.ToDecimalTryParse().ToDecimalString() ); } else if (caclSelectTabs.SelectedTab == vwLinearTab) { formulaType = CalculationBLL.FORMULA_VW_LINEAR; functionParameters = string.Format(CalculationBLL.PARAMS_VW_LINEAR, vwLinear_Tk.Text.ToDecimalTryParse().ToDecimalString(), vwLinear_Ti.Text.ToDecimalTryParse().ToDecimalString(), vwLinear_Tc.SelectedValue, // vwLinear_CK.Text.ToDecimalTryParse().ToDecimalString(), vwLinear_Li.Text.ToDecimalTryParse().ToDecimalString(), vwLinear_Lm.Text.ToDecimalTryParse().ToDecimalString(), vwLinear_Bi.Text.ToDecimalTryParse().ToDecimalString(), vwLinear_Bc.SelectedValue, vwLinear_D.Text.ToDecimalTryParse().ToDecimalString(), vwLinear_E.Text.ToDecimalTryParse().ToDecimalString() ); } else if (caclSelectTabs.SelectedTab == vwPoly) { formulaType = CalculationBLL.FORMULA_VW_POLY; functionParameters = string.Format(CalculationBLL.PARAMS_VW_POLY, vwPoly_Tk.Text.ToDecimalTryParse().ToDecimalString(), vwPoly_Ti.Text.ToDecimalTryParse().ToDecimalString(), vwPoly_Tc.SelectedValue, // vwPoly_A.Text.ToDecimalTryParse().ToDecimalString(), vwPoly_B.Text.ToDecimalTryParse().ToDecimalString(), vwPoly_Lm.Text.ToDecimalTryParse().ToDecimalString(), vwPoly_Bi.Text.ToDecimalTryParse().ToDecimalString(), vwPoly_Bc.SelectedValue, vwPoly_C.Text.ToDecimalTryParse().ToDecimalString(), vwPoly_D.Text.ToDecimalTryParse().ToDecimalString(), vwPoly_E.Text.ToDecimalTryParse().ToDecimalString() ); } else if (caclSelectTabs.SelectedTab == tabUserDefine) { try { if (string.IsNullOrEmpty(txtUserExpression.Text)) { throw new Exception(); } double result = CalculateUtils.CalculateInfixExpression(txtUserExpression.Text, "x", 10); formulaType = CalculationBLL.FORMULA_USER_DEFINED; _editingSensor.FormulaFunction = txtUserExpression.Text.Trim(); } catch (Exception) { throw new Exception("Biểu thức không hợp lệ!"); } } _editingSensor.ColumnIndex = columnIndexNumeric.Value.ToInt32TryParse(); _editingSensor.Name = nameTextBox.Text; _editingSensor.Description = descriptionTextBox.Text; _editingSensor.Unit = unitTextBox.Text; _editingSensor.AlarmEnabled = enableAlarmCheckBox.Checked; _editingSensor.MinValue = string.IsNullOrEmpty(minAlarmTextBox.Text) ? null : (decimal?)minAlarmTextBox.Text.ToDecimalTryParse(); _editingSensor.MaxValue = string.IsNullOrEmpty(maxAlarmTextBox.Text) ? null : (decimal?)maxAlarmTextBox.Text.ToDecimalTryParse(); _editingSensor.FunctionParameters = functionParameters; _editingSensor.FormulaType = formulaType; // Add object if (_addEditState == STATE_ADDING) { if (SensorBLL.Current.Insert(_editingSensor)) { ShowSuccessMessage(Resources.Message_AddSensorSuccess); } prepareToAdd(); BindingData(); return; } // Edit object if (_addEditState == STATE_EDITING) { if (SensorBLL.Current.Update(_editingSensor)) { ShowSuccessMessage(Resources.Message_EditSensorSuccess); //BindingData(); } return; } if (_addEditState == STATE_BATCH_EDITING) { if (ShowConfirmMessage("Bạn có muốn cập nhật đồng loạt " + sensorGridView.SelectedRows.Count + " sensors không?") == DialogResult.OK) { SensorBLL.Current.Validate(_editingSensor); _editingSensor.LastEditedDate = DateTime.Now; _editingSensor.LastEditedUser = AppContext.Current.LogedInUser.Username; for (int i = 0; i < sensorGridView.SelectedRows.Count; i++) { int id = sensorGridView.SelectedRows[i].Cells["SensorID"].Value.ToInt32TryParse(); var obj = entityConntext.Sensors.SingleOrDefault(ent => ent.SensorID == id); if (obj != null) { if (updateInfo.Checked) { obj.Unit = _editingSensor.Unit; } if (updateCalc.Checked) { obj.FunctionParameters = _editingSensor.FunctionParameters; obj.FormulaType = _editingSensor.FormulaType; obj.FormulaFunction = _editingSensor.FormulaFunction; } if (updateAlarm.Checked) { obj.AlarmEnabled = _editingSensor.AlarmEnabled; obj.MinValue = _editingSensor.MinValue; obj.MaxValue = _editingSensor.MaxValue; } obj.LastEditedDate = _editingSensor.LastEditedDate; obj.LastEditedUser = _editingSensor.LastEditedUser; } } entityConntext.SaveChanges(); ShowSuccessMessage(Resources.Message_EditSensorSuccess); BindingData(); } } return; } catch (Exception exception) { ShowErrorMessage(exception.Message); if (_addEditState == 1) { entityConntext.Refresh(RefreshMode.StoreWins, _editingSensor); } } }
/// <summary> /// Calculate value of a sensor entry /// </summary> /// <param name="sensorValue"></param> /// <returns></returns> public decimal?Calculating(SensorValue sensorValue) { int formulaType = sensorValue.Sensor.FormulaType; if (formulaType == FORMULA_USER_DEFINED && !string.IsNullOrEmpty(sensorValue.Sensor.FormulaFunction)) { sensorValue.CalcValue = CalculateUtils.CalculateInfixExpression(sensorValue.Sensor.FormulaFunction, "x", sensorValue.RawValue.ToString().Replace(",", ".")).ToDecimalTryParse(); } else { if (string.IsNullOrEmpty(sensorValue.Sensor.FunctionParameters)) { return(null); } string[] parameters; parameters = sensorValue.Sensor.FunctionParameters.Contains("#") ? sensorValue.Sensor.FunctionParameters.Split('#') : new string[] { sensorValue.Sensor.FunctionParameters }; // Calculate value if (formulaType == FORMULA_LINEAR) { if (parameters.Length < 2) { return(null); } sensorValue.CalcValue = CalculateUtils.Linear(sensorValue.RawValue, parameters[0].ToDecimalTryParse(), parameters[1].ToDecimalTryParse()); } else if (formulaType == FORMULA_ARCTOLENGTH_DEGREE) { if (parameters.Length < 1) { return(null); } sensorValue.CalcValue = CalculateUtils.ArcToLengthDegree(sensorValue.RawValue.ToDoubleTryParse(), parameters[0].ToDoubleTryParse()).ToDecimalTryParse(); } else if (formulaType == FORMULA_ARCTOLENGTH_RADIAN) { if (parameters.Length < 1) { return(null); } sensorValue.CalcValue = CalculateUtils.ArcToLengthRadian(sensorValue.RawValue.ToDoubleTryParse(), parameters[0].ToDoubleTryParse()).ToDecimalTryParse(); } else if (formulaType == FORMULA_POLYNOMIAL) { if (parameters.Length < 6) { return(null); } sensorValue.CalcValue = CalculateUtils.Polynomial(sensorValue.RawValue.ToDoubleTryParse(), parameters[0].ToDoubleTryParse(), parameters[1].ToDoubleTryParse(), parameters[2].ToDoubleTryParse(), parameters[3].ToDoubleTryParse(), parameters[4].ToDoubleTryParse(), parameters[5].ToDoubleTryParse()). ToDecimalTryParse(); } else if (formulaType == FORMULA_TEMPRATURE_COMP) { if (parameters.Length < 9) { return(null); } var tcSensor = SensorBLL.Current.GetByID(parameters[2].ToInt32TryParse()); if (tcSensor == null) { return(null); } var tcValue = tcSensor.SensorValues.SingleOrDefault(ent => ent.MeaTime == sensorValue.MeaTime); if (tcValue == null) { return(null); } sensorValue.CalcValue = CalculateUtils.TemperatureComp( sensorValue.RawValue.ToDoubleTryParse(), parameters[0].ToDoubleTryParse(), parameters[1].ToDoubleTryParse(), tcValue.RawValue.ToDoubleTryParse(), // Raw value or calc value??? parameters[3].ToDoubleTryParse(), parameters[4].ToDoubleTryParse(), parameters[5].ToDoubleTryParse(), parameters[6].ToDoubleTryParse(), parameters[7].ToDoubleTryParse(), parameters[8].ToDoubleTryParse() ).ToDecimalTryParse(); } else if (formulaType == FORMULA_VW_LINEAR) { if (parameters.Length < 10) { return(null); } var tcSensor = SensorBLL.Current.GetByID(parameters[2].ToInt32TryParse()); if (tcSensor == null) { return(null); } var bcSensor = SensorBLL.Current.GetByID(parameters[7].ToInt32TryParse()); if (bcSensor == null) { return(null); } var tcValue = tcSensor.SensorValues.SingleOrDefault(ent => ent.MeaTime == sensorValue.MeaTime); if (tcValue == null) { return(null); } var bcValue = bcSensor.SensorValues.SingleOrDefault(ent => ent.MeaTime == sensorValue.MeaTime); if (bcValue == null) { return(null); } sensorValue.CalcValue = CalculateUtils.VwLinear( parameters[0].ToDoubleTryParse(), parameters[1].ToDoubleTryParse(), tcValue.RawValue.ToDoubleTryParse(), // Raw value of Tc Sensor parameters[3].ToDoubleTryParse(), parameters[4].ToDoubleTryParse(), parameters[5].ToDoubleTryParse(), sensorValue.RawValue.ToDoubleTryParse(), // Raw value of current sensor (Lc) parameters[6].ToDoubleTryParse(), bcValue.RawValue.ToDoubleTryParse(), // Raw value of Bc Sensor parameters[8].ToDoubleTryParse(), parameters[9].ToDoubleTryParse() ).ToDecimalTryParse(); } else if (formulaType == FORMULA_VW_POLY) { if (parameters.Length < 11) { return(null); } var tcSensor = SensorBLL.Current.GetByID(parameters[2].ToInt32TryParse()); if (tcSensor == null) { return(null); } var bcSensor = SensorBLL.Current.GetByID(parameters[7].ToInt32TryParse()); if (bcSensor == null) { return(null); } var tcValue = tcSensor.SensorValues.SingleOrDefault(ent => ent.MeaTime == sensorValue.MeaTime); if (tcValue == null) { return(null); } var bcValue = bcSensor.SensorValues.SingleOrDefault(ent => ent.MeaTime == sensorValue.MeaTime); if (bcValue == null) { return(null); } sensorValue.CalcValue = CalculateUtils.VwPoly( parameters[0].ToDoubleTryParse(), parameters[1].ToDoubleTryParse(), tcValue.RawValue.ToDoubleTryParse(), // Raw value of Tc Sensor parameters[3].ToDoubleTryParse(), parameters[4].ToDoubleTryParse(), parameters[5].ToDoubleTryParse(), sensorValue.RawValue.ToDoubleTryParse(), // Raw value of current sensor (Lc) parameters[6].ToDoubleTryParse(), bcValue.RawValue.ToDoubleTryParse(), // Raw value of Bc Sensor parameters[8].ToDoubleTryParse(), parameters[9].ToDoubleTryParse(), parameters[10].ToDoubleTryParse() ).ToDecimalTryParse(); } } return(sensorValue.CalcValue); }