#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;
}