11、VTK重要数学知识:平面和法向量

法向量的定义蛮简单,就是任意平面上的向量都与法向量垂直

根据2个向量点积为0垂直特性,那就很容易从定义得到点法式方程,再由点法式展开得到一般式方程

cpp 复制代码
#include "MainWindow.h"

#include <QApplication>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkCamera.h>
#include <vtkProperty.h>
#include <vtkAxesActor.h>
#include <vtkPlaneSource.h>

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingFreeType)

int main(int argc, char *argv[])
{
    auto plane = vtkSmartPointer<vtkPlaneSource>::New();
    plane->SetNormal(0, 1, 0);
    plane->SetCenter(0, 0, 0);


    auto mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    mapper->SetInputConnection(plane->GetOutputPort());

    auto actor = vtkSmartPointer<vtkActor>::New();
    actor->SetMapper(mapper);
    actor->GetProperty()->SetColor(1, 0, 0);

    auto actorAxes = vtkSmartPointer<vtkAxesActor>::New();

    auto render = vtkSmartPointer<vtkRenderer>::New();
    render->SetBackground(0.1, 0.2, 0.3);
    render->AddActor(actor);
    render->AddActor(actorAxes);

    render->GetActiveCamera()->SetFocalPoint(0, 0, 0);
    render->GetActiveCamera()->SetPosition(5, 3, 5);

    auto wd = vtkSmartPointer<vtkRenderWindow>::New();
    wd->AddRenderer(render);

    auto interator = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    wd->SetInteractor(interator);
    wd->SetSize(800, 600);
    wd->SetPosition(200, 200);

    wd->Render();
    interator->Start();

    return 0;
}
相关推荐
爱讲故事的2 天前
计算机网络第四章复习:网络层 Data Plane 数据平面
网络·计算机网络·平面
爱讲故事的3 天前
计算机网络第 5 章复习:Network Layer Control Plane(网络层控制平面)
网络·计算机网络·平面
Σίσυφος19005 天前
激光三角 光平面标定-多高度误差分析
人工智能·计算机视觉·平面
Σίσυφος19005 天前
激光三角 光平面标定-多高度
平面
走好每一步5 天前
5、VTK刚体变换
qt·vtk·三维图像
Σίσυφος19005 天前
激光三角 光平面标定
平面
走好每一步6 天前
4、VDK读取xml模型数据
vtk·三维图像
走好每一步8 天前
2、VDK 使用QVTKOpenGLNativeWidget嵌入到QT窗体中
qt·vtk·三维图像
胡摩西10 天前
立体电子围栏如何实现?毫米级室内定位让安全生产从“平面”走向“空间”
人工智能·安全·平面·室内定位