add videos in stereo.2
This commit is contained in:
parent
8fb3ddad8f
commit
94dee54cdb
@ -34,7 +34,7 @@ def bindfig(fig):
|
||||
|
||||
class SympyAnimationWrapper:
|
||||
"""
|
||||
Context manager for binding a figurebinfoinfoinfoinfoinfoinfo
|
||||
Context manager for binding a figure for animation.
|
||||
"""
|
||||
def __init__(self, filename: Path | str):
|
||||
self._filename = filename if isinstance(filename, Path) else Path(filename)
|
||||
|
||||
@ -44,7 +44,7 @@ def generate_os(amt):
|
||||
yield ret
|
||||
ret = (ret * o).expand().cancel().simplify()
|
||||
|
||||
os = list(generate_os(10))
|
||||
os = list(generate_os(11))
|
||||
cs = [sympy.re(i).simplify() for i in os]
|
||||
ss = [sympy.im(i).simplify() for i in os]
|
||||
```
|
||||
@ -365,9 +365,7 @@ will plot a $p/1$ polar rose as t ranges over $(-\infty, \infty)$.
|
||||
|
||||
```{python}
|
||||
#| echo: false
|
||||
#| fig-cap: |
|
||||
#| p/1 polar roses as rational curves.
|
||||
#| Since *t* never reaches infinity, a bite appears to be taken out of the graphs near (-1, 0).
|
||||
#| output: false
|
||||
|
||||
@dataclass
|
||||
class Rose:
|
||||
@ -384,7 +382,7 @@ class Rose:
|
||||
)
|
||||
|
||||
|
||||
def animate_roses(filename: str, arguments: list[Rose], interval=200):
|
||||
def animate_roses(filename: str, arguments: list[Rose], interval=500):
|
||||
with SympyAnimationWrapper(filename) as animate:
|
||||
@animate(list(range(len(arguments))), interval=interval)
|
||||
def ret(fr):
|
||||
@ -408,6 +406,13 @@ animate_roses(
|
||||
)
|
||||
```
|
||||
|
||||
::: {#fig-polar-roses-1}
|
||||
{{< video "./polar_roses_1.mp4" >}}
|
||||
|
||||
p/1 polar roses as rational curves.
|
||||
Since *t* never reaches infinity, a bite appears to be taken out of the graphs near (-1, 0)."
|
||||
:::
|
||||
|
||||
$q = 1$ happens to match the subscript *c* term of *x* and *s* term of *y*, so one might wonder
|
||||
whether the other polar curves can be obtained by allowing it to vary as well.
|
||||
And you'd be right.
|
||||
@ -420,7 +425,7 @@ will plot a $p/q$ polar rose as t ranges over $(-\infty, \infty)$.
|
||||
|
||||
```{python}
|
||||
#| echo: false
|
||||
#| fig-cap: p/q polar roses as rational curves
|
||||
#| output: false
|
||||
|
||||
animate_roses(
|
||||
"polar_roses_2.mp4",
|
||||
@ -431,6 +436,11 @@ animate_roses(
|
||||
)
|
||||
```
|
||||
|
||||
::: {#fig-polar-roses-2}
|
||||
{{< video "./polar_roses_2.mp4" >}}
|
||||
|
||||
p/q polar roses as rational curves
|
||||
:::
|
||||
|
||||
Just as with the prior calculus examples, doubling all subscripts of *c* and *s* will
|
||||
only require *t* to range over $(-1, 1)$, which removes the ugly bite mark.
|
||||
@ -700,7 +710,7 @@ Indeed, the sequence of curves with parametrization $R_n(t) = 2nt$ approximate t
|
||||
|
||||
```{python}
|
||||
#| echo: false
|
||||
#| fig-cap: Approximations to the Archimedean spiral
|
||||
#| output: false
|
||||
|
||||
with SympyAnimationWrapper("approximate_archimedes.mp4") as animate:
|
||||
@animate(list(range(10)), interval=500)
|
||||
@ -734,6 +744,13 @@ with SympyAnimationWrapper("approximate_archimedes.mp4") as animate:
|
||||
ret.save() # type: ignore
|
||||
```
|
||||
|
||||
::: {#fig-approx-archimedes}
|
||||
{{< video ./approximate_archimedes.mp4 >}}
|
||||
|
||||
Approximations to the Archimedean spiral
|
||||
:::
|
||||
|
||||
|
||||
Since R necessarily defines a rational curve, the curves will never be equal,
|
||||
just as any stretching of $c_n$ will never exactly become cosine.
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user