Look, I feel like Joseph and me already provided ample help and **various ways** to control the arc height.

The only difference I see now that you’re constructing the arc form three points, is that they are more *bulbous*.

What you need to understand about the `BiArc` **“the height of each arc is equal to its width. This means that your arc height is equal to the distance between two end points divided by 2.” The arc is laterally constrained between the vectors.**

If you want to **manually** control each arc height, which kind of seems to defeat the purpose of using Grasshopper, you need to enter as many heights as you have arcs.

Let’s say you have three lists with 10 points each. Now you want to use these lists of points to construct arcs. Two lists contain the end points, but another list contains only middle points between the end points that you still need to offset in z-direction. Now if you provide only a single vector to move the points, it usually is applied to all the points, hence all will be displaced to the same altitude.

However, if you want some to have other values, you need to provide 10 height values, where each value moves the corresponding point (at the same index as the value).

There’s really no need to repeat the exact same step over and over ad absurdum, you just need to get familiar with lists.

Better than entering all the heights by hand, would be to come up with some **set of rules** that defines for instance where arcs have a maximum and other arcs have a minimum height (like I did above with random values).