Skip to content

hassoncs/line-path-fillet

Repository files navigation

A line path filleting micro-library

Demo

Check it out in action: https://hassoncs.github.io/line-path-fillet/

Purpose

This library's primary purpose is to fillet (round) the corner between two line segments.

If the line segments are too small to form a fillet arc at the requested radius, the largest possible radius will be used.

Use

// With four points, A, B, C, and D specified as x,y arrays of length 2:

const pointA = [0, 0];
const pointB = [0, 0];
const pointC = [0, 0];
const pointD = [0, 0];

// First we find the intersection point of the line segments
// This will project the lines as needed in order to find 
// the first possible intersection point.
// It will return null if the lines will never intersect.
const intersectionPoint = findIntersection(
  pointA[0],
  pointA[1],
  pointB[0],
  pointB[1],
  pointC[0],
  pointC[1],
  pointD[0],
  pointD[1],
);
if (!intersectionPoint) return;

const radius = 100;
const filletData = filletCorner(
  pointA,
  intersectionPoint,
  pointC,
  radius,
);

// Now we have everything we need to draw the arc:
const {
  radius, // The radius we ended up using (might be smaller than the specified radius)
  angleA, // Angle from the fillet circle center to the tangent point on line A->I
  angleB, // Angle from the fillet circle center to the tangent point on line B->I
  tanPointA, // Arc start point
  tanPointB,  // Arc end point
  circleCenter, // Center point of the fillet circle
} = filletData;

Building

Library

npm run build npm run publish

Demo app dev

cd demo-app
npm install
npm run start

Demo app release process

# To build the app
npm run build

# Release it to github pages
npm run deploy

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published