So, on further thinking, I'm going to use three lists for this: A, X, & Y. A will be the branching angle relative to the original branch. X& Y will be the branch endpoints, respectively. Since each branching will have an angle of either +A or -A in relation to the previous branch, augment(L₁+A,L₁-A→L₁ will work for that list. For the X & Y lists, something more complicated will be necessary. since I need to preserve the original coordinates for a line( command,
and I need to find the new ones, I'll need to use recursive lists; I'll call them B & C.
EDIT
I finally finished a first draft for the code, but I need some help optimizing and adding features. Here's the preliminary
Code: :ClrHome
:Menu("Input","Seed",A,"Simple",B,"Advanced",C,"Redo Last",D
:Lbl B
:0->Xmin:94->Xmax
:0->Ymin:62->Ymax
:Input "Branching Angle? ",A
:.75->R:17->S:7->M:47->C:0->B
:Goto D
:Lbl A
:rand->E
:Repeat (A>5 and A<175) and (R>.25)
:Input "Seed? ",D
:D->rand
:randInt(0,180->A
:rand->R
:If A≥175 or A≤5 or R≤.25
:Disp "Useless...
:randInt(15,25->S
:End
:7->M
:47->C
:0->B
:Goto D
:Lbl C
:Input "Branching Angle? ",A
:Input "Start Length? ",S
:Input "Ratio? ",R
:Input "Iterations? ",M
:Input "Start X? ",C
:Input "Start Y? ",B
:Lbl D
:B+S->Z
:AxesOff
:ClrDraw
:Line(C,B,C,Z
:{0->L1
:{C->L2
:{Z->L3
:For(I,1,M
:L2->L4
:L3->L5
:augment(L1+A,L1-A->L1
:augment(L2,L2->L2
:augment(L3,L3->L3
:L2+S(R^I)sin(L1->L2
:L3+S(R^I)cos(L1->L3
:For Q,1,dim(L4
:Line(L4(Q),L5(Q),L2(Q),L3(Q)
:Q+dim(L4)
:Line(L4(Q),L5(Q),L2(Ans),L3(Ans
:End
:End