科学可视化
实验室
八个交互式模块,覆盖等值线提取、流场追踪、体绘制、矢量场拓扑、多维降维与颜色映射。纯前端实现,零外部依赖,所有可视化由真实算法驱动。
Marching Squares 等值线提取
在标量场上逐格扫描,将每个 2×2 单元四角与阈值比较得到 4 位编码 (0–15),查表确定等值线穿越的边,再用线性插值计算交点坐标并连接成段。
对每个单元,四角与阈值比较生成 4 位编码,共 16 种拓扑情形(含两种鞍点)。等值线穿过编码变化相邻边,交点由线性插值确定,最终拼合成连续等值线。
流场可视化
在矢量场上释放粒子,沿场方向积分追踪得到流线 (Streamlines),同时绘制矢量场箭头网格。粒子随场流动并留下衰减轨迹,直观呈现场的方向与强度。
粒子位置按 Euler 积分沿矢量场推进;每帧将历史位置作为流线轨迹绘制,透明度随时间衰减。背景箭头网格直接采样场方向,长度表征局部强度。
体积渲染
对 3D 标量体进行 Ray casting:从视点向每个像素投射光线,沿光线采样体数据,按传递函数映射为颜色与不透明度并累积合成,最终得到体绘制图像并随旋转实时更新。
光线穿过体素网格,每步采样标量值;梯度近似用于边缘增强。颜色与 α 由分段传递函数决定,前后向合成 (over operator) 累积为最终像素。旋转通过变换采样坐标实现。
矢量场拓扑
检测矢量场中的临界点(场向量≈0 处),通过 Jacobian 矩阵特征值分类为源、汇、鞍点、中心或螺旋,并绘制其邻域相图 (phase portrait) 以揭示场全局结构。
在临界点处计算 Jacobian J,由迹 tr 与行列式 det 判定:det<0 为鞍点;det>0 且 tr>0 为源;tr<0 为汇;tr≈0 为中心;判别式 tr²−4det<0 时为螺旋。相图按特征方向绘制局部流线。
平行坐标
将多维数据的每个维度排布为垂直坐标轴,每条折线代表一个样本。支持拖拽轴重排维度顺序,并在轴上刷选区间以高亮子集,用于探索维度间的关系与聚类结构。
拖拽轴顶部圆形手柄可重排维度顺序;在任一轴上纵向拖动可创建刷选区间,跨轴高亮满足全部约束的样本。不同类别以颜色区分。
散点图矩阵 (SPLOM)
对多维数据两两维度绘制散点图组成矩阵,对角线显示各维度直方图。可切换显示维度数与着色变量,快速识别相关性、聚类与离群点。
每格为两维度的散点投影;对角格为该维度直方图。矩阵对称,上三角与下三角互补。相关系数接近 ±1 的维度对呈现明显线性趋势。
Marching Cubes 等值面
在 3D 标量场中逐体素遍历,将每个立方体八顶点与等值比较得到 8 位编码(共 256 种构型),在穿越边上插值得到等值面顶点,投影到 2D 并旋转呈现等值面形态。
遍历 3D 网格每个立方体,八顶点与等值比较生成 8 位索引;对每条穿越边用线性插值求得等值面顶点。此处提取顶点并按深度排序投影,旋转展示等值面空间结构。
颜色映射
对比 Jet、Viridis、Inferno、Magma 四种颜色映射在同一标量场上的表现,并绘制各自感知亮度 (L*) 曲线。Jet 非感知均匀且含锐变,后三者感知单调,更适合科学可视化。
感知亮度 L* 由 sRGB→线性→相对亮度近似。Viridis/Inferno/Magma 单调递增、色盲友好;Jet 在黄/青处存在亮度回退,会引入虚假边界。