diff --git a/src/robofish/io/file.py b/src/robofish/io/file.py index c45bb741bf2414992c2a7f19b3c621ca7fec458a..cc267cbecc21958fb51b3b8068a0b1e549be126b 100644 --- a/src/robofish/io/file.py +++ b/src/robofish/io/file.py @@ -1099,6 +1099,7 @@ class File(h5py.File): zones = [] if render_zones: + fovs = [] for ei, e in enumerate(self.entities): zone_sizes_str = get_zone_sizes_from_model_str(self.attrs.get("guppy_model_rollout", "")) zone_sizes_attrs = get_zone_sizes_from_attrs(e) @@ -1110,10 +1111,14 @@ class File(h5py.File): fov = zone_sizes.get("fov", np.pi*2) fov = np.rad2deg(fov) zone_sizes.pop("fov", None) + fovs.append(fov) entity_zones = [] for zone_size in zone_sizes.values(): - entity_zones.append(matplotlib.patches.Arc((0,0), zone_size, zone_size, angle=0, theta1=-fov/2, theta2=fov/2, color=fish_colors[ei], alpha=0.3, fill=False)) + if fov >= 360: + entity_zones.append(matplotlib.patches.Circle((0, 0), zone_size, color=fish_colors[ei], alpha=0.3, fill=False)) + else: + entity_zones.append(matplotlib.patches.Wedge((0,0), zone_size, theta1=-fov/2, theta2=fov/2, color=fish_colors[ei], alpha=0.3, fill=False)) zones.append(entity_zones) zones_flat = [] @@ -1391,11 +1396,15 @@ class File(h5py.File): poses_trails = entity_poses[:, max(0, file_frame - trail) : file_frame] for i_entity in range(n_entities): for zone in zones[i_entity]: - zone.center = ( + + zone.set_center(( this_pose[i_entity, 0], this_pose[i_entity, 1], - ) - zone.angle = this_pose[i_entity, 2] * 180 / np.pi + )) + if fovs[i_entity] < 360: + ori_deg = np.rad2deg(this_pose[i_entity, 2]) + zone.theta1 = ori_deg - fovs[i_entity] / 2 + zone.theta2 = ori_deg + fovs[i_entity] / 2 if render_swarm_center: swarm_center[0].set_offsets(swarm_center_position[file_frame]) diff --git a/tests/resources/valid_couzin_params.hdf5 b/tests/resources/valid_couzin_params.hdf5 index e8c7ef32b4b929f0db806dadbfd266ab1eaca66b..506cdd1ae9df5a0438b2bcec9b47ffc016037515 100644 Binary files a/tests/resources/valid_couzin_params.hdf5 and b/tests/resources/valid_couzin_params.hdf5 differ