I think it's more intuitive this way. When you draw a rectangle, you start with a corner point and then draw the width and height. With a circle, you go to the center and then draw it with a radius.
In my opinion, the easylang positioning shoud not be based on any off-computer drawing process specific to the shape type, but on the result, consistently for all shape types. Only this meets e.g. the expectation that change to shape type retains position.
I wish your project every success.