Skip to content

Commit ffe2f40

Browse files
committed
Partial rendering by point offset
1 parent 26f8c1f commit ffe2f40

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

src/phyjax2d/moderngl_vis.py

+16-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""
2-
A simple, fast visualizer based on moderngl.
2+
A simple and fast visualizer based on moderngl.
33
Currently, only supports circles and lines.
44
"""
55

@@ -568,15 +568,22 @@ def render(
568568
stated: StateDict,
569569
circle_colors: NDArray | None = None,
570570
sc_colors: NDArray | None = None,
571+
points_offset: NDArray | None = None,
571572
) -> None:
573+
if points_offset is None:
574+
po = np.array([[0.0, 0.0]])
575+
else:
576+
po = points_offset.astype(np.float32).reshape(1, 2)
572577
circle_points, circle_scale, circle_colors_default = _collect_circles(
573578
self._space.shaped.circle,
574579
stated.circle,
575580
self._circle_scaling,
576581
)
577582
if self._circles is not None:
578583
circle_colors = self._get_colors(circle_colors_default, circle_colors)
579-
if self._circles.update(circle_points, circle_scale, circle_colors):
584+
if self._circles.update(
585+
circle_points + circle_points, circle_scale, circle_colors
586+
):
580587
self._circles.render()
581588
if self._static_circles is not None:
582589
sc_points, sc_scale, _ = _collect_circles(
@@ -588,19 +595,22 @@ def render(
588595
_get_sc_color(self._sc_color, stated.static_circle),
589596
sc_colors,
590597
)
591-
if self._static_circles.update(sc_points, sc_scale, sc_colors):
598+
if self._static_circles.update(sc_points + po, sc_scale, sc_colors):
592599
self._static_circles.render()
593600
if self._triangles is not None:
594601
points, _ = _collect_triangles(
595602
self._space.shaped.static_triangle,
596603
stated.static_triangle,
597604
)
598-
if self._triangles.update(points):
605+
if self._triangles.update(points + po):
599606
self._triangles.render()
600607
if self._sensors is not None and self._collect_sensors is not None:
601-
if self._sensors.update(self._collect_sensors(stated)):
608+
if self._sensors.update(self._collect_sensors(stated) + po):
602609
self._sensors.render()
603-
if self._heads.update(_collect_heads(self._space.shaped.circle, stated.circle)):
610+
if (
611+
self._heads.update(_collect_heads(self._space.shaped.circle, stated.circle))
612+
+ po
613+
):
604614
self._heads.render()
605615
if self._static_lines is not None:
606616
self._static_lines.render()

0 commit comments

Comments
 (0)