小编cor*_*ion的帖子

如何叠加两个ReliefPlots或其他图形

如果图形是由ReliefPlot或DensityPlot等函数生成的,使用Opacity来控制外观,是否可以在Mathematica中叠加两个或多个图形?

例如:

a = ReliefPlot[
        Table[i + Sin[i^2 + j^2], {i, -4, 4, .03}, {j, -4, 4, .03}], ImageSize -> 100]
b = ReliefPlot[
        Table[i + Sin[i^3 + j^3], {i, -4, 4, .03}, {j, -4, 4, .03}], ImageSize -> 100]
Show[a,b]
Run Code Online (Sandbox Code Playgroud)

结合这两者,但我无法弄清楚如何在这里任何地方插入一个不透明度命令,以便两者都可见.文档说明这些函数接受与Graphics相同的选项("ReliefPlot具有与Graphics相同的选项,具有以下添加和更改:"),但我不明白如何控制图形......(我可能对图形选项和指令之间的区别感到困惑.)

启蒙 - 不那么透明 - 非常欢迎!

编辑:哇,你们比我的Mathematica版本更快 - 谢谢!

wolfram-mathematica

13
推荐指数
5
解决办法
1524
查看次数

如果它们在同一个图形中,为什么字形不会排列?

我正在尝试覆盖不同字体的字形,但很难让它们排成一行.我敢肯定他们应该排队比这更好.我怎样才能做到这一点?

Graphics[
   {Opacity[0.1],
      {Text[Style["a", FontFamily -> "Helvetica", 240]],
       Text[Style["a", FontFamily -> "Arial", 240]]}
   }]
Run Code Online (Sandbox Code Playgroud)

此外,我有兴趣绘制轮廓 - 这里我选择了它们,但我想绘制它们.

截图

编辑:谢谢!在您的帮助下,我能够实现我想要的大部分内容:

Manipulate[
 Graphics[{{{Opacity[opacity], 
     Text[Style["Greats", Red, FontFamily -> "Helvetica",  180], {0, 
       0}, {Center, Baseline}]}, {Opacity[1 - opacity], 
     Text[Style["Greats", Blue, FontFamily -> "Arial", 180],  {0, 
       0}, {Center, Baseline}]}}}], {opacity, 0.1, 1, 0.1}]
Run Code Online (Sandbox Code Playgroud)

截图

fonts wolfram-mathematica

12
推荐指数
1
解决办法
161
查看次数

将文本添加到多面体的面

是否可以自动将任何文本添加到多面体的面上,如此手动绘制的图形显示(示例的奇数编号方案不相关):

十二面体的标记面

标记顶点很容易:

c = 1;
Show[{Graphics3D[
   Text[c++, #] & /@ PolyhedronData["Dodecahedron", "VertexCoordinates"]], 
   PolyhedronData["Dodecahedron"]},
   Boxed -> False]
Run Code Online (Sandbox Code Playgroud)

标记的十二面体边缘

(即使一些文本放在隐藏顶点的形状前面.这可能是可溶的.)

但是,当我试图为面孔做同样的事情时,没有任何效果.PolyhedronData["Dodecahedron", "Faces"]返回GraphicsComplex,而不是坐标.

我忽略了一个简单的解决方案/选项吗?

编辑:感谢这些答案,他们都很棒.如果我能将szabolcs的答案的文本放置与belisarius的文本质量相结合,那么完美的解决方案就在眼前!

wolfram-mathematica

12
推荐指数
2
解决办法
1001
查看次数

如何使ImageTransformation产生一个变形版本的图像

我正在尝试使用ImageTransformation函数来尝试制作变形版本的图像,但到目前为止进展有限.我的目标是使用在柱面镜中反射的图像得到的结果,图像在中心镜周围弯曲约270度.在维基百科的文章有几个精致的例子(和我借霍尔拜因的头骨从他们太).

i = Import["../Desktop/Holbein_Skull.jpg"];
Run Code Online (Sandbox Code Playgroud)

维基百科holbein头骨

i = ImageResize[i, 120]
f[x_, y_] := {(2 (y - 0.3) Cos [1.5 x]), (2 (y - 0.3) Sin [1.5 x])};
ImageTransformation[i, f[#[[1]], #[[2]]] &, Padding -> White] 
Run Code Online (Sandbox Code Playgroud)

维基百科holbein头骨

但我无法说服Mathematica向我展示整个图像,或者正确地弯曲它.变形图像应该围绕放置在图像中心"内部"的镜子,但它不会.我通过将其放入一个操作(并将分辨率降低:)来找到常量的合适值.我正在使用这个公式:

x1 = a(y + b) cos(kx)
y1 = a(y + b) sin(kx)
Run Code Online (Sandbox Code Playgroud)

任何帮助产生更好的结果将不胜感激!

wolfram-mathematica image-processing

9
推荐指数
1
解决办法
1977
查看次数

由内而外的图像变换

在探索了Heike对我之前关于变形变换的问题的非常好的答案之后,我最终想要看到一个完全由里面翻转的图像.

我们的想法是,不仅仅是通过变形变换来拉伸图像,就像你拉动纸张的边缘一样,你实际上可以将纸张"从里面拉出来".内部"像素"将被拉出到边缘(极度扭曲/拉伸),而外部像素将向内朝向中心压扁(大大缩小).

我无法说明它,但另一种尝试描述它的方法是在这张图片中:

从里到外的图像变换

因此,像素越红,它们转换到边缘的次数就越多(反之亦然).

我尝试过FindGeometricTransform,但它似乎没有任何领先优势.

findgeometrictransform

这对谷歌来说并不容易,我还没有在Mathematica中找到任何线索,这种破坏性的转变是可能的.这是一种2.5D的重新投影.

你怎么看?可能吗?

编辑

所以,由于你的答案很好,我现在可以正确地说明我的问题:

这是莱昂纳多着名的Anom Asil,这是对可怜的Lisa进行内向外变换​​的结果():

内向的蒙娜丽莎

这是布拉格的Orloj:

里里外外的时钟

对此的实际用途即将到来,呃,很快......

谢谢!

wolfram-mathematica image-processing

8
推荐指数
1
解决办法
569
查看次数

如何控制图像和图形的大小?

我一直无法正确安排图形元素.这是一个例子:

im1 = Import["http://upload.wikimedia.org/wikipedia/commons/5/5c/London_2010_Tower_Bridge.jpg"];
GraphicsRow[{im1, ImageAdd[im1, Graphics[Disk[]]], Graphics[Disk[]]}]
Run Code Online (Sandbox Code Playgroud)

问题的例子

圆圈都以相同的方式指定,但以不同的比例显示,因此试图显示其工作原理的图表并不十分令人满意.显然,一个缩放以匹配图像,但我不明白为什么它们看起来不相同.Row类似于GraphicsRow但给了我同样的问题.

wolfram-mathematica

8
推荐指数
3
解决办法
1683
查看次数

使用多面体作为图形基元,放置点和缩放

我可以问一个简单的初学者的问题,在我的任何一个文本中都无法找到一个易于理解的答案(在某些情况下,这些文本已经很老了,早于版本6)?你如何使用多面体,就好像它们是像Sphere和Cuboid这样的图形基元?即,以一个点为中心并缩放.以下是一些愚蠢的例子来说明这一点:

(* spheres along a path *)
data = Table[{Cos[t], Sin[t], Sin[t] Cos[2 t]}, {t, 0, 2 Pi, Pi/24}];
Graphics3D[Sphere[#, 0.3] & /@ data]
Run Code Online (Sandbox Code Playgroud)

球体循环

(* cubes along a path *)
Graphics3D[Cuboid[#, # + 0.1] & /@ data]
Run Code Online (Sandbox Code Playgroud)

多维数据集循环

那么如何将icosahedra置于特定的点和规模,写出类似的东西

Graphics3D[icosahedron[#, 0.1] & /@ data]
Run Code Online (Sandbox Code Playgroud)

编辑:我认为我的问题是如何制作GraphicsComplexGraphics3D合作.例如,我目前在哪里:

shapes[ct_, siz_] := {Sphere[ct - .2, siz ], Sphere[ct - 0.1, siz]};
Graphics3D[{{shapes[#, size] & /@ data}}]
Run Code Online (Sandbox Code Playgroud)

我想替换Sphere[]icosahedron[].我目前正试图让Heike的解决方案工作......

编辑2:现在工作正常,谢谢Heike.不确定我会不会得到它3D打印 - 看起来有点不舒服...

柏拉图式手镯

wolfram-mathematica

7
推荐指数
1
解决办法
699
查看次数

寻找图像中的颜色:最近能做到吗?

我正试图找到一种在图像中寻找颜色的方法.这是一个简化的例子:

tree = ExampleData[{"TestImage", "Tree"}]
Run Code Online (Sandbox Code Playgroud)

来自Mathematica示例数据集的树形图像

我可以看到那里有蓝色,所以我想在像素海洋中的某个位置找到xy位置.假设我正在寻找特定的蓝色阴影,我可以提供一些近似的RGB值:

Manipulate[Graphics[{RGBColor[r, g, b], Disk[]}], {r, 0, 1}, {g, 0, 1}, {b, 0, 1}] 
Run Code Online (Sandbox Code Playgroud)

简单的混色器

现在我想找到一些具有该值或足够近的像素的坐标.Nearest也许能够做到:

Nearest[ImageData[tree], {0.32, 0.65, .8}]
Run Code Online (Sandbox Code Playgroud)

但不是 - 它"产生了非常大的输出"......

这样做的反面:

ImageValue[tree, {90, 90}]
Run Code Online (Sandbox Code Playgroud)

如果我已经有数字,那就没问题,或者可以点击图片.一旦我想要的颜色的位置已知,我就可以将其提供给需要"标记"的功能 - 例如RegionBinarize.

我觉得必须有Mathematica功能,但还是找不到它......

wolfram-mathematica

7
推荐指数
1
解决办法
803
查看次数

Mathematica中的Photo Mosaic:2008年的一个例子在Mathematica 8中不起作用

我正在尝试使用Mathematica示例.这是Theo Gray博客上的那个.

我认为Mathematica自编写该代码以来一定发生了变化(2008年5月),因为尽管几乎改变了一切,但我无法从中得到任何合理的结果.我是否使用ImageData而不是Import?任何人都可以建议这个代码的版本适用于Mathematica 8?

imagePool = 
 Map[With[{i = Import[#]}, {i, Mean[Flatten[N[i[[1, 1]]], 1]]}] &, 
  FileNames["Pool/*.jpg"]];
closeMatch[c_] := 
  RandomChoice[Take[SortBy[imagePool, Norm[c - #[[2]]] &], 20]][[1]];
Grid[Reverse[
  Map[closeMatch, Import["MendeleevIcon.tif"][[1, 1]], {2}]], 
  Spacings -> {0, 0}]
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica backwards-compatibility mathematica-8

6
推荐指数
2
解决办法
589
查看次数

没有盒子的输出

我的第一个小时是(迷人的)J语言,看起来很不错,但我遇到了第一个问题,我无法在文档的帮助下进行分析.

如何计算字符串中的字符数:

 y =. 'hello world'
 (~. y) ; " 0 (+/ "  1 =y)
?????
?h?1?
?????
?e?1?
?????
?l?3?
?????
?o?2?
?????
? ?1?
?????
?w?1?
?????
?r?1?
?????
?d?1?
?????
Run Code Online (Sandbox Code Playgroud)

但是我怎么能丢掉盒子呢?我收集;了两个项目在一个水平框中加入,但没有框字符似乎很难做到这一点.如何得到:

h 1
e 1
l 3
Run Code Online (Sandbox Code Playgroud)

等等?这是演示选项吗?

j

3
推荐指数
1
解决办法
93
查看次数