kendama_params — DRIVE kendama op

• 데이터 종류: 없음 → table(인자만으로 정해지는 연산자 —— 이미지나 데이터 입력을 받지 않습니다)

• 호출: import fullseye as fs; fs.ledger.kendama_params(preset: 'str' = 'jka_16_2', *, trick: 'str' = 'ozara', ball_radius: 'float' = None, mass: 'float' = 0.075, string: 'float' = 0.39, cup_radius_big: 'float' = None, cup_depth: 'float' = None, ken_length: 'float' = None, width: 'float' = None, rho: 'float' = 1.2, cd=0.4, cup_offset=None, tie_offset=None, cup_axis=None, g: 'float' = 9.81) -> 'dict'(구현을 직접 호출하려면 import kendama; kendama.kendama_params(preset: 'str' = 'jka_16_2', *, trick: 'str' = 'ozara', ball_radius: 'float' = None, mass: 'float' = 0.075, string: 'float' = 0.39, cup_radius_big: 'float' = None, cup_depth: 'float' = None, ken_length: 'float' = None, width: 'float' = None, rho: 'float' = 1.2, cd=0.4, cup_offset=None, tie_offset=None, cup_axis=None, g: 'float' = 9.81) -> 'dict', 원장에서 가져오려면 opsdrive.get("kendama_params"))

사용법

켄다마 표. 기본값 = preset="jka_16_2"(공 60 mm, 가로폭 70 mm, 전장 180 mm는 일본 켄다마 협회(JKA)의 공표값, 켄의 높이 160 mm와 접시 42 / 38 / 35 mm는 사용자가 제공한 JKA 16-2형 설명(1차 자료 미확인)). "recommended_large_cup" = 큰 접시 49 mm·구멍 24 mm.

키: ball_radius 0.030, string 0.39(실 = 권장 38〜40 cm), pendulum_length = 실 + 공의 반지름(매듭 → 공의 중심, 공의 실 구멍은 큰 구멍의 반대쪽에 둔다), cup_radius_big / cup_radius_base / cup_radius_small(가장자리 반지름), cup_depth (큰 접시의 깊이. 기본 = 가장자리에 올라탄 공 아래 끝의 가라앉음 r_b − √(r_b² − r_c²) + 1.5 mm = 공이 바닥에 닿지 않는 깊이, 로 둔 가정), ken_length(켄의 높이 = 켄 끝 → 중간 접시 가장자리, 160 mm), width(큰 접시 가장자리 〜 작은 접시 가장자리, 70 mm), hole_radius / hole_depth(공의 큰 구멍. 깊이 = 켄 + 공 − 전체 길이 = 40 mm), total_length(조립한 전체 길이 = 켄 + 공 − 구멍 깊이), cross_radius / ken_radius / spike_length / cross_from_tip(가정), mass(공, 가정 75 g), ken_mass(가정 70 g). 기술 trick(KENDAMA_TRICKS: "ozara" 큰 접시 / "kozara" 작은 접시 / "chuzara" 중간 접시 / 촛불 = "rousoku")이 자세를 정한다:

R_ken(켄의 국소 좌표 → 세계: 국소는 켄 끝 +x·큰 접시 +z·원점 = 사라도 중심), grip(쥐는 곳, 국소), 받는 접시 catch_cup("big" / "small" / "base"). 거기서 손(= 쥐는 곳)에 대한 cup_offset(받는 접시 가장자리의 중심), cup_axis (받는 접시의 축, 세계), tie_offset(사라도의 실 구멍: 국소 (0, −cross_radius, 0)), top_offset(켄다마의 가장 높은 곳), cup_radius(받는 접시 가장자리의 반지름)를 구한다. 켄과 사라도는 하나의 강체(자세는 기술마다 고정, 손은 병진). cup_offset / tie_offset / cup_axis 를 주면 그 값으로 덮어쓴다(0 을 주면 점 켄 = 지점 = 접시 = 손: 정리의 게이트). catch_window = 0.003 m: kendama_simulate 는 공의 중심이 「가장자리에 올라타는 높이 h_c 로부터 3 mm 이내」로 내려온 순간을 포구로 한다(공이 가장자리에 닿음 = 착지. 가장자리에서 1.5 r_b 위의 창에 들어온 것만으로는 잡지 않는다: 꼭짓점이 창 안이면 꼭짓점에서 「잡혀」 버린다 —— 측정하고 배제했다). rho/cd = 공기 밀도·항력 계수(rho = 0 이면 진공: 정리의 게이트는 이것으로 돌린다).

fail-closed: 알 수 없는 preset, 치수 ≤ 0, 접시 가장자리 ≥ 공(가장자리에서 받을 수 없음 = 켄다마가 아님), 가로폭 < 큰 접시의 지름, 실 ≤ 공의 반지름, 구멍 깊이가 (0, 공의 지름) 밖, 켄 끝의 굵기가 구멍에 들어가지 않음은 ValueError. 반환값에는 파생량 "cup_rest_height" = √(r_b² − r_c²)(받는 접시 가장자리에 올라탄 공 중심의 높이), "bp"(ballistics.ball_params, 속이 찬 구)가 들어간다.

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

• gallery_drive_kendama_racket — py -3.11 examples/gallery_drive_kendama_racket.py

• gallery_drive_world_objects — py -3.11 examples/gallery_drive_world_objects.py

• poc_kendama — py -3.11 examples/poc_kendama.py

타입이 이어지는 다음 연산자(table 를 입력으로 받는 것)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

같은 카테고리(kendama)

elliptic_k_agm · pendulum_period_exact · pendulum_launch_speed · pendulum_rod_simulate · tether_tension_fixed · tether_slack_angle · swing_up_plan · swing_up_apex


*Provenance: kendama.py — DRIVE 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.