ManimCommunity / ManimCommunity/manim

Refactor TipableVMobject tip placement to avoid curve deformation and transform coupling

Open
#4,608 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
40.9k
Forks
3.1k
Avg merge
3d 12h
Merged PRs (30d)
25

Description

## Overview
`TipableVMobject` tip handling currently conflates tip placement with geometry reshaping of the parent curve.

While working on #4503, two code TODOs highlighted behavior that should be tracked explicitly in an issue instead of comments in source.

## Current behavior
1. `position_tip()` directly shifts/rotates the tip mobject to place it at the anchor point.
- This tightly couples the tip's local transform to parent-side placement logic.
- It is awkward for custom tip implementations that expect stable local coordinates.
2. `reset_endpoints_based_on_tip()` calls `put_start_and_end_on(...)` with tip base points.
- For non-linear tipable mobjects (e.g. arcs), this can redefine/deform the underlying curve instead of only accounting for the tip attachment.

## Desired direction
- Tip placement should be representable as attachment/anchoring logic without mutating the conceptual shape of the underlying curve.
- Endpoint adjustment should trim/extend along the curve direction (or equivalent local rule), not reparameterize the whole curve via `put_start_and_end_on`.
- Keep tip local transforms as independent as possible from parent placement mechanics.

## Related
- PR: #4503
- Existing reports likely touching the same root cause:
- #1801
- #3099

Contributor guide

Open the contributing guide

Research direction

Start with TipableVMobject.position_tip() and reset_endpoints_based_on_tip(), then review the context from PR #4503 and related reports #1801 and #3099. Define an attachment approach that preserves the parent curve and keeps tip local transforms independent; done means non-linear tipable objects are not deformed by endpoint adjustment.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
computer-graphics
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.