fx = rx / rw fy = ry / rw fx = f0x + u * (flx - f0x + v * (frx - flx)) fy = f0y + u * (fly - f0y + v * (fry - fly)) fz = f0z + u * (flz - f0z + v * (frz - flz)) rx = r0x + s * (rlx - r0x + t * (rrx - rlx)) ry = r0y + s * (rly - r0y + t * (rry - rly)) rz = r0z + s * (rlz - r0z + t * (rrz - rlz)) rx = r0x + s * rlx - s * r0x + s * t * rrx - s * t * rlx = (1 - s) * r0x + s * ((1 - t) * rlx + t * rrx) <=> s = (rx - r0x) / ((1 - t) * rlx + t * rrx - r0x) s = (rx - r0x) / ((1 - t) * rlx + t * rrx - r0x) s = (ry - r0y) / ((1 - t) * rly + t * rry - r0y) s = (rz - r0z) / ((1 - t) * rlz + t * rrz - r0z) s = (rx - r0x) / (tlx + t * (rrx - rlx) - r0x) s = (ry - r0y) / ((1 - t) * tly + t * rry - r0y) s = (rz - r0z) / ((1 - t) * tlz + t * rrz - r0z) # ry = (1 - s) * r0y + s * ((1 - t) * rly + t * rry) # <=> (ry - (1 - s) * r0y) / s = (1 - t) * rly + t * rry # <=> t = ((ry - (1 - s) * r0y) / s - rly) / (rry - rly) # = ((ry - r0y + s * r0y) / s - rly) / (rry - rly) # = ((ry - r0y) / s + r0y - rly) / (rry - rly) # = (ry - r0y) / (s * (rry - rly)) + (r0y - rly) / (rry - rly) # = (ry - r0y) / ((rx - r0x) / ((1 - t) * tlx + t * rrx - r0x) * (rry - rly)) + (r0y - rly) / (rry - rly) ry = r0y + s * (rly - r0y + t * (rry - rly)) = r0y + ((rx - r0x) / ((1 - t) * tlx + t * rrx - r0x)) * (rly - r0y + t * (rry - rly)) a = (1 - k) * x + k * y = x + k * (y - x) <=> a - x = k * (y - x) <=> k = (a - x) / (y - x)