- 积分
- 33
- 注册时间
- 2005-6-2
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2008-5-29 05:31:08
|
显示全部楼层
来自 美国
版主厉害,很快就搞好了。
RegionPlot 和 RegionPlot3D 在条件复杂或者靠近极点的时候,效果比较差。例如用RegionPlot3D来画一个壁很薄的圆柱。 这个例子里面,如果把Abs[x] + Abs[y] >= 0.4 改为Abs[x] + Abs[y] >= 0.1就看不到中间的方框,或者改为Abs[x] + Abs[y] >= 1,就会出现断点。当然可以玩一些小把戏,把Abs[x] + Abs[y] >= 1改为Abs[x] + Abs[y] >= 0.9999,然后加上MaxRecursion -> 3,效果和Abs[x] + Abs[y] >= 1差不多。(图1)
Code: RegionPlot[
x^2 + y^2 < 1 && Abs[x] + Abs[y] >= 0.9999, {x, -1, 1}, {y, -1, 1},
Mesh -> 40, MeshFunctions -> {#1 - #2 &, #1 + #2 &},
MaxRecursion -> 3, Frame -> False]
不过可以发挥RegionPlot的长处,但是不让它太累。 用RegionPlot来画圆,加网格。然后在圆上覆盖一个白色的方框(旋转过的graphics primitive)。(图2和3)
Code:
Show[RegionPlot[x^2 + y^2 < 1, {x, -1, 1}, {y, -1, 1}, Mesh -> 40,
MeshFunctions -> {#1 - #2 &, #1 + #2 &}, Frame -> False],
Graphics[{White,
Rotate[Rectangle[{-r, -r}, {r, r}], 40 Degree, {0, 0}]}]] //.
r -> Sqrt[2]/2 (*图2*)
Code:
Show[RegionPlot[x^2 + y^2 < 1, {x, -1, 1}, {y, -1, 1}, Mesh -> 40,
MeshFunctions -> {#1 - #2 &, #1 + #2 &}, Frame -> False],
Graphics[{White,
Rotate[Rectangle[{-r, -r}, {r, r}], 45 Degree, {0, 0}]}]] //.
r -> 0.02 (*图3*)
总结:graphics primitive(基本图形)是不能加网格什么的。用RegionPlot或者RegionPlot3D来画特别需要的部分(结合MeshFunctions),然后用基本图形修饰。
[ 本帖最后由 smarten 于 2008-5-29 05:41 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
评分
-
2
查看全部评分
-
|