Max*_*Max 6 wolfram-mathematica
当我运行以下代码时
pMin = {-3, -3};
pMax = {3, 3};
range = {pMin, pMax};
Manipulate[
GraphicsGrid[
{
{Graphics[Locator[p], PlotRange -> range]},
{Graphics[Line[{{0, 0}, p}]]}
}, Frame -> All
],
{{p, {1, 1}}, Locator}
]
Run Code Online (Sandbox Code Playgroud)

我希望Locator控件在第一个Graph的范围内,但它可以在整个GraphicsGrid区域内移动.我的代码中有错误吗?
我也试过了
{{p, {1, 1}}, pMin, pMax, Locator}
Run Code Online (Sandbox Code Playgroud)
代替
{{p, {1, 1}}, Locator}
Run Code Online (Sandbox Code Playgroud)
但它表现完全错误.
UPDATE
感谢大家,这是我的最终解决方案:
Manipulate[
distr1 = BinormalDistribution[p1, {1, 1}, \[Rho]1];
distr2 = BinormalDistribution[p2, {1, 1}, \[Rho]2];
Grid[
{
{Graphics[{Locator[p1], Locator[p2]},
PlotRange -> {{-5, 5}, {-5, 5}}]},
{Plot3D[{PDF[distr1, {x, y}], PDF[distr2, {x, y}]}, {x, -5, 5}, {y, -5, 5}, PlotRange -> All]}
}],
{{\[Rho]1, 0}, -0.9, 0.9}, {{\[Rho]2, 0}, -0.9, 0.9},
{{p1, {1, 1}}, Locator},
{{p2, {1, 1}}, Locator}
]
Run Code Online (Sandbox Code Playgroud)

UPDATE
现在的问题是我无法调整大小并旋转下三维图形.有谁知道如何解决这个问题?我回到了两个Slider2D对象的解决方案.
如果检查InputForm,您会发现GraphicsGrid返回一个Graphics对象.因此,定位器确实在整个图像中移动.
GraphicsGrid[{{Graphics[Circle[]]}, {Graphics[Disk[]]}}] // InputForm
Run Code Online (Sandbox Code Playgroud)
如果你只是将GraphicsGrid更改为Grid,定位器将被限制在第一部分,但结果仍然看起来有点奇怪.你的PlotRange规范有点奇怪; 它似乎与文档中心中指定的任何格式不对应.也许你想要的东西如下.
Manipulate[
Grid[{
{Graphics[Locator[p], Axes -> True,
PlotRange -> {{-3, 3}, {-3, 3}}]},
{Graphics[Line[{{0, 0}, p}], Axes -> True,
PlotRange -> {{-3, 3}, {-3, 3}}]}},
Frame -> All],
{{p, {1, 1}}, Locator}]
Run Code Online (Sandbox Code Playgroud)
LocatorPane[] 把定位器限制在一个区域做得很好.
这是Wizard先生使用的方法的变体.
Column[{ LocatorPane[Dynamic[pt3],
Framed@Graphics[{}, ImageSize -> 150, PlotRange -> 3]],
Framed@Graphics[{Line[{{-1, 0}, Dynamic@pt3}]}, ImageSize -> {150, 150},
PlotRange -> 3]}]
Run Code Online (Sandbox Code Playgroud)

我原以为你希望定位器与它控制的行共享空间.事实上,要"附加"到线上.事实证明,这更容易实现.
Column[{LocatorPane[Dynamic[pt3],Framed@Graphics[{Line[{{-1, 0}, Dynamic@pt3}]},
ImageSize -> 150, PlotRange -> 3]]}]
Run Code Online (Sandbox Code Playgroud)

我不确定你想要实现的目标.我看到了很多问题,但我不知道该解决什么问题.也许你只想要一个简单的Slider2D结构?
DynamicModule[{p = {1, 1}},
Column@{Slider2D[Dynamic[p], {{-3, -3}, {3, 3}},
ImageSize -> {200, 200}],
Graphics[Line[{{0, 0}, Dynamic[p]}],
PlotRange -> {{-3, 3}, {-3, 3}}, ImageSize -> {200, 200}]}]
Run Code Online (Sandbox Code Playgroud)
这是对有关3D图形旋转的更新问题的回复.
我相信大卫建议的LocatorPane是一个很好的方法来解决这个问题.我只是放入一个泛型函数,因为你的例子不会在Mathematica 7上运行.
DynamicModule[{pt = {{-1, 3}, {1, 1}}},
Column[{
LocatorPane[Dynamic[pt],
Framed@Graphics[{}, PlotRange -> {{-5, 5}, {-5, 5}}]],
Dynamic@
Plot3D[{x^2 pt[[1, 1]] + y^2 pt[[1, 2]],
-x^2 pt[[2, 1]] - y^2 pt[[2, 1]]},
{x, -5, 5}, {y, -5, 5}]
}]
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |