JSPM

line-path-fillet

0.1.5
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 6
  • Score
    100M100P100Q31503F

Package Exports

  • line-path-fillet

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (line-path-fillet) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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