Ein Punkt P Koordinatensystem K0: P0 = (x0) = x0*i0 + x0*j0 (y0) Der Punkt P Koordinatensystem K1: P1 = (x1) = x1*i1 + y1*j1 (y1) Der Punkt P Koordinatensystem K2: P2 = (x2) = x2*i2 + y2*j2 (y2) Darstellung von Quellsystem K0 im Zielsystem K1: m0 = (dx1) = dx1*i1 + dy1*j1 d=distance (dy1) i0 = (fx1) = fx1*i1 + sy1*j1 f=längsfaktor (Skalieren) (sy1) s=querfaktor (Scheren) j0 = (sx1) = sx1*i1 + fy1*j1 (fy1) Transformation der Koordinaten für Punkt P: P1 = (x1) = m0 + x0*i0 + y0*j0 = (dx1) + x0*(fx1) + y0*(sx1) = (dx1 + x0*fx1 + y0*sx1) (y1) (dy1) (sy1) (fy1) (dy1 + x0*sy1 + y0*fy1) => P1 = (x1) = (dx1 + x0*fx1 + y0*sx1) => Transformationsmatrix = (dx,fx,sx, dy,sy,fy) (y1) = (dy1 + x0*sy1 + y0*fy1) Darstellung von Quellsystem K1 im Zielsystem K2: m1 = (dx2) = dx2*i2 + dy2*j2 (dy2) i1 = (fx2) = fx2*i2 + sy2*j2 (sy2) j1 = (sx2) = sx2*i2 + fy2*j2 (fy2) Transformation der Koordinaten für Punkt P: P2 = (x2) = m1 + x1*i2 + y1*j2 (y2) => P2 = (x2) = (dx2 + x1*fx2 + y1*sx2) (y2) = (dy2 + x1*sy2 + y1*fy2) Kombination der Transformationen K0 -> K1 -> K2: x1 und y1 von oben einsetzen: => P2 = (x2) = (dx2 + (dx1 + x0*fx1 + y0*sx1)*fx2 + (dy1 + x0*sy1 + y0*fy1)*sx2) (y2) = (dy2 + (dx1 + x0*fx1 + y0*sx1)*sy2 + (dy1 + x0*sy1 + y0*fy1)*fy2) ausmultiplizieren: => P2 = (x2) = (dx2 + dx1*fx2 + x0*fx1*fx2 + y0*sx1*fx2 + dy1*sx2 + x0*sy1*sx2 + y0*fy1*sx2) (y2) = (dy2 + dx1*sy2 + x0*fx1*sy2 + y0*sx1*sy2 + dy1*fy2 + x0*sy1*fy2 + y0*fy1*fy2) x0 und y0 ausklammern: => P2 = (x2) = (dx2 + dx1*fx2 + dy1*sx2 + x0*(fx1*fx2 + sy1*sx2) + y0*(sx1*fx2 + fy1*sx2)) (y2) = (dy2 + dx1*sy2 + dy1*fy2 + x0*(fx1*sy2 + sy1*fy2) + y0*(sx1*sy2 + fy1*fy2)) => dx12 = dx2 + dx1*fx2 + dy1*sx2 fx12 = fx1*fx2 + sy1*sx2 sx12 = sx1*fx2 + fy1*sx2 dy12 = dy2 + dx1*sy2 + dy1*fy2 sy12 = fx1*sy2 + sy1*fy2 fy12 = sx1*sy2 + fy1*fy2 Inverse Transformation K1 -> K0: P0 = (x0) = (y0) P1 = (x1) = (dx1 + x0*fx1 + y0*sx1) (y1) = (dy1 + x0*sy1 + y0*fy1) => x1 = dx1 + x0*fx1 + y0*sx1 <=> x0 = (x1 - dx1 - y0*sx1) / fx1 y1 = dy1 + x0*sy1 + y0*fy1 <=> x0 = (y1 - dy1 - y0*fy1) / sy1 => (x1 - dx1 - y0*sx1) / fx1 = (y1 - dy1 - y0*fy1) / sy1 nach y0 auflösen: x1*sy1 - dx1*sy1 - y0*sx1*sy1 = y1*fx1 - dy1*fx1 - y0*fy1*fx1 y0*fy1*fx1 - y0*sx1*sy1 = y1*fx1 - dy1*fx1 - x1*sy1 + dx1*sy1 y0 * (fy1*fx1 - sx1*sy1) = y1*fx1 - dy1*fx1 - x1*sy1 + dx1*sy1 y0 = (y1*fx1 - dy1*fx1 - x1*sy1 + dx1*sy1) / (fy1*fx1 - sx1*sy1) quot = 1 / (fy1*fx1 - sx1*sy1) y0 = (y1*fx1 - dy1*fx1 - x1*sy1 + dx1*sy1) * quot y0 = y1*fx1*quot - dy1*fx1*quot - x1*sy1*quot + dx1*sy1*quot y0 = (dx1*sy1 - dy1*fx1)*quot + y1 * fx1*quot - x1 * sy1*quot => x1 = dx1 + x0*fx1 + y0*sx1 <=> y0 = (x1 - dx1 - x0*fx1) / sx1 y1 = dy1 + x0*sy1 + y0*fy1 <=> y0 = (y1 - dy1 - x0*sy1) / fy1 => (x1 - dx1 - x0*fx1) / sx1 = (y1 - dy1 - x0*sy1) / fy1 nach x0 auflösen: x1*fy1 - dx1*fy1 - x0*fx1*fy1 = y1*sx1 - dy1*sx1 - x0*sy1*sx1 x0*sy1*sx1 - x0*fx1*fy1 = y1*sx1 - dy1*sx1 - x1*fy1 + dx1*fy1 x0 = (y1*sx1 - dy1*sx1 - x1*fy1 + dx1*fy1) / (sy1*sx1 - fx1*fy1) x0 = -y1*sx1*quot + dy1*sx1*quot + x1*fy1*quot - dx1*fy1*quot x0 = (dy1*sx1 - dx1*fy1)*quot - y1 * sx1*quot + x1 * fy1*quot => P0 = (x0) = ((dy1*sx1 - dx1*fy1)*quot + x1 * fy1*quot - y1 * sx1*quot) (y0) ((dx1*sy1 - dy1*fx1)*quot - x1 * sy1*quot + y1 * fx1*quot) => quot = 1 / (fy1*fx1 - sx1*sy1) dx' = (dy1*sx1 - dx1*fy1)*quot fx' = fy1*quot sx' = -sx1*quot dy' = (dx1*sy1 - dy1*fx1)*quot sy' = -sy1*quot fy' = fx1*quot