我需要幫助。我有很多變量,我在我的Graphics[]
命令中使用,這些變量依賴於一個變量(在我的示例中爲H)。我想操作我的圖形,以便通過相應地更改H圖形更改的值。但這並不像我想象的那麼容易。在mathematica中調整操作輸出
如果您對如何實現這一點有任何想法,我將不勝感激。
(*This variables are dependent on H that I want to change in
manipulate*)
R = 10;
\[Alpha] = ArcSin[H/R];
p = H/Tan[\[Alpha]];
n = 1.5;
\[Beta] = ArcSin[n Sin[\[Alpha]]];
\[Theta] = \[Beta] - \[Alpha];
l = H/Tan[\[Theta]];
(*This is the graphic I want to make manipulated*)
Graphics[{(*Incident ray*)Line[{{-2, H}, {p, H}}],(*Prism*)
Circle[{0, 0}, R, {0, Pi/2}],
Line[{{0, 0}, {0, 10}}],(*Refracted ray*)
Line[{{p, H}, {p + l, 0}}],(*Surface*)
Line[{{0, 0}, {p + l + 10, 0}}]}]
這是我的解決方案之一,但它真的很混亂。我所做的只是手動插入這些值。有沒有更合適的方式來acomplish此:
R = 10;
n = 1.5;
Manipulate[
Graphics[{(*Incident ray*)
Line[{{-2, H}, {H/Tan[ArcSin[H/10]], H}}],(*Prism*)
Circle[{0, 0}, R, {0, Pi/2}],
Line[{{0, 0}, {0, 10}}],(*Refracted ray*)
Line[{{H/Tan[ArcSin[H/10]],
H}, {H/Tan[ArcSin[H/10]] +
H/Tan[ArcSin[n Sin[ArcSin[H/10]]] - ArcSin[H/10]],
0}}],(*Surface*)
Line[{{0,
0}, {H/Tan[ArcSin[H/10]] +
H/Tan[ArcSin[n Sin[ArcSin[H/10]]] - ArcSin[H/10]] + 10,
0}}]}], {H, 0.0001, 10, Appearance -> "Labeled"}]
,以及如何讓我的圖形不改變它的大小不斷。我希望棱鏡具有固定的尺寸和入射光線來改變它的位置(因爲當我在上面的例子中,H得到大於6.66 /這個解決方案時)。
這個問題可能令人困惑,但如果你在Mathematica中試用它,你會看到我想要的。謝謝你的任何建議。
順便說一句,我從你的代碼中移除了幾條固定的行 - 很容易把它們放回去。 – 2012-01-14 18:47:27
我沒有仔細看過,但似乎有一個小錯誤。 「長度」滑塊不會停在'10/n'處。如果你經過它,它會回落到0.0001。同樣,如果增加「折射」滑塊以使長度> 10/n,則長度回到0,但滑塊可自由移動。我知道它的物理原理以及它爲什麼會發生,但是如果滑塊停止,可能會更好,而不是自動重置/移動。在任何情況下,歡迎堆棧溢出,並感謝提交的建議:) – abcd 2012-01-14 20:07:30
感謝您指出了這一點,尤達和感謝的熱烈歡迎。我調整了一下代碼。 – 2012-01-14 20:31:44