gpt4 book ai didi

linux - 带有文本文件中心的 Gnuplot 椭圆体

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:37 26 4
gpt4 key购买 nike

我有一个包含 3 列定义 3D 点的文本文件。

我想绘制 3D 中的每个点和以每个点为中心的椭圆体。我放弃使用

set parametric

因为我需要迭代我的文本文件。

所以我想在做这样的事情时:

gnuplot
reset
set xrange [-5:5]
set yrange [-5:5]
set zrange [-5:5]
Rx = 1
Ry = 1
Rz = 1
fx(u,v) = column(2) + Rx*cos(u)*cos(v)
fy(u,v) = column(1) + Ry*sin(u)*cos(v)
fz(u,v) = column(3) + Rz*sin(v)
iMax = 200
splot "file.txt" using ($2):($1):($3) title "Input " with points ps 2 pt 7,\
for [i=0:iMax] "file.txt" u (fx(2*pi*i/iMax, pi*i/iMax)):(fy(2*pi*i/iMax, pi*i/iMax)):(fz(2*pi*i/iMax, pi*i/iMax)) notitle with points ps 2 pt 7

但我唯一能想到的是这种奇怪而沉重的模式(我知道它们每行有很多迭代,但也许还有另一种方法)模式 enter image description here

有什么帮助吗?谢谢。

数学观点有问题?使用这样的东西我完全能够绘制球体,但无需解析数据:

set parametric
R = 1
set urange [-pi/2:pi/2]
set vrange [0:2*pi]
splot R*cos(u)*cos(v),R*cos(u)*sin(v),R*sin(u) w l lc rgb "yellow"

最佳答案

我假设您想要绘制 3D 椭球体的 2D 表面。但是 plot 命令只有 i 上的一个循环,它只有一维。这不能给出二维表面。嵌套另一个一维循环可能会使这种方法起作用。

我会建议别的东西。在绘图之前,您可以将中心坐标存储到 gnuplot 数组中。然后你遍历这个数组并使用参数模式绘制一个球体/椭圆体。

这可能是一个起点:

# This is the file with the center coordinates.
datafile = "ellipses.dat"

# The "stats" command stores the number of rows in the STATS_records variable.
stats datafile nooutput
num_rows = STATS_records

# Generate arrays which will contain the center coordinates of the ellipsoids.
array centers_x[num_rows]
array centers_y[num_rows]
array centers_z[num_rows]

# Read the center coordinates into the prepared arrays.
# I "misuse" the stats command. The "using" expression in parenthesis executes
# the respective commands and returns the value after the last comma: row + 1.
# This return value is not needed anywhere.
row = 1
stats datafile using (centers_x[row]=$1, \
centers_y[row]=$2, \
centers_z[row]=$3, \
row = row + 1) nooutput

# Output into an image file.
set terminal pngcairo
set output "ellipsoids.png"

# Set parameters for ellipsoids.
Rx = 0.1
Ry = 0.1
Rz = 0.7

# Use parametric mode for plotting.
set parametric
set urange [-pi/2:pi/2]
set vrange [0:2*pi]

# Finally plot:
splot datafile using 1:2:3 title "Input " with points ps 2 pt 7, \
for [i=1:num_rows] centers_x[i] + Rx*cos(u)*cos(v), \
centers_y[i] + Ry*cos(u)*sin(v), \
centers_z[i] + Rz*sin(u) notitle

请仔细检查 x、y 和 z:我没有那么仔细。这是结果:

ellipsoids

我使用了这个示例数据:

1 2 3
2 2 4
2 3 4
3 3 3
3 4 5

数组从 gnuplot 5.2 开始可用。对于旧版本,请在互联网上搜索解决方法。

关于linux - 带有文本文件中心的 Gnuplot 椭圆体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58169825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com