公告:1)网站程序升级:Q2A升级到1.8.6,Wordpress升级到5.7.2
2)修复了头像加载慢与提交问题反应慢等问题
2021-06-16

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

0 投票
1.1k 浏览
g = RevolutionPlot3D[x^2/(
   4 660), {x, 200, 1100}, {\[Theta], -6 \[Degree], 6 \[Degree]}, 
   Axes -> False, Boxed -> False];
Graphics3D@
 GeometricTransformation[g, 
  RotationTransform[90 \[Degree], {0, -1, 0}, {150, 0, -25}]]

错误提示为:g不是一个 Graphics3D 图元或指令.

但是g的头部是Graphics3D

 

In[47]:= g // Head

Out[47]= Graphics3D

 

用户: niturpe (251 分)

3 个回答

+1 投票

用Rotate函数吧,比如:

g = RevolutionPlot3D[
   x^2/(4 660), {x, 200, 1100}, {\[Theta], -6 \[Degree], 6 \[Degree]},
    Axes -> False, Boxed -> False];

Rotate[g, 90 \[Degree], {{0, -1, 0}, {150, 0, -25}}]

不过,我感觉你真正需要的可能是这些:ViewVectorViewAngle,ViewXXXX...,它们直接放在各种绘图函数中,就可以得到在任何位置向任何方向以任何视角观察到的图像——可理解为调整一台摄像机。比如:

Graphics3D[Cylinder[], ViewVector -> {{10, 10, 5}, {0, 0, 0.5}}, 
 ViewAngle -> 15 Degree]

 

用户: 野鹤 (5.0k 分)
如果要再旋转一次怎么办,如果再嵌套一层Rotate就不行了。因为此时的图形的头部变成了Rotate,整个图形(包含边框)被旋转。事实上Rotate就是对整个图形(包含边框)进行旋转。我只想旋转画的图形(不包含边框)。而且Rotate这种语法再帮助文档也没查到。

帮助文档:
Rotate[g,\[Theta],w,p]
绕固定在 p 的三维矢量 w 旋转.

你的这种语法是Rotate[g,\[Theta],{w,p}]
w和p之间有一层花括号
你使用的是什么版本,我用的是11.2
11.2
我也试了,虽然Plot3D这类图的头部也是Graphics3D,但确实不能用GeometricTransformation旋转。
我得再研究研究,看有没有解决方案。
0 投票


整个图形都被旋转了!

用户: niturpe (251 分)
0 投票
g = RevolutionPlot3D[
   x^2/(4 660), {x, 200, 1100}, {\[Theta], -6 \[Degree], 6 \[Degree]},
    Axes -> False, Boxed -> False];
Graphics3D@
 GeometricTransformation[Normal[g][[1]], 
  RotationTransform[90 \[Degree], {0, -1, 0}, {150, 0, -25}]]

GeometricTransformation中所谓的“图元”指的是Line、Polygon等元素,而RevolutionPlot3D的结果实质上是一个Graphics3D,也就是说图元外面多了一层,去掉之后就可以了

关于图元可以参考帮助中的tutorial/ThreeDimensionalGraphicsPrimitives

用户: 无影东瓜 (1.2k 分)
...