vtk实现多条曲线多条航迹轨迹用不同颜色区分不同曲线
- 说明(废话)
- 实现
说明(废话)
通过vtk9.2绘制多条三维曲线,让每条曲线不同颜色。
实现
以上只是测试效果
定义了一个Qvector m_colors,并在构造函数中赋值。
在箭头处调用,也就是上图最后两行。
// 设置曲线的颜色
QColor c = QColor (m_colors[i%m_colors.count()]);
actor->GetProperty()->SetColor(c.red(), c.green(), c.blue());
下面展示一些代码
// mainwindow.cpp
#include "mainwindow.h"
#include <vtkLineSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkNamedColors.h>
#include <vtkLookupTable.h>
#include <vtkColorTransferFunction.h>
#include <vtkSmartPointer.h>
// 创建VTK渲染器
renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->SetBackground(1, 1, 1); // 设置背景颜色为白色
// 创建一个VTK窗口,并将渲染器添加到窗口中
vtkWidget = vtkSmartPointer<vtkRenderWindow>::New();
vtkWidget->AddRenderer(renderer);
for (int i = 0; i < 10; ++i) {
vtkSmartPointer<vtkLineSource> lineSource = vtkSmartPointer<vtkLineSource>::New();
lineSource->SetPoint1(i * 10, 0, 0); // 设置第一个点
lineSource->SetPoint2(i * 10, 10, 0); // 设置第二个点
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(lineSource->GetOutputPort());
mapper->SetLookupTable(lut);
mapper->SetColorModeToMapScalars();
mapper->SetScalarRange(0, 99);
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
// 设置曲线的颜色
QColor c = QColor (m_colors[i%m_colors.count()]);
actor->GetProperty()->SetColor(c.red(), c.green(), c.blue());
// 将Actor添加到渲染器中
renderer->AddActor(actor);
}
// 设置窗口的大小和位置
vtkWidget->SetSize(600, 600);
vtkWidget->SetPosition(100, 100);
// 将窗口添加到Qt窗口中
setCentralWidget(vtkWidget);
}
'''
好了,到此就是全部了,最近我会在vtk的环境下解决记录更多的问题,期待您的关注!