# Ballistics Utility

## Public Methods

| Return Type | Name                  | Signature                              | Description                                                                                                       |
| ----------- | --------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Vector3** | `GetWindVector`       | (Vector3, float)                       | Calculates & returns wind vector in m/s.                                                                          |
| **Vector3** | `GetGravity`          | (float, float)                         | Calculates & returns a gravity vector.                                                                            |
| **float**   | `GetKineticEnergy`    | (Vector3, float)                       | Calculates & returns a kinetic energy based on velocity & mass.                                                   |
| **void**    | `UpdateKEAndVelocity` | (ref Vector3, ref float, float, float) | Updates the given kinetic energy to match the new kinetic energy, updates given the velocity accordingly as well. |
| **Vector3** | `GetDragVector`       | (Vector3, DragGModel, float, float)    | Calculates & returns a drag vector based on velocity, drag model & ballistic coefficient.                         |
| **Vector3** | `GetSpinDrift`        | (ref Vector3, double, float, float)    | Calculates & returns a spin drift vector based on previous drift & stability factor.                              |
| **double**  | `GetStability`        | (float...)                             | Calculates & returns stability factor of a bullet based on bullet properties.                                     |
| **double**  | `GetRetardation`      | (double, double,DragGModel)            | Calculates & returns retardation factor based on velocity, ballistic coefficient and drag model.                  |
