Initializing 3D Canvas...

Curvature Combs & Continuity

3 min read1 page

Curvature Combs (Porcupine Diagnostics): In automotive Class-A surfacing and industrial CAD, inspecting a spline curve visually is deceptively inadequate; flat spots, sudden radius jerks, and unwanted inflection wiggles remain invisible to the naked eye. A curvature comb plots needle-like spikes perpendicular to the curve with lengths strictly proportional to instantaneous curvature $\kappa(t)$, ruthlessly exposing any second-derivative defects.

Porcupine Diagnostic Rules:

1. Spike Length: Exactly proportional to local curvature κ = 1 / R_osculating. 2. Inflection Zero Crossing: Spikes shrink to zero and flip to the opposite side at inflection points. 3. Smooth Comb Envelope: High-end Class-A surfacing mandates monotonic, smoothly changing comb envelopes.
python
1import numpy as np
2
3def compute_curvature_comb(curve_pts, d1_pts, d2_pts, scale=1.0):
4 """
5 Computes porcupine curvature comb for a parametric curve C(t).
6 Curvature kappa(t) = ||C' x C''|| / ||C'||^3.
7 Porcupine spikes point along unit normal n(t), with length proportional to kappa(t).
8 Inflections appear where comb passes through zero and flips sides.
9 """
10 comb_tips = []
11 for p, v1, v2 in zip(curve_pts, d1_pts, d2_pts):
12 speed = np.linalg.norm(v1)
13 if speed < 1e-6:
14 comb_tips.append(p)
15 continue
16 cross_prod = v1[0] * v2[1] - v1[1] * v2[0]
17 kappa = cross_prod / (speed ** 3)
18
19 # Unit normal
20 unit_norm = np.array([-v1[1], v1[0]]) / speed
21 spike = p + unit_norm * (kappa * scale)
22 comb_tips.append(spike)
23
24 return comb_tips
Comb Spike Scale
1.50
Curvature Perturbation
0.00
2 min read1 page

Geometric Continuity Hierarchy (G0 to G3): In luxury automotive styling, surface reflection lines dictate visual perceived quality. While $G^0$ has a sharp crease and $G^1$ aligns tangents, $G^1$ still suffers from a sudden jump in curvature, causing zebra reflection stripes to break abruptly. $G^2$ continuity equates the osculating radius, while $G^3$ Class-A surfacing smooths the rate of change of curvature to make car body reflections flow seamlessly.

Continuity Tiers:

1. G0 (Point): Curves share a common junction endpoint; angle crease remains visible. 2. G1 (Tangent): Tangent directions align; eliminates creases, but curvature jumps abruptly. 3. G2 (Curvature): Osculating circles match in radius and center; smooth zebra reflections. 4. G3 (Flow): Derivative of curvature is continuous; automotive Class-A standard.
python
1def classify_joint_continuity(c1_pts, c2_pts):
2 """
3 Classifies geometric continuity across curve joint:
4 G0: Position equality C1(1) == C2(0).
5 G1: Tangent vector collinearity: T1 == lambda * T2 (lambda > 0).
6 G2: Curvature center and magnitude equality: kappa_1 == kappa_2.
7 G3: Curvature rate-of-change equality: d(kappa)/ds is continuous.
8 """
9 return "Continuity Tier: G0, G1, G2, or G3"
Continuity Tier (0=G0, 1=G1, 2=G2, 3=G3)
2.00