You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gnuplot中隐藏3D对象后方的标签?

如何在Gnuplot动画中隐藏球体后方的顶点标签?

你的Gnuplot代码当前存在一个关键问题:顶点标签使用了graph坐标系(屏幕相对坐标),这意味着无论3D视角如何旋转,标签都会固定在屏幕的某个位置,不会随顶点移动。要实现“顶点转到球体后方时隐藏标签”的效果,需要做以下两步修改:

1. 将标签绑定到实际3D顶点坐标

首先把标签的at graph ...替换为对应顶点的真实3D坐标(从数据文件r1.dat中提取四个顶点),让标签跟随顶点移动:

# 替换原标签设置代码
set label 1 "1" at .2911,.6589,-.6936 center front
set label 2 "2" at -.5808,-.6952,-.4236 center front
set label 3 "3" at -.5144,.4738,.7147 center front
set label 4 "4" at .8041,-.4375,.4025 center front

2. 在动画循环中动态判断并控制标签显示

在每次视角旋转时,计算顶点2经过当前视角旋转后的深度坐标,判断其是否处于球体后方(相对于观察者),动态设置或隐藏标签2:

修改后的完整代码

set terminal aqua size 500 500 font "Helvetica,20"
set style circle; set style fill solid
set xrange [-1:1]; set yrange [-1:1]; set zrange [-1:1]
set size ratio -1
set parametric; set isosamples 31,61; set hidden3d
set urange [-pi/2:pi/2]; set vrange [0:2*pi]
unset border; unset xtics; unset ytics; unset ztics
rot_x=90; rot_z=90; scale=1.5; scale_z=1
set view rot_x, rot_z, scale, scale_z

# 绑定标签到真实3D顶点坐标
set label 1 "1" at .2911,.6589,-.6936 center front
set label 3 "3" at -.5144,.4738,.7147 center front
set label 4 "4" at .8041,-.4375,.4025 center front

# 动画循环:动态控制标签2的显示
do for [i=90:180] {
    set view 75, i
    phi = 75*pi/180   # 视角的仰角
    theta = i*pi/180  # 视角的方位角
    
    # 顶点2的原始坐标
    x0 = -.5808; y0 = -.6952; z0 = -.4236
    
    # 计算经过视角旋转后的深度坐标z2
    y1 = y0*cos(phi) - z0*sin(phi)
    z1 = y0*sin(phi) + z0*cos(phi)
    # 绕z轴旋转不改变z坐标,最终深度为z1
    z2 = z1
    
    # 判断:若顶点在观察者后方(z2<0)则隐藏标签,否则显示
    if (z2 < 0) {
        unset label 2
    } else {
        set label 2 "2" at x0,y0,z0 center front
    }
    
    r=0.577
    splot r*cos(u)*cos(v),r*cos(u)*sin(v),r*sin(u) t "" w l lw 0.5 lc rgb "blue",
          "r1.dat" u 1:2:3:(0.01) t "" with circles,
          "" u 1:2:3 t "" w l lc rgb "red"
}

原理说明

  • 标签绑定到3D坐标后,会随顶点一起在视角旋转时改变屏幕位置。
  • 通过旋转矩阵计算顶点经过视角变换后的深度值z2:当z2<0时,说明顶点处于观察者的视野后方(相对于球体中心),此时取消标签2;当z2≥0时,重新显示标签2。

内容的提问来源于stack exchange,提问作者Ronpac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:07:05