Dieses mal versuche ich eine rotierte Heightmap zu erzeugen. Dabei wird das Modell um die Y Achse rotiert und zwar um den Mittelpunkt von Modell.
// origin y is z Point3D rotateAroundY(const double angle, const Point2D& origin) const { const auto c = std::cos(deg2rad(angle)); const auto s = std::sin(deg2rad(angle)); const auto xnew = c*(x()-origin.x()) - s*(z()-origin.y()) + origin.x(); const auto znew = s*(x()-origin.x()) + c*(z()-origin.y()) + origin.y(); return Point3D{xnew, y(), znew}; }
Das Endergebnis sieht auf den ersten Blick etwas komisch aus, aber ich denke, es ist richtig. Einmal hat man die Ansicht von Unten. Dann seitlich und von Oben, mit der Rückenflosse.