Okay, using Sigurs advice, I can solve for x and z of point C.
The code below seems to work correctly in my application. I verified the output of a few points with my CAD software.
Is there a cleaner method, maybe using Matrix or Vector math? The equations are extremely long. I broke the equation for c.z up into a few parts to try and reduce typos.
(c.x - a.x)^2 + (c.y - a.y)^2 + (c.z - a.z)^2 = ac^2
a = [0, 0, 0]
x^2 + y^2 + z^2 = AC^2
(c.x - b.x)^2 + (c.y - b.y)^2 + (c.z - b.z)^2 = bc^2
known variables
b.x, b.y, b.z, c.y, ab, ac, bc
find c.x and c.z
below is my equations coded in ruby that has passed my unit tests so far.
c.x = ( ac**2 - bc**2 + b.x**2 + b.y**2 - 2*c.y*b.y + b.z**2 - 2*c.z*b.z ) / (2*b.x)
aa = 4*ac**2*b.z - 4*bc**2*b.z + 4*b.x**2*b.z + 4*b.y**2*b.z - 8*c.y*b.y*b.z + 4*b.z**3
bb = 2*ac**2*bc**2 - ac**4 + 2*ac**2*b.x**2 - 2*ac**2*b.y**2 + 4*ac**2*b.y*c.y + 2*ac**2*b.z**2 - bc**4 + 2*bc**2*b.x**2 + 2*bc**2*b.y**2 - 4*bc**2*b.y*c.y + 2*bc**2*b.z**2 - b.x**4 - 2*b.x**2*b.y**2 + 4*b.x**2*b.y*c.y - 2*b.x**2*b.z**2 - 4*b.x**2*c.y**2 - b.y**4 + 4*b.y**3*c.y - 2*b.y**2*b.z**2 - 4*b.y**2*c.y**2 + 4*b.y*b.z**2*c.y - b.z**4 - 4*b.z**2*c.y**2
c.z = 4*b.x**2 * ( ((aa) / 8*b.x**2) + (Math.sqrt(bb) / (2*b.x)) ) / (4*b.x**2 + 4*b.z**2)