How to use the makerjs.point function in makerjs

To help you get started, weā€™ve selected a few makerjs examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github mrzealot / absolem / plans / absolem.js View on Github external
const patch = (expand = 0) => {
    const originated = m.model.originate(half(pos_hole()))

    let lt = get_line(originated, ['inner', 'top',    't']).end
    let lm = get_line(originated, ['inner', 'bottom', 'r']).end
    let lb = get_line(originated, ['thumb', 'outer',  't']).end

    if (expand) {
        lt = m.point.add(lt, [0,  expand])
        lb = m.point.add(lb, [0, -expand])
    }

    // hacked right side --> won't matter, as it'll be mirrored anyway
    rt = [lt[0] + 30, lt[1]]
    rb = [lb[0] + 30, lb[1]]

    return {
        paths: {
            a: line(lt, rt),
            b: line(rt, rb),
            c: line(rb, lb),
            d: line(lb, lm),
            e: line(lm, lt)
        }
    }
github microsoft / maker.js / demos / js / pixel-heart.js View on Github external
pixel_path.forEach(function (p) {

        var previous_point = points[points.length - 1];
        var point_to_add;

        if (moveHorizontal) {
            point_to_add = [p, 0];
        } else {
            point_to_add = [0, p];
        }
        var e = makerjs.point.add(previous_point, point_to_add);
        points.push(e);

        // flip direction each time
        moveHorizontal = !moveHorizontal;
    });
github microsoft / maker.js / demos / js / makerjs-polygon-rimbox.js View on Github external
/// 
var makerjs = require('makerjs');
var arc = makerjs.paths.Arc;
var line = makerjs.paths.Line;
var point = makerjs.point;
var PolygonRimboxInside = (function () {
    function PolygonRimboxInside(angle, radius, holeRadius, rimThickness) {
        var rim = Math.min(rimThickness, holeRadius);
        var innerFilletCenter = point.rotate([radius + 2 * holeRadius + rim, 0], 90 + angle, [radius, 0]);
        var innerFilletTop = new arc(innerFilletCenter, holeRadius, 270 + angle, angle);
        var innerFilletTopPoints = point.fromArc(innerFilletTop);
        var innerFilletBottomPoint = [innerFilletTopPoints[1][0], -innerFilletTopPoints[1][1]];
        this.paths = {
            innerFilletTop: innerFilletTop,
            innerFilletBottom: makerjs.path.mirror(innerFilletTop, false, true),
            innerLine: new line(innerFilletTopPoints[1], point.rotate(innerFilletBottomPoint, angle * 2, [0, 0])),
            innerFillet: new arc([radius, 0], holeRadius + rim, 90 + angle, 270 - angle)
        };
    }
    return PolygonRimboxInside;
})();
github microsoft / maker.js / packages / maker.js / examples / polygonstackbox.js View on Github external
/// 
var makerjs = require('makerjs');
var arc = makerjs.paths.Arc;
var line = makerjs.paths.Line;
var point = makerjs.point;
var PolygonStackBoxInside = (function () {
    function PolygonStackBoxInside(angle, radius, holeRadius, rimThickness) {
        var rim = Math.min(rimThickness, holeRadius);
        var a2 = angle * 2;
        var innerFilletCenter = point.rotate([radius + 2 * holeRadius + rim, 0], 90 + angle, [radius, 0]);
        var innerFilletTop = new arc(innerFilletCenter, holeRadius, 270 + angle, angle);
        var innerFilletTopPoints = point.fromArc(innerFilletTop);
        var innerFilletBottomPoint = [innerFilletTopPoints[1][0], -innerFilletTopPoints[1][1]];
        this.paths = {
            innerFilletTop: innerFilletTop,
            innerFilletBottom: makerjs.path.mirror(innerFilletTop, false, true),
            innerLine: new line(innerFilletTopPoints[1], point.rotate(innerFilletBottomPoint, a2, [0, 0])),
            innerFillet: new arc([radius, 0], holeRadius + rim, 90 + angle, 270 - angle)
        };
    }
    return PolygonStackBoxInside;
github mrzealot / absolem / plans / absolem.js View on Github external
let l  = [_left, _bottom + fence_corner]
    let lt = [_left, _top - fence_corner]
    let t  = [_left + fence_corner, _top]
    let tr = [_right - fence_corner, _top]
    let r  = [_right, _top - fence_corner]
    let rb = [_right, _bottom + fence_corner]
    let b  = [_right - fence_corner, _bottom]
    let bl = [_left + fence_corner, _bottom]

    // simplify the "below the wing" region
    if (col == 'ring' && key == 'bottom') {
        bl = m.point.add(bl, [0, -1])
        b = m.point.add(b, [30, -1])
        rb = m.point.add(rb, [30, -1])
    } else if (col == 'pinky' && key == 'bottom') {
        rb = m.point.add(rb, [10, 10])

    // elongate the diagonal to reach the top of the next key
    } else if (col == 'middle' && key == 'top') {
        r = m.point.add(r, [5, -5])

    // skip the mini step on the inner col + handle top middle connection
    } else if (col == 'inner' && key == 'top') {
        t = m.point.add(t, [0, 2])
        tr = m.point.add(tr, [30, 2])
        r = m.point.add(r, [30, 2])

    // handle bottom middle connection
    } else if (col == 'thumb' && key == 'outer') {
        tr = m.point.add(tr, [0, 30])
        r = m.point.add(r, [0, 30])
    }
github mrzealot / absolem / plans / absolem.js View on Github external
const patch = (expand = 0) => {
    const originated = m.model.originate(half(pos_hole()))

    let lt = get_line(originated, ['inner', 'top',    't']).end
    let lm = get_line(originated, ['inner', 'bottom', 'r']).end
    let lb = get_line(originated, ['thumb', 'outer',  't']).end

    if (expand) {
        lt = m.point.add(lt, [0,  expand])
        lb = m.point.add(lb, [0, -expand])
    }

    // hacked right side --> won't matter, as it'll be mirrored anyway
    rt = [lt[0] + 30, lt[1]]
    rb = [lb[0] + 30, lb[1]]

    return {
        paths: {
            a: line(lt, rt),
            b: line(rt, rb),
            c: line(rb, lb),
            d: line(lb, lm),
            e: line(lm, lt)
        }
    }
}
github microsoft / maker.js / demos / js / arc-text.js View on Github external
circleT: new makerjs.paths.Circle(arcRadius + h2),
            circleB: new makerjs.paths.Circle(arcRadius - h2)
        };
    }

    //move each character to a percentage of the total arc
    var span = makerjs.angle.ofArcSpan(arc);
    for (var i = 0; i < text.length; i++) {
        var char = textModel.models[i];

        //get the x distance of each character as a percentage
        var distFromFirst = char.origin[0] - left;
        var center = distFromFirst / textWidth;

        //set a new origin at the center of the text
        var o = makerjs.point.add(char.origin, [0, h2]);
        makerjs.model.originate(char, o);

        //project the character x position into an angle
        var angle = center * span;
        var angleFromEnd = onTop ? endAngle - angle : startAngle + angle;
        var p = makerjs.point.fromAngleOnCircle(angleFromEnd, arc);
        char.origin = p;

        //rotate the char to 90 from tangent
        makerjs.model.rotate(char, onTop ? angleFromEnd - 90 : angleFromEnd + 90, p);
    }
}
github microsoft / maker.js / demos / card.js View on Github external
function logo(or, ir, ear, outline, mHeight, serifHeight, speed, drop, columnWidth, spacing, step) {

    var point = makerjs.point;
    var path = makerjs.path;
    var paths = makerjs.paths;

    function bend(r, bendTop, x, trimTo, outer) {

        outer = outer || 0;

        var hguide = new paths.Line([0, bendTop - r], [100, bendTop - r]);
        var vguide = path.rotate(new paths.Line([x, 0], [x, 100]), -speed, [x, 0]);
        var intersectionPoint = path.intersection(hguide, vguide).intersectionPoints[0];
        var center = point.subtract(intersectionPoint, [makerjs.solvers.solveTriangleASA(90, r, speed), 0]);

        var arc = new paths.Arc(center, r + outer, - speed, 90 + drop);

        var Horizontal = path.rotate(
                new paths.Line([-10, arc.origin[1] + r + outer], point.add(arc.origin, [0, r + outer])),
github microsoft / maker.js / demos / js / arc-text.js View on Github external
var span = makerjs.angle.ofArcSpan(arc);
    for (var i = 0; i < text.length; i++) {
        var char = textModel.models[i];

        //get the x distance of each character as a percentage
        var distFromFirst = char.origin[0] - left;
        var center = distFromFirst / textWidth;

        //set a new origin at the center of the text
        var o = makerjs.point.add(char.origin, [0, h2]);
        makerjs.model.originate(char, o);

        //project the character x position into an angle
        var angle = center * span;
        var angleFromEnd = onTop ? endAngle - angle : startAngle + angle;
        var p = makerjs.point.fromAngleOnCircle(angleFromEnd, arc);
        char.origin = p;

        //rotate the char to 90 from tangent
        makerjs.model.rotate(char, onTop ? angleFromEnd - 90 : angleFromEnd + 90, p);
    }
}
github microsoft / maker.js / demos / card.js View on Github external
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o

makerjs

Maker.js, a Microsoft Garage project, is a JavaScript library for creating and sharing modular line drawings for CNC and laser cutters.

Apache-2.0
Latest version published 6 months ago

Package Health Score

74 / 100
Full package analysis