Geometry Library in C# — Composite Curves
Saturday, April 4, 2026How to join segments, arcs, and NURBS end to end to form contours and polylines.
Read moreArticles with the tag "Geometry".
How to join segments, arcs, and NURBS end to end to form contours and polylines.
Read moreSixth article in the series: we define the ICurve2d and IBoundedCurve2d interfaces to model parametric curves, from infinite lines to circular arcs.
Read moreHow to model intersection results between curves: crossings, tangencies, overlaps, and lazy computation of expensive information.
Read moreHow NURBS curves fit into our interface hierarchy: control points, knot vectors, evaluation, and trimming.
Read moreThird article in the series: we add +, -, * and / operators to our types so geometric code reads as naturally as mathematical formulas.
Read moreFirst article in a series about building a geometry library in C#. We start with the most fundamental type: the point.
Read moreFifth article in the series: we implement geometric transformations using homogeneous matrices, then explore a lighter alternative with quaternions.
Read moreFourth article in the series: we create a dedicated type for directions, which guarantees by construction that its length is always 1.
Read moreSecond article in the series: after the point, it's the vector's turn. Direction, length, dot product, perpendicularity… the foundations for working with directions in 2D and 3D.
Read moreHow to transpose intersection algorithms to 3D: line/sphere, line/circle in space, coplanarity, and projection into the circle's plane.
Read moreHow to find the intersections of two circles (or arcs) in 2D using the radical line, and handle all special cases: tangency, concentricity, overlap.
Read moreHow to compute intersections between a line (or segment) and a circle (or arc): substitution into the circle equation, discriminant, and parametric filtering.
Read moreWhen the analytical approach isn't enough: coarse search by subdivision, Newton's method refinement, and tolerance handling for arbitrary curves in space.
Read moreHow to find the intersection point of two 2D segments: setting up the equations, solving with the cross product, handling parallel cases and overlaps.
Read more