/// <summary> /// Генерирует данные на основле параметром. /// </summary> /// <param name="aHorizont">Горизонт для датчика.</param> /// <param name="aSensorRemove">Удаление датчика от центра рамки.</param> /// <param name="aSideValue">Параметр слитка, влиящий на положение датчика.</param> /// <param name="aRattleFactor">Множитель дребезжания.</param> /// <param name="aShiftFactor">Множитель смещения.</param> /// <param name="aSag">Искривление поверхности.</param> /// <param name="aSensorShift">Смещение датчика от центра стороны.</param> /// <returns></returns> private SensorValue[] GenerateValuesByParameters( double aHorizont, double aSensorRemove, double aSideValue, double aRattleFactor, double aShiftFactor, double aSag, double aSensorShift) { //TODO: реализовать искривление. var values = new SensorValue[(int)(1 + (ingot.Length + prePosition + postPosition) / step)]; var overHorizont = aHorizont + 100; var currentPosition = .0; var currentTime = 0; for (var i = 0; i < values.Length; ++i) { if (currentPosition < prePosition || currentPosition > prePosition + ingot.Length) { values[i] = new SensorValue(overHorizont, currentTime); } else { var value = aSensorRemove; // первоначально - удаление датчика от центра рамки. value = value - aSideValue / 2; // учитываем высоту или ширину слитка слитка. value = value + aRattleFactor * rattle[i]; // дребезжание слитка в пределах 2 мм. value = value + aShiftFactor * shift; // учитываем смещение слитка относительно центра рамки. value = value + rnd.Next((int)(-ingot.Seediness * 1000), (int)(ingot.Seediness * 1000)) / 1000.0; // шероховатость. var sensorValue = new SensorValue(value, currentTime); values[i] = sensorValue; } currentTime++; currentPosition += step; } return values.ToArray(); }
private SensorValue[] GeneratePositionValues(Sensor aSensor) { var values = new SensorValue[(int)(1 + (ingot.Length + prePosition + postPosition) / step)]; var currentPosition = .0; var currentTime = 0; for (var i = 0; i < values.Length; ++i) { var value = currentPosition; // обкновенное линейное движение. values[i] = new SensorValue(value, currentTime); currentTime++; currentPosition += step; } return values; }