Ich weiß jetzt nicht genau ob die Formel korrekt ist, aber sowas lässt sich mMn leichter mit Vektorbetrachtung lösen als mit Geraden-Gleichungen.

Als erstes berechnest du den Vektor (nennen wir ihn mal D) zwischen A und B.

Code:
Xd = Xa - Xb
Yd = Ya - Yb
Als nächstes normalisieren wir diesen Vektor, dh wir bringen ihn auf die Länge 1 indem wir ihn durch seine Länge teilen.
Code:
lengthd = Math.sqrt(Xd*Xd + Yd*Yd)
Xd = Xd / lengthd
Yd = Yd / lengthd
Alles was du jetzt machen musst ist d mit der gewünschten Länge multiplizieren und auf A addieren, dann erhälst du den gewünschten Vektor C
Code:
Xc = z*Xd + Xa
Yc = z*Yd + Ya
Anmerkung:
So wie ich den Vektor hier berechnet habe, zeigt er von A in Richtung B, falls C in der anderen Richtung liegen sollte reicht es einfach z mit -1 zu multiplizieren um den Vektor umzudrehen.

Zieh deine Rechnung ruhig auseinander und nutze mehrere kleine Zwischenvariablen, das macht die Rechnung nachvollziehbarer und erleichert die Fehlersuche, anstatt alles in eine Riesenformel packen zu wollen.