Exemplo n.º 1
0
    //Function
    public void Aerodynamics(Vector3 airVelocity)
    {
        Vector3 averageVelocity = (P1.Velocity + P2.Velocity + P3.Velocity) / 3;

        vecRelativeVelocity = averageVelocity - airVelocity;

        Vector3 crossNorm = Vector3.Cross(P2.Position - P1.Position, P3.Position - P1.Position);

        vecSurfaceNormal = crossNorm / crossNorm.magnitude;

        float a0 = 0.5f * crossNorm.magnitude;

        fCrossSectionalArea = a0 * (Vector3.Dot(vecRelativeVelocity, vecSurfaceNormal) / vecRelativeVelocity.magnitude);

        float   Aero     = 1.0f * Mathf.Pow(vecRelativeVelocity.magnitude, 2.0f);
        Vector3 Dynamics = 1.0f * fCrossSectionalArea * vecSurfaceNormal;

        Vector3 AeroForce = -0.5f * (Aero * Dynamics);

        P1.addForce(AeroForce / 3);
        P2.addForce(AeroForce / 3);
        P3.addForce(AeroForce / 3);
    }