Why does Vector3 return only (0,0,0) in the case of x,y and z being small (e.g. 0.05f)?

Hello everybody,

I’m working on computing points on the circumference of a circle in order to render it with Vectrosity. In order to get these points, I make use of Vector3.Lerp(). There is a given radius and origin of the circle and I’ve got two direction Vectors which are based on a plane (context of linear algebra) which pretty much describe the bearing of the circle.

So this is the snippet which should get the job done:

        // compute circle points
        List<Vector3> circlePoints = new List<Vector3>();
        float r = intersectionCircle.GetRadius(); // 1 in this case
        Vector3 o = intersectionCircle.GetOrigin(); // (0,0,0) in this case
        Vector3 dirA = new Vector3(-0.4f, 0.0f, -0.9f);
        Vector3 dirB = new Vector3(-1f, 0.0f, 0f);
        float csScale = 0.05f;

        for (int i = 0; i < 20; i++)
        {
            float ratio = (float)i / 20f;
            Vector3 pointOnCircumference = Vector3.Lerp(dirA, dirB, ratio);
            float x = pointOnCircumference.x * csScale;
            float y = pointOnCircumference.y * csScale;
            float z = pointOnCircumference.z * csScale;
            Debug.Log(x + " " + y + " " + z);
            circlePoints.Add(new Vector3(x, y, z));
            Debug.Log(new Vector3(x, y, z));
        }

x, y and z are holding the proper values, but as soon as I use these values to construct a Vector3 object, x, y and z of the Vector3 object equal 0 in every case.

What’s going on with that behavior?

They’re not equal to zero. It’s just that Debug.Log(new Vector3(x, y, z)) truncates the value of each element shown in the console window to 1 d.p.