This drawing is an instructive example to do with Metapost -- the drawing language that is integrated with lualatex.
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
numeric u; u = 42;
path a, b, c;
a = unitsquare shifted -(1/2, 1/2) scaled 1/3 u;
b = a shifted (-u, -u);
c = a shifted (u, -2u);
forsuffixes s = a, b, c:
draw s;
label("$" & str s & "$", center s);
endfor
ahangle := 30;
drawarrow center a -- center b cutbefore a cutafter b;
drawarrow center a -- center c cutbefore a cutafter c;
z1 = 0.5 [center a, center b];
z2 = whatever[center a, center c];
y2 = y1;
for i=1, 2:
picture p; p = thelabel("$" & decimal i & "$", z[i]);
unfill bbox p; draw p;
endfor
endfig;
\end{mplibcode}
\end{document}
Compile this example with lualatex to produce a PDF that looks like this:

Notes
The approach here is to define three square <path> variables, a, b, and c shifted to the appropriate locations. Draw them and label them, then add the two arrows. The interesting bit is then this:
z1 = 0.5 [center a, center b];
z2 = whatever[center a, center c];
y2 = y1;
This defines two <pair> variables, z1 and z2. z1 is defined to be half way between the centre of a and the centre of b; z2 is defined to be somewhere along the line from the centre of a to the centre of c. Then in the third step the y-coordinate of z2 is set to be the same as the y-coordinate of z1. Which is what the OP wanted. MP allows you to have partial equations like this, provided only that all the points are defined before you try to draw them.
at (intersection of l1--{[shift=(right:1)]l1 and a--c)would find the position you want. But it's not so easy withautoplacement. – Qrrbrbirlbel Nov 23 '23 at 16:21\node at ...;i.e. place the node separately at the intersection of paths. – cfr Nov 23 '23 at 16:32[]for circles and arcs) instead of the deprecated versions but in this case I don't understand whyintersection cs:/intersection ofis so bad. It was a really good way to find an intersection between two lines (and not just two straight paths). Technically, you could also use theintersectionslibrary on-the-fly so you wouldn't have to create the paths on the user-level. Myon height ofkey does a very specialized version of it as well. – Qrrbrbirlbel Nov 25 '23 at 14:10intersection cs:also allowed to find an intersection between a line and a circle node (neededcalclibrary, I believe) and the results were not always good. But for straight lines, it works very well. If it ever vanishes, we can add it back via our owncs:if needed. – Qrrbrbirlbel Nov 25 '23 at 14:12