ManimCommunity / ManimCommunity/manim

Angle does not change value when line updates

Open
#4,512 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
40.9k
Forks
3.1k
Avg merge
3d 12h
Merged PRs (30d)
25

Description

## Description of bug / unexpected behavior
When an Angle is initialized on two lines (even with `always_redraw`) and one of the lines changes the value of the angle doesn't reflect that change.
Might be a duplicate of #3698, if so, can someone please explain?

## Expected behavior
Running `angle.get_value()` should reflect the change in rotation of the lines.

## How to reproduce the issue
Code for reproducing the problem

Minimal example that just prints the angles to the console while rendering
```py
from manim import *

class Main(Scene):
def construct(self):
l1 = Line(LEFT, RIGHT)
l2 = Line(DOWN, UP)
a = always_redraw(lambda: Angle(l1, l2))
print(a.get_value())
l1.rotate(PI / 4)
print(a.get_value())
```

Example with something on the screen
```py
from manim import *

class Main(Scene):
def construct(self):
rotation = ValueTracker(0)
l1 = Line(LEFT, RIGHT)
l2 = always_redraw(lambda: Line(DOWN, UP).rotate(rotation.get_value()))
a = always_redraw(lambda: Angle(l1, l2))
text = always_redraw(lambda: Tex(str(a.get_value())).shift(2 * UP))
self.add(l1, l2, a, text)
self.play(rotation.animate.set_value(PI / 4))
self.wait()
```

## Additional media files
Images/GIFs

[a render of the second example: manim -qh main.py Main](https://github.com/user-attachments/assets/18db1071-f8d7-4589-94a4-e0273fb49b1b)

## Logs
Terminal output

```
~> manim -v DEBUG main.py
Manim Community v0.19.1

1.5707963267948966
[12/14/25 17:37:53] DEBUG Hashing ... hashing.py:360
DEBUG Hashing done in 0.018946 s. hashing.py:372
DEBUG Hash generated : hashing.py:375
3544663784_359959684_1130657173
DEBUG List of the first few animation cairo_renderer.py:103
hashes of the scene:
['3544663784_359959684_1130657173'
]
[12/14/25 17:37:55] INFO Animation 0 : Partial movie scene_file_writer.py:590
file written in
'/home/user/Projects/testing_Ma
nim/media/videos/main/1080p60/p
artial_movie_files/Main/3544663
784_359959684_1130657173.mp4'
1.5707963267948966
INFO Combining to Movie file. scene_file_writer.py:740
DEBUG Partial movie files to combine scene_file_writer.py:624
(1 files):
['/home/user/Projects/testing_M
anim/media/videos/main/1080p60/
partial_movie_files/Main/354466
3784_359959684_1130657173.mp4']
INFO scene_file_writer.py:887
File ready at
'/home/user/Projects/testing_Ma
nim/media/videos/main/1080p60/M
ain.mp4'

INFO Rendered Main scene.py:279
Played 1 animations
```

## System specifications

System Details

- OS (with version, e.g., Windows 10 v2004 or macOS 10.15 (Catalina)): Debian 6.12.57-1 (2025-11-05) x86_64 GNU/Linux
- RAM: 64 GB DDR 5
- Python version (`python/py/python3 --version`): Python 3.12.12
- I use UV for a virtual environment: uv 0.9.9
- Installed modules (provide output from `pip list`):
- I used uv pip list, as I don't have a global installation of pip
```
Package Version
----------------- -------
av 13.1.0
beautifulsoup4 4.14.3
click 8.3.1
cloup 3.0.8
decorator 5.2.1
glcontext 3.0.0
isosurfaces 0.1.2
manim 0.19.1
manimpango 0.6.1
mapbox-earcut 2.0.0
markdown-it-py 4.0.0
mdurl 0.1.2
moderngl 5.12.0
moderngl-window 3.1.1
networkx 3.6
numpy 2.3.5
pillow 12.0.0
pycairo 1.29.0
pydub 0.25.1
pyglet 2.1.11
pyglm 2.8.3
pygments 2.19.2
rich 14.2.0
scipy 1.16.3
screeninfo 0.8.1
skia-pathops 0.9.0
soupsieve 2.8
srt 3.5.3
svgelements 1.9.6
tqdm 4.67.1
typing-extensions 4.15.0
watchdog 6.0.0
```

LaTeX details

+ LaTeX distribution (e.g. TeX Live 2020): texlive-full (from the apt repos)
+ Installed LaTeX packages:
None:
```
(running on Debian, switching to user mode!)
(see /usr/share/doc/texlive-base/README.tlmgr-on-Debian.md)
TLPDB: not a directory, not loading: /home/user/texmf
tlmgr: user mode not initialized, please read the documentation!
```

## Additional comments

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the Angle implementation and the always_redraw behavior used in the reproductions. Run the minimal example, then verify that get_value() changes after one of the input lines rotates and that the rendered example updates consistently.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
computer-graphics
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.