Compile with
g++ -lCE3D2 --std=c++11 anim.cpp -o anim
Install CE3D2 before! :D
| #include <chrono> | |
| #include <thread> | |
| #include <iostream> | |
| #include <memory> | |
| #include <CE3D2/models/LineModel.h> | |
| #include <CE3D2/render/TextRenderer.h> | |
| #include <CE3D2/render/TextSurface.h> | |
| #include <CE3D2/transformation/OrthogonalProjection.h> | |
| #include <CE3D2/transformation/Rotation.h> | |
| #include <CE3D2/transformation/Scale.h> | |
| #include <CE3D2/transformation/Translation.h> | |
| #include <CE3D2/Vector.h> | |
| using namespace CE3D2; | |
| int main() | |
| { | |
| auto model = std::make_shared<Models::LineModel>(Models::LineModel::cube()); | |
| model->transform(Transformation::Scale(create_vector(10.0f, 10.0f, 10.0f))); | |
| Transformation::OrthogonalProjection ortho_projection; | |
| std::vector<Vector> projection_vecs; | |
| projection_vecs.push_back(create_vector(0.7f, 0.3f, 0.0f)); | |
| projection_vecs.push_back(create_vector(0.0f, 0.3f, 0.7f)); | |
| ortho_projection.set_projection_vectors(projection_vecs); | |
| Transformation::Rotation rotation(create_vector(1.0f, 0.0f, 0.0f), | |
| create_vector(0.0f, 1.0f, 0.0f)); | |
| auto translation = Transformation::Translation(create_vector(10.0f, 10.0f)); | |
| Render::TextRenderer renderer; | |
| renderer.set_target(std::make_shared<Render::TextSurface>(50, 30)); | |
| auto screenscale = Transformation::Scale(create_vector(2.0f, 1.0f)); | |
| for (unsigned int i = 0; i < 200; i++) | |
| { | |
| renderer.line_models().clear(); | |
| auto modelcopy = std::make_shared<Models::LineModel>(*model); | |
| renderer.line_models().push_back(modelcopy); | |
| renderer.get_target()->clear(); | |
| rotation.set_angle(rotation.get_angle() + 0.04f); | |
| modelcopy->transform(rotation); | |
| modelcopy->transform(ortho_projection); | |
| modelcopy->transform(translation); | |
| modelcopy->transform(screenscale); | |
| renderer.render(); | |
| std::cout << *renderer.get_target(); | |
| std::this_thread::sleep_for(std::chrono::milliseconds(40)); // 25 FPS | |
| } | |
| return 0; | |
| } |