2026a
# isonormals
计算等值面顶点的法向量
函数库: TyVolumeVisualization
# 语法
n = isonormals(X,Y,Z,V,vertices)
n = isonormals(V,vertices)
n = isonormals(...,"negate")
# 说明
n = isonormals(X,Y,Z,V,vertices) 使用数据 V 的梯度计算顶点列表 vertices 中等值面顶点的法向量。数组 X、Y 和 Z 定义三维体 V 的坐标。计算的法向量在 n 中返回。
n = isonormals(V,vertices) 假定数组 X、Y 和 Z 定义为 X,Y,Z = meshgrid3(1:n,1:m,1:p),其中 (m,n,p) = size(V)。
n = isonormals(...,"negate") 对法向量求反(反转法向量方向)。
# 示例
使用不同类型的曲面法线的等值面
比较不同曲面法向量在光照等值面的视觉外观上的效果。在一种情况下,由用于绘制等值面的三角形定义法向量。在另一情况下,isonormals 函数使用体数据基于数据点的梯度计算顶点法向量。后一种方法通常会生成外观更平滑的等值面。
基于数据计算等值面顶点的法向量。
using TyVolumeVisualization
using TyPlot
pkg_dir = pkgdir(TyVolumeVisualization)
source_path = pkg_dir * "/examples/isonormals/0-data.jl"
include(source_path)
isonormals(data, verts)
867×3 Matrix{Float64}:
-0.057049 -0.00606808 -0.109651
-0.0602834 -0.00656109 -0.106725
-0.057187 -0.0131538 -0.102514
-0.0566143 0.00283557 -0.116627
-0.0606945 0.00215806 -0.112808
-0.0558844 0.0113667 -0.120789
-0.0572664 0.0111063 -0.119451
⋮
0.0190257 -0.00846097 0.0930029
0.021183 -0.00125627 0.111143
0.0229141 0.00484225 0.126027
0.0241909 0.0105629 0.137671
0.0250206 0.0163239 0.146078
0.0361267 -0.00336772 0.104732
0.0380062 0.00300297 0.119176