JSFiddle - React, Tailwind, and code Playground

JavaScript

const sin45deg = Math.sqrt(2)/2;
const xr = (r, dr) => (t => r * sin45deg * (1 - t + Math.sin(t) - Math.cos(t) + Math.PI) + dr),
    xdr = (r, dr) => (t => r * sin45deg * (-1 + Math.cos(t) + Math.sin(t))),
    yr = (r, dr) => (t => r * sin45deg * (1 + t - Math.sin(t) - Math.cos(t) - Math.PI) + dr),
    ydr = (r, dr) => (t => r * sin45deg * (1 - Math.cos(t) + Math.sin(t)));

const getTForX = (r, dr, x0, nMax = 100) => {
    const x = xr(r, dr), xd = xdr(r, dr);
    let t = Math.PI, xt = x(t) - x0;
    const a_dt = [], a_xt = [];
    for(let i = 0; i < nMax; i++){
        const tNext = t - xt / xd(t);
        xt = x(tNext) - x0;
        const dt = tNext - t;
        t = tNext;
        a_dt.push(dt);
        a_xt.push(xt);
        if(Math.abs(xt) < 1e-20 || Math.abs(dt) < 1e-12){
            break;
        }
        else if(i === nMax-1){
            console.error({r, dr, x0}, {a_xt, a_dt});
            throw 'not converging on x; choose different initial values';
        }
    }
    return t;
}

const getTForY = (r, dr, y0, nMax = 100) => {
    const y = yr(r, dr), yd = ydr(r, dr);
    let t = Math.PI, yt = y(t) - y0;
    const a_dt = [], a_yt = [];
    for(let i = 0; i < nMax; i++){
        const tNext = t - yt / yd(t);
        yt = y(tNext) - y0;
        const dt = tNext - t;
        a_dt.push(dt);
        a_yt.push(yt);
        t = tNext;
        if(Math.abs(yt) < 1e-20 || Math.abs(dt) < 1e-12){
            break;
        }
        else if(i === nMax-1){
            console.error({r, dr, y0}, {a_yt, a_dt});
            throw 'not converging on x; choose different initial values';
        }
    }
    return t;
}

const x0 = 1, y0 = 0;
const x1 = 0.8, y1 = 0.5;

const eq0 = (r, dr) => /*Math.abs*/(getTForX(r, dr, x0) - getTForY(r, dr, y0));
const eq1 = (r, dr) => /*Math.abs*/(getTForX(r, dr, x1) - getTForY(r, dr, y1));

const eps_diff = 1e-3;
const J0 = (r, dr) => {
    const v0 = eq0(r, dr);
    return [(eq0(r+eps_diff, dr)-v0)/eps_diff, (eq0(r,...