Question: Unity C#: Simulate the movement of a particle using the formula: p(t)=(a*cos^3(t),a(sin^3(t),0) Build off of the script: public class VisualizeWithLineRenderer : MonoBehaviour { [SerializeField] LineRenderer
Unity C#: Simulate the movement of a particle using the formula: p(t)=(a*cos^3(t),a(sin^3(t),0) Build off of the script: public class VisualizeWithLineRenderer : MonoBehaviour {
[SerializeField] LineRenderer lineRenderer; public int NPoints=5;
[Header("Asteroid Parameters")] public float a = 5; public float b = 3; public enum VisualizationName { None, F_YequalX2, //y=f(x); f(x)=x^2 F_YequalSinX, //y=f(x); f(x)=sin(x) YPequalF_via_Euler_F_2X, //y'=f(x,y); f(x,y)=2*x YPequalF_via_Euler_F_Goose, //y'=f(x,y); f(x,y)=... F_Vequal_Circle, //V=V(t); ...or (x,y,z)=(x(t),y(t),z(t)); F_Vequal_Ellipse, //V=V(t); ...or (x,y,z)=(x(t),y(t),z(t));
} // Start is called before the first frame update public System.Func
public VisualizationName visualizationName = VisualizationName.F_YequalX2; void Start() { Vector3 pos = this.transform.position; switch (visualizationName) { case VisualizationName.F_YequalX2: //RenderLine(GetYequalX2(NPoints), Color.green); RenderLine(GetYequalF_X(5, 6, pos.x, pos.y, pos.z,F_YequalX2), Color.green); break; case VisualizationName.YPequalF_via_Euler_F_2X: RenderLine(GetYPequalF_via_Euler(10, 11, pos.x, pos.y, pos.z, F_2X), Color.blue); break; case VisualizationName.F_YequalSinX: RenderLine(GetYequalF_X(Mathf.PI*2,NPoints, pos.x, pos.y, pos.z, F_YequalSinX), Color.yellow); break; case VisualizationName.F_Vequal_Ellipse: RenderLine(GetVequalF_T(Mathf.PI * 2, NPoints, pos.x, pos.y, pos.z, F_Ellipse), Color.magenta);
break; default: print("No visualization exists for this choice!"); break;
}
} ///
} ///
for (int i = 1; i < NPoints; i++) { float x = result[i - 1].x; //, y = Y0+F(x); result[i].x = x + H; result[i].y = Y0 + F(x+H); result[i].z = Z0; } return result; } ///
for (int i = 1; i < NPoints; i++) { float x = result[i-1].x, y = result[i - 1].y; result[i].x = x+H; result[i].y = y +H*F(x,y);//Euler Scheme result[i].z = Z0; } return result; } ///
for (int i = 1; i < NPoints; i++) { angle+=H; result[i] = result[0]+F(angle, a, b); } return result; }
}
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
