name: gear-theory description: > Comprehensive involute gear theory reference for gear modeling and machining. Use when calculating gear geometry, involute profiles, profile shift, tooth strength (Lewis/Hertz), helical/bevel/internal/rack/worm gear parameters, root fillet (Fetvaci epitrochoid), tooth measurement (span/over-pin), or generating gear tooth coordinates in Python. license: Apache-2.0 compatibility: Designed for Claude Code user-invocable: false metadata: version: "1.0.0" category: "domain" status: "active" updated: "2026-04-01" tags: "gear, involute, mechanical engineering, CAD, machining, DIN, ISO, AGMA" related-skills: "plan-gear-curriculum, write-edu-module"
MoAI Extension: Progressive Disclosure
progressive_disclosure: enabled: true level1_tokens: 120 level2_tokens: 6000
MoAI Extension: Triggers
triggers: keywords: - gear - involute - module - pressure angle - profile shift - gear modeling - gear machining - helical gear - bevel gear - worm gear - Lewis - Hertz - backlash - undercut - root fillet - Fetvaci - epitrochoid - contact ratio - tooth profile - span measurement - over-pin - 기어 - 인벌류트 - 전위
Gear Theory Reference
Dense formula reference for involute gear geometry, strength analysis, and Python code patterns used in this project.
1. Core Involute Geometry
Involute parametric equations (base circle radius r_b, roll angle t >= 0):
Cartesian: x(t) = r_b * (cos(t) + t * sin(t)) y(t) = r_b * (sin(t) - t * cos(t))
Polar: r(t) = r_b * sqrt(1 + t^2) theta(t) = t - arctan(t)
Inverse (radius to parameter): t = sqrt((r / r_b)^2 - 1)
Involute function: inv(alpha) = tan(alpha) - alpha
Pressure angle at radius r: cos(alpha_r) = r_b / r
Parameter-pressure angle link: t = tan(alpha_r)
Key values: inv(20 deg) = 0.014904 rad, inv(14.5 deg) = 0.005215 rad
Inverse of inv() has NO closed-form solution. Use Newton-Raphson: alpha_{n+1} = alpha_n - (inv(alpha_n) - target) / tan^2(alpha_n) Convergence: |inv(alpha) - target| < 1e-12 Fallback: scipy.optimize.brentq on bracket [0, pi/2)
safe_inv(alpha): use Taylor expansion inv(alpha) ~ alpha^3/3 near alpha0;
guard against tan overflow near alphapi/2.
2. Standard Gear Parameters
Module: m = d_0 / z [mm] Diametral Pitch: DP = 25.4 / m [teeth/inch]
Four concentric circles (x = profile shift coefficient): d_0 = m * z (pitch circle) d_b = d_0 * cos(alpha_0) (base circle) d_a = m * (z + 2 + 2x) (addendum circle) d_f = m * (z - 2.5 + 2x) (dedendum circle)
Tooth height: h_a = m * (1 + x) addendum h_f = m * (1.25 - x) dedendum c = 0.25 * m clearance (ISO 54 / AGMA default) h = 2.25 * m total height
Pitch: p = pi * m circular pitch p_b = pi * m * cos(alpha_0) base pitch
Tooth thickness at pitch circle: s_0 = m * (pi/2 + 2xtan(alpha_0))
Tooth thickness at arbitrary radius r (diameter d): s = d * (s_0/d_0 + inv(alpha_0) - inv(alpha_r)) where alpha_r = arccos(r_b / r)
Center distance (standard): a_0 = m*(z_1 + z_2)/2
Backlash (ISO 1328 / AGMA 2002): j ~ (0.02 to 0.05) * m
3. Profile Shift
Purpose: prevent undercut, adjust center distance, optimize contact ratio.
Undercut condition: z < z_min = 2 / sin^2(alpha_0) alpha_0 = 20 deg => z_min = 17
Minimum shift (undercut prevention): x_min = (z_min - z) / z_min = 1 - z*sin^2(alpha_0)/2
Maximum shift (pointed tooth prevention): s_a at tip -> 0; practical warning when s_a < 0.3*m Solve numerically via bisection.
Changed parameters under shift: d_a = m*(z + 2 + 2x) d_f = m(z - 2.5 + 2x) s_0 = m(pi/2 + 2xtan(alpha_0)) UNCHANGED: d_0 = mz, d_b = d_0cos(alpha_0)
Operating pressure angle (gear pair with x_1, x_2): inv(alpha_w) = inv(alpha_0) + 2*(x_1 + x_2)*tan(alpha_0) / (z_1 + z_2)
Operating center distance: a_w = m*(z_1 + z_2)cos(alpha_0) / (2cos(alpha_w))
Contact ratio: epsilon = (sqrt(r_a1^2 - r_b1^2) + sqrt(r_a2^2 - r_b2^2) - a_wsin(alpha_w)) / (pim*cos(alpha_0)) Recommended: epsilon >= 1.2
Extreme tooth counts (z < 5): z=1,2 physically impossible at x=0; z=3-4 require special design; practical lower bound z >= 5 (KHK).
4. Tooth Strength Analysis
Lewis Bending Stress
sigma_b = W_t / (F * m * Y)
W_t = 2T / d_0 = 2T / (m*z) tangential load [N] F = face width [mm] Y = Lewis form factor (20 deg standard tooth):
z: 12 14 17 20 24 30 40 60 inf(rack) Y: 0.245 0.276 0.303 0.322 0.337 0.359 0.389 0.422 0.485
WARNING: Y values for z > 60 are interpolated estimates beyond the source table.
For z=100: Y0.447, z=150: Y0.460, z=300: Y~0.478 (interpolated toward 0.485).
AGMA modified: sigma_b = W_t * K_o * K_v * K_s / (F * m * J) K_o: overload factor (1.0-2.0) K_v: dynamic factor (velocity-dependent) K_s: size factor (~1.0) J: AGMA geometry factor (improved Y)
Hertz Contact Stress
sigma_H = Z_E * sqrt(W_t / (F * d_1) * (i+1)/i * 1/(sin(alpha) * cos(alpha)))
Z_E ~ 191 MPa^0.5 (steel-steel) i = z_2 / z_1 (gear ratio)
WARNING: For profile-shifted gear pairs, use alpha_w instead of alpha_0: alpha_w = arccos(m*(z_1+z_2)cos(alpha_0) / (2a_w)) Using alpha_0 for shifted gears gives INCORRECT contact stress.
Curvature radii at contact: rho_1 = r_1 * sin(alpha_w) rho_2 = r_2 * sin(alpha_w) 1/rho_eq = 1/rho_1 + 1/rho_2
5. Gear Type Variants
Helical Gears
Module conversion: m_t = m_n / cos(beta) transverse module tan(alpha_t) = tan(alpha_n) / cos(beta) transverse pressure angle d_0 = m_t * z = m_n * z / cos(beta) d_b = d_0 * cos(alpha_t) p_x = pi * m_n / sin(beta) axial pitch
Virtual tooth count: z_v = z / cos^3(beta) Use z_v for undercut check: z_v >= 17 => no undercut.
3D twist transformation (z_pos along axis): theta_z = z_pos * tan(beta) / r_0 x_3d = x_2dcos(theta_z) - y_2dsin(theta_z) y_3d = x_2dsin(theta_z) + y_2dcos(theta_z) z_3d = z_pos
Total twist: Delta_theta = face_width * tan(beta) / r_0
Contact ratios: epsilon_alpha: transverse (same as spur) epsilon_beta = b * sin(beta) / (pi * m_n) face contact ratio epsilon_gamma = epsilon_alpha + epsilon_beta total
Bevel Gears (Straight)
Pitch cone angle (orthogonal axes, Sigma = 90 deg): tan(delta_1) = z_1 / z_2 delta_1 + delta_2 = 90 deg
Cone distance: R = mz_1 / (2sin(delta_1))
Tredgold approximation (virtual spur gear on back cone): z_v = z / cos(delta) Back cone radius: r_v = R * sin(delta) / cos(delta) = R * tan(delta)
3D: straight_bevel_tooth_3d_corrected() uses cone projection (NOT cylindrical offset). Tooth size scales linearly toward cone apex along face width.
Spiral bevel: ~100 Gleason parameters, OUT OF PROJECT SCOPE.
Internal Gears
Addendum/dedendum REVERSED: d_a = m*(z - 2) (teeth point inward) d_f = m*(z + 2.5)
Center distance: a = m*(z_2 - z_1)/2 (external: z_1 + z_2)
Three interference conditions: involute, trochoid, assembly.
Rack and Pinion
Rack tooth profile = straight lines at pressure angle alpha_0. Rack is the limit of involute gear as z -> infinity. Fillet: circular arc at root corners. Profile shift = rack reference line offset from gear center.
Worm Gears (DIN 3975)
Key parameters: m_x: axial module m_n = m_x * cos(gamma) normal module q = d_1 / m_x diameter quotient (6-20) tan(gamma) = z_1 / q lead angle L = pi * m_x * z_1 lead d_1 = q * m_x worm pitch diameter d_2 = m_x * z_2 wheel pitch diameter a = m_x*(q + z_2)/2 center distance tan(alpha_n) = tan(alpha_x)*cos(gamma)
WARNING: Worm dedendum h_f1 = 1.2 * m_x (DIN 3975), NOT 1.25 like spur gears. d_f1 = d_1 - 2.4*m_x
Four worm types (DIN 3975): ZA (Archimedean): axial-section straight profile, simplest to manufacture ZI (Involute): involute helicoid from base cylinder ZN (Normal straight): straight profile in normal section ZK (Conical disk): profile from conical grinding disk
Worm wheel envelope generation: Coordinate transform M_21: worm frame -> wheel frame phi_2 = (z_1/z_2) * phi_1 (rolling constraint) Meshing condition: n_1^T * (dM_21/dphi_1) * r_1h = 0 Numerical: Brent method on theta grid for precise f=0 solution.
Efficiency: eta = tan(gamma) / tan(gamma + phi') phi' = arctan(mu / cos(alpha_n)) equivalent friction angle mu: friction coefficient (0.02-0.15)
Self-locking condition: gamma < phi' Optimal efficiency near gamma = 45 deg - phi'/2
Worm wheel profile shift: a = m_x*(q + z_2 + 2*xt2)/2 |xt2| <= 1.0 recommended
6. Root Fillet
Fetvaci Epitrochoid (PROJECT STANDARD)
The root fillet is generated by the cutter tip corner trajectory during hobbing. Fetvaci (2010) 6-region pinion cutter model:
- Tip face 2. Tip chamfer 3. Left involute flank
- Root fillet (primary trochoid) 5. Root circle arc 6. Right involute flank
Primary trochoid: center E of cutter tip arc traces epitrochoid path. Secondary trochoid: offset by cutter tip fillet radius r_f along normal.
Coordinate transform M_gc: cutter frame -> gear frame Links cutter rotation phi_c to gear rotation phi_g = (N_c/N_g)*phi_c
Envelope condition: meshing equation f(phi_c) = 0 at contact points.
Circular Arc Approximation (VISUALIZATION ONLY)
Standard fillet radius: rho_f ~ 0.38*m Connects involute start point to dedendum circle with tangent continuity. NOT suitable for precise stress analysis or CAD -- use Fetvaci for those.
7. Python Code Patterns
Key function signatures used in this project:
involute_point(r_b: float, t: float) -> tuple[float, float] involute_function(alpha: float) -> float # inv(alpha) = tan(alpha) - alpha safe_inv(alpha: float) -> float # numerically stable inv() inv_involute(target_inv: float) -> float # Newton-Raphson + Brent fallback
tooth_profile(m, z, alpha0_deg=20.0, x=0.0, n_pts=40) -> np.ndarray Returns single tooth closed contour as (N, 2) array.
gear_profile(m, z, alpha0_deg=20.0, x=0.0, n_pts=40) -> list[np.ndarray] Returns list of z tooth arrays via circular pattern: angle_k = k * 2*pi/z
validate_tooth_count(z: int) -> bool profile_shift_limits(z, alpha0_deg=20.0) -> tuple[float, float] # (x_min, x_max) compute_contact_ratio(z1, z2, m, alpha_0, x1, x2) -> float full_gear_parameter_check(params) -> dict # integrated validation suite pointed_tooth_check(m, z, alpha0, x) -> bool # warns if s_a < 0.3*m
lewis_bending_stress(W_t, F, m, Y) -> float hertz_contact_stress(W_t, F, d1, u, alpha_w) -> float
straight_bevel_tooth_3d_corrected(...) # cone projection method internal_gear_profile(m, z, alpha0, x) -> np.ndarray
WormGearPair dataclass: m_x, z1, z2, q, alpha_x, mu, xt2 generate_za_worm_surface(...) # ZA Archimedean generate_zi_worm_surface(...) # ZI involute helicoid generate_worm_wheel_precise(...) # Brent method envelope
M_gc(phi_c, phi_g, r_c, r_g) -> np.ndarray # 4x4 homogeneous transform pinion_cutter_generate_gear_profile(...) # Fetvaci cutting simulation envelope_generate(...) # general-purpose envelope engine
8-step tooth generation algorithm: Step 1: Compute r_b, r_0, r_a, r_f Step 2: Determine t_start, t_tip Step 3: Generate involute coordinates Step 4: Compute half tooth angle theta_s = pi/(2z) + 2x*tan(alpha_0)/z Step 5: Rotate by theta_offset = theta_s + inv(alpha_0) Step 6: Root fillet (Fetvaci epitrochoid or circular arc) Step 7: Mirror for opposite flank: (x_L, y_L) = (x_R, -y_R) Step 8: Connect root arc between adjacent teeth
Circular pattern: DO NOT accumulate angles. Compute k * 2*pi/z directly per tooth index.
8. Critical Notes
alpha_w vs alpha_0: Hertz formula uses alpha_0 ONLY for standard (x=0) gears. For shifted pairs, MUST use alpha_w = arccos(m*(z1+z2)cos(alpha_0)/(2a_w)).
Lewis Y table: z=30 -> Y=0.359 is the last reliable source value. Values for z > 60 are interpolated estimates approaching 0.485 (rack limit).
Fetvaci epitrochoid is the PROJECT STANDARD for root fillet. The circular arc approximation in M03 is for visualization only. Use Fetvaci for strength analysis, CAD, and cutting simulation.
Worm dedendum: h_f1 = 1.2*m_x (DIN 3975). Do NOT use 1.25 (spur/helical value).
Backlash: j ~ (0.02 to 0.05)*m per ISO 1328 / AGMA 2002.
Bevel gear 3D: Use cone projection (corrected version from R4 SF.2). Original R2 S4.4 had cylindrical offset error -- do not use.
Coordinate systems: S_g (gear), S_c (cutter), S_h (hob), S_global (fixed). All transforms use 4x4 homogeneous matrices. M_gc = cutter->gear, M_21 = worm->wheel.
Contact ratio epsilon >= 1.2 recommended. Below 1.0 is physically impossible for continuous motion.
Self-locking worm gears: gamma < phi' (lead angle < equivalent friction angle). Used in lifts, hoists where load must not back-drive.
Spiral bevel gears (~100 Gleason parameters) are OUT OF SCOPE for this project. Only straight bevel gears are implemented.
ZN worm type (Normal straight-sided): Formula is from a SINGLE SOURCE (2-star reliability). Partial verification via AGMA 6022-C93 and SDP-SI data only. For precision design: cross-validate with KISSsoft or equivalent before use. ZA (axial straight) is the most reliable type -- use as reference for validation.
9. Tooth Thickness Measurement
Span Measurement (W_k)
Span micrometer measures W across k teeth in normal direction.
Spur gear: W = m * cos(alpha_0) * [pi*(k - 0.5) + z * inv(alpha_0)] + 2xm*sin(alpha_0)
Optimal span tooth count (prevent contact outside tip): k_max = z/pi * (pi/2 - inv(alpha_0) - 2xtan(alpha_0)/z) + 0.5 k = floor(k_max)
Helical gear (measure in normal plane): W_n = m_n * cos(alpha_n) * [pi*(k - 0.5) + z_v * inv(alpha_n)] z_v = z / cos^3(beta)
Over-Pin / Over-Ball Measurement (M)
Insert pin diameter d_ball in tooth space; measure across-pins dimension M.
Contact pressure angle alpha_d: inv(alpha_d) = d_ball/(mzcos(alpha_0)) - inv(alpha_0) + pi/z + 2xtan(alpha_0)/z Solve alpha_d via inv_involute() Newton-Raphson (see Section 7).
Even tooth count: M = d_0 * cos(alpha_0) / cos(alpha_d) + d_ball
Odd tooth count: M = d_0 * cos(alpha_0) * cos(90 deg / z) / cos(alpha_d) + d_ball
Ideal pin diameter (contact near pitch circle): d_ball_ideal = m * cos(alpha_0) / cos(alpha_d) * pi/z
Python signatures (from M10): compute_span_measurement(m, z, alpha0, x, k=None) -> tuple[float, int] # (W, k_used) compute_overpin_measurement(m, z, alpha0, x, d_ball) -> float # M ideal_pin_diameter(m, z, alpha0, x=0.0) -> float
Symbol Convention (All Modules)
z: tooth count (z1: driver, z2: driven) m: module (m_n: normal, m_t: transverse, m_x: axial) alpha_0: standard pressure angle (typically 20 deg) alpha_w: working/operating pressure angle t: involute parameter (roll angle) inv(): involute function r_0: pitch radius = mz/2 r_b: base radius = r_0cos(alpha_0) r_a: tip radius r_f: root radius x: profile shift coefficient beta: helix angle (helical gears) gamma: lead angle (worm gears) delta: pitch cone angle (bevel gears)