void LoadGlobalUniforms(OpenGL gl, uint shaderProgram) { int KaUniformLocation = gl.GetUniformLocation(shaderProgram, "Ka"); int KdUniformLocation = gl.GetUniformLocation(shaderProgram, "Kd"); int KsUniformLocation = gl.GetUniformLocation(shaderProgram, "Ks"); int IaUniformLocation = gl.GetUniformLocation(shaderProgram, "Ia"); int IlUniformLocation = gl.GetUniformLocation(shaderProgram, "Il"); int IpUniformLocation = gl.GetUniformLocation(shaderProgram, "Ip"); int KUniformLocation = gl.GetUniformLocation(shaderProgram, "K"); gl.Uniform3(KaUniformLocation, 1, Ka.ToFloatArray()); gl.Uniform3(KdUniformLocation, 1, Kd.ToFloatArray()); gl.Uniform3(KsUniformLocation, 1, Ks.ToFloatArray()); gl.Uniform3(IaUniformLocation, 1, Ia.ToFloatArray()); gl.Uniform3(IlUniformLocation, 1, Il.ToFloatArray()); gl.Uniform1(IpUniformLocation, (float)Ip); gl.Uniform1(KUniformLocation, (float)K); int CameraPositionUniformLocation = gl.GetUniformLocation(shaderProgram, "CameraPosition"); int LightPositionUniformLocation = gl.GetUniformLocation(shaderProgram, "LightPosition"); gl.Uniform1(CameraPositionUniformLocation, (float)CameraPosition); gl.Uniform3(LightPositionUniformLocation, 1, LightPosition.ToFloatArray()); int objectColorUniformLocation = gl.GetUniformLocation(shaderProgram, "objectColor"); gl.Uniform3(objectColorUniformLocation, 1, ObjectColor.ToFloatArray()); }
public override int GetHashCode() { int hash = 1; if (IntegratorEnable != false) { hash ^= IntegratorEnable.GetHashCode(); } if (IntegratorSaturationLevel != 0D) { hash ^= IntegratorSaturationLevel.GetHashCode(); } if (Kp != 0D) { hash ^= Kp.GetHashCode(); } if (Ki != 0D) { hash ^= Ki.GetHashCode(); } if (Kd != 0D) { hash ^= Kd.GetHashCode(); } if (Kaw != 0D) { hash ^= Kaw.GetHashCode(); } if (OutputSaturationLevel != 0D) { hash ^= OutputSaturationLevel.GetHashCode(); } return(hash); }
private void sliderKd_ValueChanged(object sender, RoutedPropertyChangedEventArgs <double> e) { Kd = sliderKd.Value; if (boxKd != null) { boxKd.Text = Kd.ToString(FORMAT); } }
void LoadGlobalUniforms(OpenGL gl, uint shaderProgram) { int KaUniformLocation = gl.GetUniformLocation(shaderProgram, "Ka"); int KdUniformLocation = gl.GetUniformLocation(shaderProgram, "Kd"); int KsUniformLocation = gl.GetUniformLocation(shaderProgram, "Ks"); int IaUniformLocation = gl.GetUniformLocation(shaderProgram, "Ia"); int IlUniformLocation = gl.GetUniformLocation(shaderProgram, "Il"); int IpUniformLocation = gl.GetUniformLocation(shaderProgram, "Ip"); int KUniformLocation = gl.GetUniformLocation(shaderProgram, "K"); gl.Uniform3(KaUniformLocation, 1, Ka.ToFloatArray()); gl.Uniform3(KdUniformLocation, 1, Kd.ToFloatArray()); gl.Uniform3(KsUniformLocation, 1, Ks.ToFloatArray()); gl.Uniform3(IaUniformLocation, 1, Ia.ToFloatArray()); gl.Uniform3(IlUniformLocation, 1, Il.ToFloatArray()); gl.Uniform1(IpUniformLocation, (float)Ip); gl.Uniform1(KUniformLocation, (float)K); int MagicCoefUniformLocation = gl.GetUniformLocation(shaderProgram, "magicCoef"); int DistToFragUniformLocation = gl.GetUniformLocation(shaderProgram, "distToFrag"); gl.Uniform1(MagicCoefUniformLocation, MagicCoef); if (EffectMode == Mode.FRAG) { gl.Uniform1(DistToFragUniformLocation, 1); } else { gl.Uniform1(DistToFragUniformLocation, 0); } int CameraPositionUniformLocation = gl.GetUniformLocation(shaderProgram, "CameraPosition"); int LightPositionUniformLocation = gl.GetUniformLocation(shaderProgram, "LightPosition"); int magicPointPositionUniformLocation = gl.GetUniformLocation(shaderProgram, "magicPointPosition"); gl.Uniform1(CameraPositionUniformLocation, (float)CameraPosition); gl.Uniform3(LightPositionUniformLocation, 1, LightPosition.ToFloatArray()); gl.Uniform3(magicPointPositionUniformLocation, 1, magicPointPosition.ToFloatArray()); int objectColorUniformLocation = gl.GetUniformLocation(shaderProgram, "objectColor"); gl.Uniform3(objectColorUniformLocation, 1, ObjectColor.ToFloatArray()); }
void UpdateConfig() { try { if (this.TxtBoxKp.InvokeRequired) { this.Invoke(new UpdateConfigCallback(UpdateConfig)); } else { TxtBoxKp.Text = Kp.ToString(); TxtBoxKi.Text = Ki.ToString(); TxtBoxKd.Text = Kd.ToString(); TxtBoxErrorMax.Text = ErrorMax.ToString(); TxtBoxPWMPeriod.Text = PWMPeriod.ToString(); TxtBoxIntMax.Text = IntMax.ToString(); } } catch (Exception ex) { return; } }
public void Save(ConfigNode node) { node.SetValue("Kp", Kp.ToString()); node.SetValue("Ki", Ki.ToString()); node.SetValue("Kd", Kd.ToString()); }
// ~FGPID(); public override bool Run() { double I_out_delta = 0.0; double Dval = 0; input = inputNodes[0].GetDoubleValue(); if (ProcessVariableDot != null) { Dval = ProcessVariableDot.GetValue(); } else { Dval = (input - Input_prev) / dt; } // Do not continue to integrate the input to the integrator if a wind-up // condition is sensed - that is, if the property pointed to by the trigger // element is non-zero. Reset the integrator to 0.0 if the Trigger value // is negative. double test = 0.0; if (Trigger != null) { test = Trigger.GetValue(); } if (Math.Abs(test) < 0.000001) { switch (IntType) { case eIntegrateType.eRectEuler: I_out_delta = input; // Normal rectangular integrator break; case eIntegrateType.eTrapezoidal: I_out_delta = 0.5 * (input + Input_prev); // Trapezoidal integrator break; case eIntegrateType.eAdamsBashforth2: I_out_delta = 1.5 * input - 0.5 * Input_prev; // 2nd order Adams Bashforth integrator break; case eIntegrateType.eAdamsBashforth3: // 3rd order Adams Bashforth integrator I_out_delta = (23.0 * input - 16.0 * Input_prev + 5.0 * Input_prev2) / 12.0; break; case eIntegrateType.eNone: // No integrator is defined or used. I_out_delta = 0.0; break; } } if (test < 0.0) { I_out_total = 0.0; // Reset integrator to 0.0 } I_out_total += Ki.GetValue() * dt * I_out_delta; if (IsStandard) { output = Kp.GetValue() * (input + I_out_total + Kd.GetValue() * Dval); } else { output = Kp.GetValue() * input + I_out_total + Kd.GetValue() * Dval; } Input_prev2 = test < 0.0 ? 0.0 : Input_prev; Input_prev = input; Clip(); SetOutput(); return(true); }
private void derivativeSlider_Scroll(object sender, EventArgs e) { Kd = (float)derivativeSlider.Value / 20.0f; dLabel.Text = Kd.ToString(); }