2011-06-07 29 views
1

如何設置Controller以顯示或隱藏Manipulate的圖形組件?在Mathematica中使用Manipulate顯示或隱藏組件

Manipulate[Graphics[ 
{Pink, Disk[{1, 1}, r], 
Green, Disk[{2, 2}, r]}], 
{{r, 0.5, Style["Radius", Black, 16]}, 0.5, 5, 1, 
Appearance -> "Labeled"}] 

例如,在上文中,如何可以設置一個控制器,用於顯示或不綠圈?

enter image description here

- 解決方案:

Manipulate[Graphics[{ 
    If[thePink, 
    {Pink, Disk[{1, 1}, r]}], 
    If[theGreen, 
    {Green, Disk[{2, 2}, r]}] 
    } 
    ], 
    {{r, 0.5, Style["Radius", Black, 16]}, 0.5, 5, 1, 
    Appearance -> "Labeled"}, 
    {{thePink, True, "Pink"}, {True, False}}, 
    {{theGreen, False, "Green"}, {True, False}}] 

enter image description here

回答

4

你不能真正 「隱藏」 的綠球。

顯示的內容是Manipulate表達式評估的結果。操縱工作方式如下:

操縱[表達式,control_variables]

當任何控制變量的變化(動態地),表達被重新評估,其結果顯示。因此,當您移動滑塊時,您正在更改變量值,因此正在重新評估表達式並顯示其輸出。

要「隱藏」任何東西,您需要更改表達式NOT以輸出綠球。所以,你需要添加一些控制變量(如複選框),如果設置,然後更改表達式不顯示綠色的球。簡單的邏輯測試會做。例如

Manipulate[ 
Graphics[{Pink, Disk[{1, 1}, r], Green, If[show, Disk[{2, 2}, r]], 
    Sequence[]}], {{r, 0.5, "Radius"}, 0.5, 
    5}, {{show, True, "Show Green Circle?"}, {True, False}}] 

編輯:

哇,謝謝西門,我正要粘貼在做的時候,我看到你的編輯你做什麼只是一個例子。謝謝。它與您的代碼幾乎相同。這還不如貼吧:)

Manipulate[Graphics[ 
{ Pink,Disk[{1,1},r], 
    If[on,{Green,Disk[{2,2},r]}] 
}] , 

{{r,0.5,"Radius"},0.5,5}, 
{{on,False,"show green ball"},{True,False}} 

] 
+0

啊,似乎大家都想通了在同一時間! En Francais:「Les grands esprits se rencontrent」;) – 500 2011-06-07 22:46:09

+0

沒問題。我不確定你是否回來編輯你的答案,因爲我已經準備好了代碼... – Simon 2011-06-08 00:47:14

2

也許:

Manipulate[ 
Graphics[{Pink, Disk[{1, 1}, r], Opacity[o], 
      Green, Disk[{2, 2}, r]}], 
{{r, 0.5, "Radius"}, 0.5, 5}, 
{{o, 0.5, "Opacity"}, 0, 1}] 
+0

從你的常規答案中知道你的技能,我一定沒有把這個問題弄好! – 500 2011-06-07 22:49:45

+0

@ 500我不明白你希望你的圈子消失「點擊一下」:) – 2011-06-07 22:59:42

+0

這就是爲什麼這個論壇是一個很好的培訓精度給我;) – 500 2011-06-07 23:06:48