スポンサーリンク
#include <open3d/Open3D.h> #include <Eigen/Dense> #include <vector> #include <cmath> #include <memory> #pragma comment(lib, "opengl32.lib") #pragma comment(lib, "glew32s.lib") using namespace open3d;
std::shared_ptr<geometry::LineSet> MakePolyline() { const double x0 = -2.0 * 3.14159; const double x1 = 2.0 * 3.14159; const double amplitude = 1.0; // 振幅 const double frequency = 1.0; // 周波数 const double phase = 1.0; // 位相 const int samples = 400; ///////////////////////////////////////////////////////// auto lineset = std::make_shared<geometry::LineSet>(); // 頂点作成 const double step = (x1 - x0) / (samples - 1); for (int i = 0; i < samples; ++i) { double x = x0 + step * i; double y = amplitude * std::sin(frequency * x + phase); lineset->points_.emplace_back(Eigen::Vector3d(x, y, 0.0)); } ///////////////////////////////////////////////////////// // 頂点インデックスの組み合わせで線分を作成 for (size_t i = 0; i < samples-1; ++i){ lineset->lines_.emplace_back( (int)i, (int)(i + 1) ); // 線分に対する色を設定 lineset->colors_.emplace_back(Eigen::Vector3d(1.0, i/float(samples), 0.0)); } return lineset; }
int main() { auto sine_ls = MakePolyline(); visualization::Visualizer vis; vis.CreateVisualizerWindow("LineSet", 800, 600); vis.AddGeometry(sine_ls); auto& opt = vis.GetRenderOption(); opt.line_width_ = 2.0; opt.background_color_ = { 0, 0, 0 }; vis.Run(); vis.DestroyVisualizerWindow(); return 0; }