Ich mache gerade einige 3D-Grafiken und habe einen offenen Ozean. Für diesen Ozean habe ich eine Matrix, die den Seegang (d.h. die Wellenhöhen) für einen bestimmten rechteckigen Unterabschnitt des Meeres darstellt. Der Rest des Ozeans ist flach. Mein Problem ist, dass mein kontrolliertes Meer, in dem es Wellen gibt, in der Mitte des offenen, flachen Meeres liegt, und die Diskontinuität an den Rändern meines Gitters verursacht einige schlechte Artefakte. Der Grund dafür, dass ich nur Wellen für einen Teilbereich und nicht für das gesamte Meer generiere, liegt darin, dass die Berechnung meiner Rauschfunktion für das gesamte Meer unerschwinglich ist (und ich weiß, dass die einfachste Lösung darin besteht, eine billigere Rauschfunktion wie Simplex-Rauschen zu verwenden, aber das ist keine Option).
Meine Frage ist aber eigentlich ganz einfach. Wenn ich ein Raster (aka Matrix aka 2d Array) der Größe 100x40 habe und ich den Wert für die Position 120x33 finden möchte, möchte ich einfach den nächsten Nachbarn nehmen, der 100x33 wäre. Für jede Zahl, die außerhalb eines bestimmten Bereichs liegt, möchte ich also, dass diese Zahl so gesättigt wird, dass sie innerhalb des angegebenen Bereichs liegt. Gibt es eine Funktion in C oder C++, die dies ermöglicht?
Bearbeiten: die Positionsparameter sind vom Typ float
Ich weiß, ich kann dies mit einigen einfachen if-Anweisungen tun, aber es scheint nur wie etwas, das die Standardbibliotheken enthalten würde.