public void DrawLines(System.Action <Vector3, Vector3> drawLine) { var matrix = this.matrix; var radius = this.radius; var localLength = (b - a).magnitude; if (localLength == 0f) { localLength = 0.0001f; } var localDirection = (b - a) / localLength; var circle = new Geometry.Circle( center: a + localDirection * localLength * lengthFraction, direction: localDirection, radius: radius, overrideMatrix: matrix ); var startPos = matrix.MultiplyPoint3x4(a); var endPos = matrix.MultiplyPoint3x4(b); foreach (var point in circle.Points(polySegments)) { drawLine(startPos, point); drawLine(point, endPos); } foreach (var edge in circle.Segments(polySegments)) { drawLine(edge.a, edge.b); } }