Ich finde die linearen Höhenverläufe, welche momentan unter Bearbeiten / Fläche... möglich sind zwar ganz Nett, aber auf die Dauer langweilig. Daher habe ich mir mal Gedanken gemacht, ob man nicht mathematische Funktionen für einen Höhenverlauf verwenden könnte.
Auf Basis des Source-Codes habe ich mir dazu mal ein wenig Gedanken gemacht:
EEPReliefAreaDialog.cs in
private void applyAreaParameters()
Verwendete Variablen:
x / y:
Schleifenzähler
sx / sy:
Start Zähler x, bzw y
deltax / deltay:
Schleifenrichtung
ex / ey:
Schleifen Abbruchbedingung
xStartHeight / yStartHeight:
Starthöhe (müssen ohnehin identisch sein)
xEndHeight / yEndHeight:
Endhöhe
xDeltaHeight / yDeltaHeight:
Derzeit: Höhendifferenz zwischen benachbarten Punkten
Vorschlag: xEndHeight - xStartHeight, bzw yEndHeight - yStartHeight
Die Berechnung der Höhe für jeden einzelnen Punkt könnte dann wie folgt aussehen:
newheight[x,y] = yFunktion( (y - sy) / (yDeltaHeight) ) * yDeltaHeight + xFunktion( (x - sx) / (xDeltaHeight) ) * xDeltaHeight + xStartHeight
xFunktion und yFunktion wären delegate´s, welche Werte zwischen 0 (Anfang Höhenverlauf) und 1 (Ende Höhenverlauf) übergeben werden. Wichtig bei diesen Funktionen ist nur, das sie für den Übergabewert 0 das Ergebnis 0 liefern und für den Übergabewert 1 das Ergebnis 1.
Jetzt müsste man nur noch die entsprechenden Funktionen schreiben:
double LinearVerlauf(double value)
{
return value;
}
double SinusVerlauf(double value)
{
return Math.Sin(value * Math.PI / 2);
}
double ExponentialSteigend(double value)
{
return (value * value);
}
double ExponentialFallend(double value)
{
retrun (value * value *-1 + 1); // -x^2 + 1
}
In dem Dialog werden dann lediglich zwei zusätzliche Felder zur Auswahl der Funktion benötigt, eine Funktionsauswahl für x und eine für y.
Wenn man die Idee etwas weiter treibt, wären auch andere Funktionen möglich. Wieso müssen die Extremwerte eigentlich immer an den Rändern der Fläche liegen. Mit einer Sinusfunktion von 0 bis 180 Grad könnte man so ja auch ganze Berge schaffen.
Logged In: YES
user_id=794103
Originator: NO
"Nichtlineare Höhenverläufe" ... interessante Idee.
Werde mal im Detail darüber nachdenken. Wäre auch
für "sanfte Hänge" als Übergang zwischen 2 unterschiedlich hohen
Ebenen interessant ...