You do need any of your local variable, just wire output of your calculation to the input of your VIs. And place your subVI inside the while loop if you want it to run after each value change on X3 and Y3.
What you do here is basically just run your subVI once with whatever values X3 and Y3 have in parallel of calculating the new X3 and Y3 values. I bet you have pretty weird results. It is because LabVIEW use data flow as principle for ordering things.