Mir fällt auf, dass der KoordinatenUrsprung sowie die bisher gezeichneten Funktionen nicht an den neu gewählten Ausschnitt angepasst werden...
Du solltest das Zeichnen des Urspungs ebenfalls über die Projektion laufen lassen. Es böte sich darüber hinaus an, die Berechnung der Projektion in eine Funktion der Art
function PaintboxToCoords(const APoint: TPoint): TCoord;
bzw
function CoordsToPaintbox(const ACoord: TCoord): TPoint
mit
Delphi-Quellcode:
type
TCoord = record
X, Y: Double;
end;
function Coord(const AX, AY: Double): TCoord;
begin
Result.X:= AX;
Result.Y:= AY;
end;
wg der Übersichtlichkeit auszulagern.
Das mit den bisherigen Funktionen bei Veränderung des Ausschnitts wird schwierig. Weil Du die Zeichenfläche löschen musst, wäre es notwendig die Koeffizieten als 6-Tupel in einer geeigneten Struktur (zB dynamisches Array) abzulegen und die Zeichenroutine anschließend für jedes Element des Arrays erneut durchzuführen...