With this function I want to draw a recursive tree but, when I call this function the direction of second line (which I want to draw recursively changes each time).
public void drawTree(int n, float l, float x, float y, float a, float b, float c,
float k1, float k2, float k3, float m2, float m3)
//float k = (float)Math.Pow(-1, n+1);
Pen p = new Pen(Color.Black);
Graphics gr = this.CreateGraphics();
float l1 = k1 * l;
float l2 = k2 * l;
float l3 = k3 * l;
float g = m3 * l;
float f = m2 * l;
gr.DrawLine(p, x, y, x + l * cos(a), y - l * sin(a));
if (n == 1) return;
drawTree(n - 1, l2, x + f * cos(a), y - f * sin(a), (a - b), b, c, k1, k2, k3, m2, m3);
Every time you compute the new point, you're subtracting it from
y which if sin(a) was positive, would be fine, but since it's not, it flips from being a negative subtraction to a positive subtraction.
If you iterate one level deeper, the next line should be drawn correctly.
Try either using a positive value
Math.Abs the resulting