【问题标题】:Play3d in RGL packageRGL 包中的 Play3d
【发布时间】:2017-04-26 19:28:18
【问题描述】:

我正在开发一个在 R 编程中使用 RGL 包的项目。如果有人可以帮助我使用相同的 play3d 功能,我会很高兴。

这是我打算做的。我有一个 polygon3d(x,y,z) 在输出窗口上绘制一个多边形,现在我想在每次迭代时用一些值来翻译它,比如 5 轮 10 个单位。

我进行了研究,但所有可用资源都是关于 t-duration 的多边形旋转。这种情况的例子是:

M <- par3d("userMatrix")
play3d( 
  par3dinterp(userMatrix=list(M,rotate3d(M, angle=pi, x=1 ,y=0, z=0))), 
  duration=10
)

以上代码将我的多边形沿 x 轴旋转 10 秒并停止。

我想用一些指定的参数将我的多边形平移 10 秒,指定每秒平移多少。

我的多边形基本上是一个加号(代表四轴飞行器),我想显示运动,好像它从地面(x-y 轴)上升到空中(z 轴)。

任何帮助将不胜感激。

谢谢大家

【问题讨论】:

    标签: r rgl


    【解决方案1】:

    您需要使用平移矩阵的转置来执行此操作。例如,要翻译 (x, y, z),请使用

    M <- par3d("userMatrix")
    play3d( 
      par3dinterp(userMatrix=list(M, M %*% t(translationMatrix(x, y, z)))), 
      duration=10
    )
    

    这是在 ?rgl.setMouseCallbacks 示例中完成的。

    编辑添加 x、y、z 值以回答下面的问题。

    【讨论】:

    • 感谢您的帮助!!但是你能指定我如何提及它应该翻译的单位吗?我实际上不知道 M 矩阵是什么。你能帮我翻译一下吗? :)
    • 非常感谢,我最初尝试过,但多边形返回到其原始坐标 (0,0,0)。换句话说,它像钟摆一样重新平移回原来的位置。另外,我的平移距离是 x=133,y=150,z=100,然后多边形直接飞出屏幕。
    猜你喜欢
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2015-12-21
    相关资源
    最近更新 更多