首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用滑块绘制三维图形,以控制绘制的点数。

用滑块绘制三维图形,以控制绘制的点数。
EN

Stack Overflow用户
提问于 2016-09-14 20:20:00
回答 1查看 415关注 0票数 3

我有数据,这是一个物体在三维空间中的运动,在一定的时间间隔。数据如下:

代码语言:javascript
代码运行次数:0
运行
复制
Time  X   Y   Z
1     1   1   1
2     2   1   2
3     2   0   1
4     3   2   1
.....

(x,y,z)是物体在时间t处的位置。我想绘制一个3D图,它显示物体在3d空间中的完全运动,但是有一个滑块或类似的东西,我可以选择一个时间范围(比如500到750),并看到物体在3D空间中的运动。所以,这里我们有4维: x,y,z是第4维的位置和时间,用滑块控制当时点的绘制。下面的Mathematica示例给出了一个很好的概念

让这件事更清楚。我们首先绘制物体在3D空间中从时间1到N的完整运动,然后通过控制滑块,在t1到t2时间戳之间绘制相同对象的运动。显示滑块在什么时候也很重要(因为我必须根据运动记录一些感兴趣的时间戳)。

我也在谷歌上搜索过,但没有一个例子能让我得到我想要的东西。所有这些都将滑块绑定到一个轴变量(例如x或y,可能是时间),但我们必须将其绑定到第4维,时间。图形是有希望的,但我有类似的问题,如上文所讨论的(而且,没有找到任何3d支持)。

This one in Mathematica is interesting。但我没有执照。它只是移动了三维路径上的一个点。这也可以解决我的问题,但我应该能够知道时间戳值时,我暂停它。

R中的解决方案对我有好处,因为它没有任何许可问题。或者在Matlab中,如果它不使用任何高级可视化工具箱。或者是Python。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-09-14 21:01:34

这是一个可以根据需要定制的原始示例。它使用manipulateplot3D

代码语言:javascript
代码运行次数:0
运行
复制
library(manipulate)
library(plot3D)

min_time <- 1
max_time <- 100
time_interval <- min_time:max_time

# Create data frame
DF <- data.frame(t = time_interval)

# Time parametric functions
X <- function(t) {
  return(2 * t)
}

Y <- function(t) {
  return(t ** 2)
}

Z <- function(t) {
  return(10 * cos(t / 100))
}
# Update data frame
DF$x <- sapply(DF$t, X)
DF$y <- sapply(DF$t, Y)
DF$z <- sapply(DF$t, Z)

# Use manipulate with RStudio
manipulate({
  lines3D(x = DF$x, y = DF$y, z = DF$z)
  scatter3D(
    x = DF$x[t],
    y = DF$y[t],
    z = DF$z[t],
    add = TRUE
  )
}, t = slider(min_time, max_time))

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39498995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档