Hallo Heinz, On Sunday 15 November 2009 20:32:26 Heinz W. Pahlke wrote:
Versucht habe ich es mit verschiedenen Variablen, um die "720x576+1977+843" schrittweise in die "2295x1836+0+0" zu überführen, aber bislang nur völlig unsinnige Ergebnisse erhalten.
Das ist ein Problem fuer den Bresenham-Algorithmus. Der ist "eigentlich" dazu da eine Line von A nach B auf dem Bildschirm zu zeichnen ohne Floating-Point nutzen zu muessen. Sehr einfaches Beispiel in Python: #!/usr/bin/python x0 = 10 x1 = 20 y0 = 5 y1 = 8 tx = 0 x = x0 y = y0 dx = x1 - x0 dy = y1 - y0 # bis hierher ist es noch einfach while x <= x1: print x, "/", y # oder sonstwas tx = tx + dy if tx >= dy: y = y + 1 tx = tx - dx x = x + 1 Oder in Bash: #!/bin/bash declare -i x0=10 declare -i x1=20 declare -i y0=5 declare -i y1=8 declare -i tx=0 declare -i x=$x0 declare -i y=$y0 declare -i dx=$((x1 - x0)) declare -i dy=$((y1 - y0)) # bis hierher ist es noch einfach while ((x <= x1)); do echo $x "/" $y # oder sonstwas ((tx += dy)) if ((tx >= dy)); then ((y++)) ((tx -= dx)) fi ((x++)) done Ist dy > dx muss man etwas tricksen, also swappen und y durchlaufen lassen. Das gilt natuerlich auch fuer x1 < x0 oder y1 < y0. Fuer dein Problem sieht der Algorithmus ganz aehnlich aus.
i=`expr $i` j=`expr $i + 2` k=`expr $i + 2`
Du hast Bash gesagt, dann wuerde ich hier lieber wie oben schon gezeigt etwas schreiben wie ((j = i + 2)) ((k = i + 2)) usw. Das ist viel besser lesbar. Ich hoffe ich konnte etwas helfen, ohne gleich ein funktionierendes Script fuer dein Problem zu liefern. BTW, kennst du das Bash Scripting Guide von TLDP (The Linux Documentation Project)? Roman -- Roman Fietze Telemotive AG Büro Mühlhausen Breitwiesen 73347 Mühlhausen Tel.: +49(0)7335/18493-45 http://www.telemotive.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org