# Why do scale and position not correspond?

I expand a plane programatically to 10,1, 10.

``````ground.transform.localScale = new Vector3(x_max, 1, z_max);
``````

Then I programatically add a cube (wall) to position (0, 0, 10).

``````    // North wall.
GameObject wall = GameObject.CreatePrimitive(PrimitiveType.Cube);
{
wall.name = "NorthWall";
wall.transform.position = new Vector3(0, 0.5f, z_max);
wall.transform.localScale = new Vector3(x_max * 2, 1, 0.1f);

Material material = Resources.Load("Walls", typeof(Material)) as Material;
Renderer mesh = wall.GetComponent<Renderer>();
mesh.material = material;
}
``````

I’m expecting the wall to be on the edge of the plane. However it is only about 1/5th the distance. I have to set the wall to position (0,0, 50) to be on the edge.

Why?

The plane primitive has a default dimension of 10x10 (not 1x1 which you are assuming, like other primitives). Thus you are scaling the plane to 100x100 (centered at origin, I presume). This would mean that it is 50 units in half-width and thus, the edge that you’re referring to would be located at (0,0,50).

So to fix your code, you could take into account the default size by using a scale factor of 1/10,

``````ground.transform.localScale = new Vector3(x_max / 10, 1, z_max / 10);
``````