title: How does InverseTransformPoint work? Unity C#
body: <p>From <a href="https://docs.unity3d.com/ScriptReference/Transform.InverseTransformPoint.html" rel="nofollow noreferrer">Unity scripting API</a></p>
  
  <blockquote>
    <p>Transforms position from world space to local space.</p>
  </blockquote>
  
  <p>But I don't understand how it is doing that in the block below</p>
  
  <pre><code>private Vector3 PlaceOnCircle(Vector3 position) {
      Ray ray = Camera.main.ScreenPointToRay (position);
      Vector3 pos = ray.GetPoint (0f);
  
      // Making 'pos' local to... ?
      pos = transform.InverseTransformPoint (pos);
  
      float angle = Mathf.Atan2 (pos.x, pos.z) * Mathf.Rad2Deg;
      pos.x = circle.radius * Mathf.Sin (angle * Mathf.Deg2Rad);
      pos.z = circle.radius * Mathf.Cos (angle * Mathf.Deg2Rad);
      pos.y = 0f;
  
      return pos;
  }
  </code></pre>
  
  <p>Is it making 'pos' local to itself or local to the GameObject that has this script?</p>
  
  <p>Why is the argument for the InverseTransformPoint the variable itself? </p>
  
  <p>Wouldn't it be enought to write <code>pos = transform.InverseTransformPoint();</code> which would make 'pos' local to the mentioned transform?</p>