- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个双重问题:
如何在 MATLAB 中绘制一个环形曲面,给定一个大半径 R 和一个小半径 a?为避免混淆,它是 toroidal/poloidal coordinate system ,如下图所示,我正在谈论。
现在,在这个表面上的任何一点 (phi, theta) 中,小半径都会被我存储在矩阵中的某个值扭曲。我如何绘制这个扭曲的表面?一旦我得到第 1 部分的答案,这可能很容易,但这是我的实际目标,因此任何无法处理第 1 部分的解决方案对我来说都是毫无用处的。
如果有人能告诉我如何让图片在这里显得更小,请做 =)
最佳答案
解决您的第一个问题:首先您需要在环面坐标中定义圆环的坐标(看起来很自然!),然后转换为笛卡尔坐标,这是 MATLAB 期望构建所有图的方式(除非您正在制作当然是极坐标图)。因此,我们从定义环形坐标开始:
aminor = 1.; % Torus minor radius
Rmajor = 3.; % Torus major radius
theta = linspace(-pi, pi, 64) ; % Poloidal angle
phi = linspace(0., 2.*pi, 64) ; % Toroidal angle
我们只需要圆环体的单个表面,因此小半径是一个标量。我们现在制作这些坐标的二维网格:
[t, p] = meshgrid(phi, theta);
并使用问题中链接到的维基百科页面上给出的公式转换为 3D 笛卡尔坐标:
x = (Rmajor + aminor.*cos(p)) .* cos(t);
y = (Rmajor + aminor.*cos(p)) .* sin(t);
z = aminor.*sin(p);
现在我们在 3D 中定义了环面,我们可以使用 surf
绘制它:
surf(x, y, z)
axis equal
编辑:要解决你的第二个问题,这取决于你如何存储你的扭曲,但是假设你在每个环形和极向点上定义了一个矩阵,你只需要乘以常数是畸变的小半径。在下文中,我创建了一个失真矩阵,它与我的环形和极向角坐标矩阵具有相同的维度,并且正态分布在平均值为 1 且 FWHM 为 0.1 的情况下:
distortion = 1. + 0.1 * randn(64, 64);
x = (Rmajor + aminor .* distortion .*cos(p)) .* cos(t);
y = (Rmajor + aminor .* distortion .* cos(p)) .* sin(t);
z = aminor.* distortion .* sin(p);
surf(x, y, z)
结果是:
关于matlab - 在 Matlab 中可视化环形曲面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10655393/
我正在尝试从网站(名称)“抓取”一些数据。我知道如何获得列表中的第一个名字——但我需要以同样的方式保存几千个名字。 这是我的代码: library(rvest) library(tidyverse)
我正在尝试制作一个环形 UIBezierPath 用作 CAShapeLayer 的 path 以下产生一个循环路径: let radius = 100.0 let circularPath = UI
如何在 1 分钟后停止 setTimeout。由于循环,它继续运行。TIA var image1 = new Image() image1.src = "images/slide1.jpg"
我现在这个问题发布了更多次,但我还没有解决我的问题。在我的例子中,foregroundColor 不工作。即使 foregroundColor 没有选择任何颜色,环也不会出现 darkGray 颜色。
public class Tester { // instance variables - replace the example below with your own Scanne
来自澳大利亚的投票问题: 一个机器人会不断地输入信息,它可以达到 1000 行。他将输入的内容示例: "1 2 3 2 1 3 2 3 1 1 2 3 3 1 2 " 我怎么知道他什么时候输入完信息?
有人可以启发如何进行这项工作吗?所以现在我有一个 do/while 循环,里面有一个开关。开关由一个 int 选择处理,scanf 是“%d”。但是,如果我写一个不同于数字的字符符号,如 a、b、c.
我是一名优秀的程序员,十分优秀!