法向量的定义蛮简单,就是任意平面上的向量都与法向量垂直
根据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;
}