rgl:绘制带有彩色面、顶点和线的立方体

2024-04-02

为了演示 3D 线性变换的效果,x -> A x,我想画一个立方体并在下面显示它的变换A。为此,我需要分别为每个面着色,并显示顶点和勾勒每个面的线条。

我不知道如何为脸部使用不同的颜色,以及如何使其更通用,因此我不必在转换下重复所有步骤来获得结果。

我尝试过的:

library(rgl)
c3d <- cube3d(color=rainbow(6), alpha=0.5)
open3d()
shade3d(c3d)
points3d(t(c3d$vb), size=5)
for (i in 1:6)
    lines3d(t(c3d$vb)[c3d$ib[,i],])

这给出了下图。但我不明白这些脸是怎么着色的。而且,我似乎必须使用points3d and lines3d的组成部分上c3d形状,并且没有一个可以变形的对象。

特定的变换由矩阵给出A下面是我将其添加到场景中的方法,

A <- matrix(c( 1, 0, 1, 0, 2, 0,  1, 0, 2), 3, 3)
c3d_trans <- transform3d(c3d, A) 
shade3d( c3d_trans )
points3d(t(c3d_trans$vb), size=5)

这给出:

有什么方法可以简化这个并使其更普遍有用吗?


In rgl,绘制原始形状时,您将颜色应用于顶点,而不是面。通过在顶点处插值颜色来为面着色。

然而,cube3d()不是原始形状,而是“网格”。它被绘制为 6 个独立的四边形。每个顶点使用 3 次。

它并没有真正记录下来,但颜色使用的顺序是前 4 个用于一个面,然后接下来的 4 个用于下一个面,依此类推。如果你希望你的颜色是rainbow(6),您需要将每种颜色复制 4 次:

library(rgl)
c3d <- cube3d(color=rep(rainbow(6), each = 4), alpha = 0.5)
open3d()
shade3d(c3d)
points3d(t(c3d$vb), size = 5)
for (i in 1:6)
    lines3d(t(c3d$vb)[c3d$ib[,i],])

我会推荐更高的alpha价值;我发现透明度有点令人困惑alpha = 0.5.

顺便说一句,出于同样的目的,我通常使用看起来更球形的形状作为基线;我认为它可以让我们对转型有更好的直觉。这是我使用过的代码:

sphere <- subdivision3d(cube3d(color=rep(rainbow(6),rep(4*4^4,6)), alpha=0.9),
    depth=4)
sphere$vb[4,] <- apply(sphere$vb[1:3,], 2, function(x) sqrt(sum(x^2)))
open3d()
shade3d(sphere)

这给出了这个形状:

变成这样:

A <- matrix(c( 1, 0, 1, 0, 2, 0,  1, 0, 2), 3, 3)
trans <- transform3d(sphere, A)
open3d()
shade3d(trans)

当然,如果你能旋转它,一切看起来都会更好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rgl:绘制带有彩色面、顶点和线的立方体 的相关文章

  • 在 Rcpp 中使用其他包中的 C 函数

    我试图从 C 函数中的 cubature 包调用 C 例程来执行多维积分 我试图重现的基本 R 示例是 library cubature integrand lt function x sin x adaptIntegrate integr
  • 如何在 R 中匹配多个 ggplot2 图中的调色板?

    自从被问到这个问题以来已经有一段时间了 但我知道一个事实 我很快就会提取新数据 我想弄清楚如何用这种技术来绘制它 看起来评论和答案中的人知道如何做到这一点 但我无法完全弄清楚所给我的内容 还有人想尝试一下吗 我正在尝试使用具有多个级别的因子
  • ggplot2:如何标记事件发生的日期

    我想从第二个情节中获取第一个情节的信息 第二张图表示事件发生的天数 它看起来更宽 因为它没有图例 但它是相同的时间尺度 我选择在第一个图中手动分配颜色 I would like to overlay the second plot dots
  • 纵向比较 R 中的值...并进行扭转

    我有许多人在多达四个时间段进行的测试结果 这是一个示例 dat lt structure list Participant ID c A A A A B B B B C C C C phase structure c 1L 2L 3L 4L
  • 如何在将两根柱子保持在一起的同时熔化柱子?

    我有这种宽格式的数据 我想将其转换为长格式 Cond Construct Line Plant Tube shoot weight shoot Tube root weight root 1 Standard NA NA 2 199 95
  • 任意列中包含字符串的子集行

    我有一个如下所示的数据集 Col1 Col2 Col3 abckel NA 7 jdmelw njabc NA 8 jdken jdne 如何对数据集进行子集化 使其仅保留包含字符串 abc 的行 最终预期输出 Col1 Col2 Col3
  • 闭包作为数据合并习惯的解决方案

    我正在尝试解决闭包问题 而且我think我发现了一个案例 他们可能会有所帮助 我有以下几部分需要处理 一组正则表达式 旨在清理状态名称 位于函数中 具有州名称 上述函数创建的标准化形式 和州 ID 代码的 data frame 用于链接两者
  • 如何绘制具有显着性水平的箱线图?

    前段时间问了一个关于绘制箱线图的问题Link1 https stackoverflow com questions 14604439 plot multiple boxplot in one graph 我有一些包含 3 个不同组 或标签
  • 如何修复 R 中 Kaplan Meier 图的风险表计算错误

    以下是一个数据帧 其中 6 个参与者中的每一个都有唯一的 record ID 我想绘制一个生存分析图 其中包含感兴趣事件的复发以及在时间间隔 tstart 到 tstop 内 暴露 药物剂量 数值变量 的时间依赖性协变量 每个参与者的最大
  • 在 Shiny 中的用户会话之间共享反应数据集

    我有一个相当大的反应数据集 该数据集是通过轮询文件然后按预定义的时间间隔读取该文件而派生的 数据更新频繁 需要不断重新加载 诚然 重新加载可以增量完成并附加到 R 中的现有对象 但事实并非如此 然而目前 尽管会话中的数据相同 但此操作是针对
  • 如何使用 dplyr 独立过滤每列的行

    我有以下内容 library tidyverse df lt tibble tribble gene colB colC a 1 2 b 2 3 c 3 4 d 1 1 df gt A tibble 4 x 3 gt gene colB c
  • 闪亮应用程序中的本地图像没有 img(src())?

    我想按照以下说明在我的闪亮应用程序中包含本地图像文件 在闪亮的应用程序中嵌入图像 https stackoverflow com questions 21996887 embedding image in shiny app 然而 由于某种
  • 从 csv 文件中读取奇数行

    这看起来相当简单 我只需要从 R 中的数据文件中读取奇数行并创建一个新的数据框 我怎样才能实现这个目标 read csv filename csv c TRUE FALSE 怎么运行的 功能read csv用于读取整个文件并返回包含所有行的
  • 数据帧初始化 - 字符初始化读取为因素?

    我正在尝试初始化这样的数据框 因为我想要一个空数据框 其中两个字符向量作为列 out frame lt data frame Hospital character State character 但是 当我查看该数据框的每一列的类时 它显示
  • 在 R 中绘制逻辑回归的两条曲线

    我正在 R glm 中运行逻辑回归 然后我设法绘制结果 我的代码如下 temperature glm glm Response Temperature data mydata family binomial plot mydata Temp
  • dplyr 将字符串拆分为逗号分隔的列表

    我正在尝试使用 dplyr 将字符串拆分为逗号分隔的字符串 但运气不佳 dat lt data frame key 1 4 labels c a ab abc b 我试图将标签列设置为 c a a b a b c b 我已经尝试了以下所有变
  • ggplot更改图例中的几何顺序[重复]

    这个问题在这里已经有答案了 我有两个堆积面积图 上面画了一条线 在这两种情况下 我的绘图顺序都是这样的 创建ggplot 添加堆叠区域 geom area 更改堆叠区域颜色 添加行 geom line 改变线条颜色 在我的第一张图中 堆叠区
  • 如果“testthat”测试在“R”中失败,则打印自定义诊断信息

    I use a testthat单元测试来检查是否data frame函数返回的结果与我期望它返回的结果相同 如果测试失败 testthat打印一些诊断信息 例如 MyFunction df orig is not identical to
  • 如何生成向量的所有组合[重复]

    这个问题在这里已经有答案了 假设我有 3 个绿球 2 个橙球和 8 个黄球 我想订购它们 鉴于所有相同颜色的球都是相同的 如何生成所有可能的序列 在 R 中 使用gregmisc 我可以 balls lt c orange orange g
  • 将summary()写入as.data.frame以在ggplot / R中使用

    请查找 af 数据样本t below 我正在使用以下方法进行竞争风险分析etmCIF来自etm package 产生以下结果 这很好 但需要更好的图形 曾经有一个ggtrans etm函数将数据导入ggplot 然而 这个功能显然被删除了

随机推荐

  • 命令行参数 - 所需对象:'objshell.NameSpace(...)'

    我正在编写一个脚本 该脚本将利用 Windows 的内置功能来解压缩提供的 zip 文件 我对 vbscript 还很陌生 所以有些语法让我有点困惑 我正在使用一些现有代码并尝试修改它 以便它将采用命令行选项作为文件名 如果我使用命令行传递
  • 仅向一个应用程序发送广播意图,而不使用显式意图

    我有个问题 我正在做一个外部 android 服务 应用程序可以注册它来接收信息 信息通过广播从服务返回到应用程序 并通过broadcastReceiver 问题是如果我这样做sendBroadcast 任何应用程序都可以监听其他应用程序的
  • 结构末尾的大小为 0 的数组[重复]

    这个问题在这里已经有答案了 我正在学习的系统编程课程的教授今天告诉我们要定义一个末尾带有零长度数组的结构体 struct array size t size int data 0 typedef struct array array 这是一
  • 极长工作流程的 Cucumber 场景

    我们需要为一个功能测试一个漫长的步骤过程 从登录到许多模式对话框 多步骤表单以及不同角色的用户都在交互 我们如何将这个过程的各个部分分解为单独的场景 这是一个例子 Scenario New Manuscript Given I am on
  • 如何获取用户当前在 Spotify 应用程序中收听的内容的信息 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Android 应用程序 在后台运行并使用 Spotify SDK 能否获取用户当前在 Spotify Android 应用程序中收听
  • 是否有复杂的 Java WorkQueue API?

    我正在寻找具有以下功能的 WorkQueue API java util Queue兼容的 优惠 可选 集合语义 单处理和批处理 并发 当然 调度 different processing policies 等到下一次计划执行 如果批量大小
  • PowerPivot 中的滚动 12 个月总和

    在 PowerPivot Excel 2016 中 我编写了滚动 12 个月销售额总和的公式 如下所示 Rolling Sum CALCULATE Sales DATESBETWEEN Sales Date FIRSTDATE DATEAD
  • Python:使用 Openpyxl 读取大型 Excel 工作表

    我有一个 Excel 文件 其中包含大约 400 个工作表 其中 375 个工作表需要保存为 CSV 文件 我尝试过 VBA 解决方案 但 Excel 在打开此工作簿时遇到问题 我创建了一个 python 脚本来做到这一点 然而 它会迅速消
  • UISegmentedControl 截断段标题

    我的 iPhone 应用程序中有一个分段控件 在 ios6 上运行良好 但在 ios7 上 分段图块被截断 有足够的空间容纳文本 但无论如何都会截断它们 self segmentedControl segmentedControlStyle
  • tf.estimator.train_and_evaluate 出错了 评估精度和损失

    I use tf estimator train and evaluate训练和评估我的模型 这是我的代码 import tensorflow as tf import numpy as np from tensorflow contrib
  • 为什么 C++ 友元类只需要在其他命名空间中进行前向声明?

    假设我有一堂课F那应该是班级的朋友G 在全局命名空间中 和C 在命名空间中A 成为朋友A C F必须向前声明 成为朋友G 没有前向声明F是必要的 同样 一个类A BF可以成为朋友A C无前置声明 以下代码说明了这一点 并使用 GCC 4 5
  • 将 C++ 代码从 Windows 移植到 Mac

    我是一名长期的 Windows 开发人员 看起来我将参与将 Windows 应用程序移植到 Mac 的工作 我们决定对两侧的 GUI 使用 Flex Air 顺便说一句 它看起来非常光滑 我的 Windows 应用程序有一个控制网络适配器
  • R 错误:“尝试在 get1index 中选择少于一个元素”

    我是 R 初学者 我正在尝试使用该包ClonEvol 但是 github 网页上的文档非常有限 所以现在我正在使用他们的示例代码并尝试将其适应我的数据 称为ce ce lt data frame cluster c 1 1 1 1 2 2
  • 为什么“this”指针在单步执行代码时会改变其值?

    我正在调试崩溃 我注意到调试器的一个步骤 this指针改变了它的值 经过 3 个步骤 它最终得到了值 0x00000001 应用程序崩溃了 现在 0x00000001 值显然是错误的 但我真的应该期待吗this当我单步执行调试器时值会改变吗
  • Chrome 文件阅读器

    有人可以给我一个使用 FileReader API 在 chrome 中获取文件内容的示例吗 似乎要回归了undefined for me
  • 如何使用 Espresso 检查 Viewpager 项目 ID?

    我有一个 Viewpager 它由相同片段视图的副本组成 您可以在它们之间滑动 我正在编写一个 Espresso 测试并尝试对每个页面的 id 进行断言 但它们显然是不明确的 因为加载了多个页面并且它们都共享相同的 id 我不想将视图寻呼机
  • 有效地在多个维度上查找邻居并根据邻近度计算值的总和

    我的任务是找到中心元素可变距离内所有元素的总价值 这些元素使用 3 个维度 我的数据中的列 进行排列 每个元素在给定 3 个维度的情况下都有一个唯一的位置 并且有一个唯一的 id 我有一个可以完成我想要的工作的版本 但是它非常慢 我正在使用
  • grep 与不包含关键字的后上下文[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想 grep 日志 并收集某个异常堆栈跟踪 但我只想查看那些在 after context 中不包含某些关键字的异常 我不知道关键字在后上下文中的哪
  • 编译项目时出现25.0.0错误

    我有一个项目到目前为止运行良好 今天突然面临这些问题 Error A problem occurred configuring project app gt Could not resolve all dependencies for co
  • rgl:绘制带有彩色面、顶点和线的立方体

    为了演示 3D 线性变换的效果 x gt A x 我想画一个立方体并在下面显示它的变换A 为此 我需要分别为每个面着色 并显示顶点和勾勒每个面的线条 我不知道如何为脸部使用不同的颜色 以及如何使其更通用 因此我不必在转换下重复所有步骤来获得