decide op• 데이터 종류: any → table
• 호출: import fullseye as fs; fs.ledger.mirror_virtual_camera(cam_pose, mirror_plane) -> 'Dict[str, object]'(구현을 직접 호출하려면 import drivedecide; drivedecide.mirror_virtual_camera(cam_pose, mirror_plane) -> 'Dict[str, object]', 원장에서 가져오려면 opsdrive.get("mirror_virtual_camera"))
평면 거울에 비친 상을 찍는 가상 카메라.
cam_pose 는 world→camera 의 4×4(render3d.look_at 의 규약: X_cam = P X, −Z 가 앞). mirror_plane 은(n_x, n_y, n_z, d)(n·X = d).
반환값(dict):
• reflection: 반사 S(mirror_reflection_matrix).
• pose_mirrored = P·S: 실제 장면을 이것으로 찍으면 실제 카메라가 거울 너머로 보는 상 그 자체(픽셀 위치까지 같음). 회전부의 행렬식은 −1(좌우가 반전된 좌표계. 렌더러에 따라 면의 앞뒤 판정이 반대가 됨).
• pose = F·P·S, F = diag(−1, 1, 1, 1): 보통의 오른손 좌표계 카메라(행렬식 +1) = 거울 너머에 있는 가상 카메라. 이것으로 찍은 영상은 거울에 비친 상의 좌우 반전(픽셀로는 u' = 2c_x − u). 백미러를 "뒤를 향한 카메라"로다룰 때는 이쪽(운전자가 보는 상으로 되돌리려면 좌우를 반전한다).
• eye: 가상 카메라의 위치 S(C)(C = 실제 카메라의 위치). eye_real: C.
• flip: "x"(pose 의 영상은 x 를 반전하면 거울상이 됨).
닫힌 형식: S(X) = X − 2(n·X − d)n. 거울에 비친 점 Q 의 상의 위치는 S(Q)(거울 반대편, 거울면에서 같은 거리). 게이트(테스트): 입사각 = 반사각을 만족하는 거울면 위의 점 M 을 수치로 풀고(Fermat 의 최단 경로), C + (|CM| + |MQ|)·unit(M − C) 가 S(Q) 와 일치하는지 확인.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• poc_driving_decisions — py -3.11 examples/poc_driving_decisions.py
table 를 입력으로 받는 것)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
decide)mirror_reflection_matrix · mirror_aim_normal · convex_mirror_fov · mirror_blind_zone · check_sequence_score · signal_phase_plan · signal_state · predict_amber_onset
*Provenance: drivedecide.py — DRIVE 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.