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?
Answer by tanoshimi · Mar 08, 2016 at 09:15 AM
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.
If you wish to control numbers more directly in log outputs, you may want to take a look at $$anonymous$$icrosoft's information on Standard Numeric Format Strings.
As an example of how you can add further accuracy to your current listing, you could try:
Debug.Log(new Vector3(x, y, z).ToString("F5"));
That way, you will see the vector presented with 5 decimal places of accuracy.