The EllipticalArcTo row, is a mystery. So, time to give it a look at, like I did the Ellipse row.
So, I need a semicircle to play with, so using a 2″ circle and a 3″ horizontal line, align them on Center and Middle, select them both and from the developer tab use the Fragment Operation. Now there will be two semicircles one going up, the other down.
To make it easier, I will start with the semicircle going up and do some cleanup, I can look at the other one later. The Geometry section will have two rows, a RelMoveTo and an EllipticalArcTo. I like to go left to right, so the first thing to do is swap the X,Ys of the two rows. Remember one is Rel… the other is not, so you will have to add Hieght or Width to one of the formula and remove them from the other. Actually, the only difference between the semicircle going left to right and the one going right to left is the X,Ys. the values of A,B,C & D are unchanged. For a semicircle, C is 0 and D is 0, so it is only a matter of determining A and B.
(Actually, I switched the RelMoveTo to a MoveTo to simplify things.)
Next step is to add a Control handle for the X,Y of the MoveTo row so I can play with the semicircle.
For clarity, I added another geometry section that created an “X” based on the position A,B. For a semicircle, that location is half way between the two X values and at the top of the semicircle.
Next up is the removal of the dependency on Height and Width. Since this is based on a 2″ circle, I created a user cell call Radii with a value of 1. I replaced all references to Height with User.Radii and all references to Width with User.Radii*2.
So, the Value of A is the midpoint between the two X values and B is the Y value plus the radius.
As to the semicircle descending, that is just a matter of subtracting the radius from tha value of Y in B rather than adding it.
So, now you have an EllipticalArcTo Row based on the X,Y position and no reference to the Hieght or Width of the shape.
I hope you find this useful.
John… Visio MVP in x-aisle