visualise op• Datenarten: flow2d → table
• Aufruf: import fullseye as fs; fs.ledger.piv_streamlines(flow, seeds=None, separation=None, step=0.25, max_length=None, min_speed=0.001, test_ratio=0.5) (die Implementierung direkt: import pivops; pivops.piv_streamlines(flow, seeds=None, separation=None, step=0.25, max_length=None, min_speed=0.001, test_ratio=0.5); aus dem Register: opspiv.get("piv_streamlines"))
Verfolgt Stromlinien mit RK4 (entspricht MATLABs stream2 / streamslice).
Ohne seeds werden die Startpunkte automatisch mit gleichabständiger Platzierung nach Jobard–Lefer (1997) gesetzt. Stromlinien verlaufen in Abständen von etwa separation und werden dort abgeschnitten, wo sie näher als test_ratio * separation kommen. Pfeildiagramme verklumpen, wenn sie dicht sind, und von Hand gesetzte Startpunkte hinterlassen Lücken, diese Platzierung aber erzeugt weder Lücken noch Überlappungen (die 2 Eigenschaften unten dienen als Gates).
• Abtastpunkte verschiedener Stromlinien kommen einander nie näher als test_ratio * separation.
• Jeder Gitterpunkt mit Geschwindigkeit mindestens min_speed liegt innerhalb von separation irgendeiner Stromlinie (nichts ausgelassen).
Koordinaten liegen auf dem Gitter von flow (Zeile 0 oben, (row, col)). Das Richtungsfeld wird durch die Geschwindigkeit geteilt und schreitet nach Bogenlänge fort, daher ist 1 Schritt step Gittereinheiten. Die Geschwindigkeit wird für jeden Punkt der Stromlinie separat geliefert.
Args:
flow: (2, h, w) (dy, dx).
seeds: (row, col) der Form (n, 2). None setzt sie automatisch.
separation: Abstand der Stromlinien [Gitter]. None ergibt max(h, w) / 25 (mindestens 2).
step: 1 Schritt von RK4 [Gitter].
max_length: maximale Länge in eine Richtung [Gitter]. None ergibt 4 * (h + w).
min_speed: dort anhalten, wo es langsamer ist (Verhältnis zur maximalen Geschwindigkeit).
test_ratio: Abbruchabstand als Vielfaches von separation (0 < x ≤ 1).
Returns:
dict(table): paths (list aus (m_i, 2), geordnet stromaufwärts → stromabwärts),
speed (list der Geschwindigkeiten je Punkt), seeds, stop (list der Grundpaare
(rückwärts, vorwärts)), n, separation, d_test, step,
stop_counts (Anzahl je Grund).
Raises:
ValueError: Form / nicht-endliche Werte von flow, Parameter außerhalb des Bereichs, Startpunkte außerhalb des Gitters.
• Leitfaden zur Familie piv_displacement
• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).
• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.
• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.
• piv_field_analysis_tour — py -3.11 examples/piv_field_analysis_tour.py
table als Eingabe)—
visualise)piv_flow_to_rgbimage · piv_line_integral_convolution · piv_quiver · piv_streamline_image
*Provenance: pivops.py — PIV Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.