public override Vector2d GetThirdDerivative(double t) { /* * Maxima: * s: t * m + n; * x: a*sqrt(%pi)*fresnel_c(s/(a*sqrt(%pi))); * y: a*sqrt(%pi)*fresnel_s(s/(a*sqrt(%pi))); * z: 1; * result: diff([ x, y, z ], t, 3); * * result: [-(m^3*sin((m*t+n)^2 / (2*a^2))) / a^2 - (m^3*(m*t+n)^2*cos((m*t+n)^2 / (2*a^2))) / a^4, * (m^3*cos((m*t+n)^2 / (2*a^2))) / a^2 - (m^3*(m*t+n)^2*sin((m*t+n)^2 / (2*a^2))) / a^4, * 0] * * m^3*[-(sin((m*t+n)^2 / (2*a^2))) / a^2 - ((m*t+n)^2*cos((m*t+n)^2 / (2*a^2))) / a^4, * (cos((m*t+n)^2 / (2*a^2))) / a^2 - ((m*t+n)^2*sin((m*t+n)^2 / (2*a^2))) / a^4, * 0] * * m^3*[-(sin(s^2 / (2*a^2))) / a^2 - (s^2*cos(s^2 / (2*a^2))) / a^4, * (cos(s^2 / (2*a^2))) / a^2 - (s^2*sin(s^2 / (2*a^2))) / a^4, * 0] */ double m = this.ttransform.A; double m3 = m * m * m; double dl = this.GetL(t); Vector2d v = ClothoUtils.DClotho3(dl, this.InvertY, this.A); v = v.Mul(m3); return(this.transform.DoTransform(v)); }