42 lines
1.7 KiB
C++
42 lines
1.7 KiB
C++
#pragma once
|
||
#include <vtkRenderer.h>
|
||
namespace geopro::render {
|
||
|
||
// 俯视二维:正交投影,相机在 +Z 正对 XY 平面。
|
||
void applyTop2D(vtkRenderer* r);
|
||
|
||
// 自由三维:透视投影,斜视方位看到剖面立体。
|
||
void applyFree3D(vtkRenderer* r);
|
||
|
||
// 二维分析近俯视:透视投影,自正俯视下压一点(约12°→约78°俯角)。留一点倾斜使高程差可见
|
||
// (绝对正俯视下高程不可辨),仅平移+缩放(旋转由 interactor style 锁定)。
|
||
void applyNearTop2D(vtkRenderer* r);
|
||
|
||
// 快捷视图方向(世界系 x=East,y=North,z=-depth)。
|
||
// Top 俯视 (相机在 +Z 向下看)
|
||
// Bottom 仰视 (相机在 -Z 向上看)
|
||
// Front 从 -Y 看向 +Y (北望),Back 反向
|
||
// Left 从 -X 看向 +X (东望),Right 反向
|
||
enum class ViewDir { Front, Back, Left, Right, Top, Bottom };
|
||
|
||
// 应用 6 向正交快捷视图:设 position/focalPoint/viewUp 后 ResetCamera。
|
||
void applyView(vtkRenderer* r, ViewDir dir);
|
||
|
||
// 绕支点转到某轴的相机位姿(纯数学,可单测):focal=pivot,pos=pivot+dir_offset*distance,
|
||
// up 按 dir 预设。方向偏移/up 约定与 applyView 完全一致(Top=+Z 看下、+Y 朝上;Front 从 -Y
|
||
// 看 +Y、+Z 朝上;…)。用于 orbitToAxis:保留当前缩放距离、只改朝向绕 pivot 转。
|
||
struct CameraPose {
|
||
double pos[3];
|
||
double focal[3];
|
||
double up[3];
|
||
};
|
||
CameraPose orbitPose(ViewDir dir, const double pivot[3], double distance);
|
||
|
||
// 相机缩放:factor>1 拉近(放大),factor<1 推远(缩小)。透视下改距离、正交下改 parallelScale。
|
||
void zoomBy(vtkRenderer* r, double factor);
|
||
|
||
// 适配场景:ResetCamera(全览)。
|
||
void fitView(vtkRenderer* r);
|
||
|
||
} // namespace geopro::render
|