Skip to content

Instantly share code, notes, and snippets.

View paulkaplan's full-sized avatar

Paul Kaplan paulkaplan

View GitHub Profile
@paulkaplan
paulkaplan / IllustratorHandles.js
Created July 21, 2013 21:43
Interactive Bezier curves with Illustrator style handles
var Curve = function(points, canvas){
this.points = points.map( function(p){ return new Point(p); })
this.points[0].setFirst();
this.points[this.points.length-1].setLast();
// create the underlying beziers
this.beziers = [];
for(var n=0; n<this.points.length-1; n++){
@paulkaplan
paulkaplan / fabricBezierCurve.js
Last active February 2, 2024 08:30
Cubic bezier curves with fabric.js renderer
var CubicBezier = function(canvas, opts){
if(!opts) opts = {};
this.start = opts.start || new Vec2(100,100);
this.end = opts.end || new Vec2(400, 400);
this.c1 = opts.c1 || new Vec2(100, 300);
this.c2 = opts.c2 || new Vec2(300, 100);
this.curve = new fabric.Path( this.toSVGPath() );
@paulkaplan
paulkaplan / retina_fabric.js
Created July 21, 2013 22:47
Getting fabric.js to work with Retina screens
if( window.devicePixelRatio !== 1 ){
var c = canvas.getElement(); // canvas = fabric.Canvas
var w = c.width, h = c.height;
// Scale the canvas up by two for retina
// just like for an image
c.setAttribute('width', w*window.devicePixelRatio);
c.setAttribute('height', h*window.devicePixelRatio);
@paulkaplan
paulkaplan / STLFileSaver.js
Last active September 14, 2020 13:44
Create an ASCII STL file from a THREE.js mesh that can be saved save from browser and 3D printed
/*
Paul Kaplan, @ifitdidntwork
Create an ASCII STL file from a THREE.js mesh
that can be saved save from browser and 3D printed
--------------------------------------------------
See further explanation here:
http://buildaweso.me/project/2013/2/25/converting-threejs-objects-to-stl-files
--------------------------------------------------
Saving the file out of the browser is done using FileSaver.js
@paulkaplan
paulkaplan / requireConfirmation.css
Last active December 23, 2015 04:49
Make a potentially dangerous function 'confirmable' by wrapping the function call in a confirmation dialog box.
#confirmation-overlay {
position: absolute;
width: 100%;
height:100%;
background: rgba(0,0,0,0.5);
top:0;
left:0;
line-height:18px;
font-size:18px;
z-index:100000000;
@paulkaplan
paulkaplan / motor_controller_repl.py
Last active December 26, 2015 09:39
A brief example of how to connect to a GRBL shield via serial port and send basic machine movements
import serial
import atexit
def initController():
port = serial.Serial(
port='/dev/tty.usbmodem1411',
baudrate=9600
)
closePort(port)
@paulkaplan
paulkaplan / Shapeoko_mm.pp
Last active January 26, 2018 21:55
Vectric configuration file for Shapeoko (mm, with arcs)
+================================================
+
+ Vectric machine output configuration file
+
+================================================
+
+ History
+
+ Who When What
+ ======== ========== ===========================
@paulkaplan
paulkaplan / Shapeoko_inch.pp
Created January 10, 2014 18:29
Vectric configuration file for Shapeoko (inch, with arcs)
+================================================
+
+ Vectric machine output configuration file
+
+================================================
+
+ History
+
+ Who When What
+ ======== ========== ===========================
@paulkaplan
paulkaplan / demo.html
Last active August 29, 2015 13:56
Tiny jQuery plugin to make walkthroughs
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="walkthrough.js"></script>
<link rel="stylesheet" href="walkthrough.css" />
<body>
<div class='walkthrough-container'>
<div class="walkthrough-steps">
<div
@paulkaplan
paulkaplan / spark-request.m
Last active August 29, 2015 14:03
Getting started with remote function calls on Spark Core
- (void) makeSparkRequest {
NSString *sparkApi = @"https://api.spark.io/v1/devices";
NSString *deviceId = @"<YOUR_DEVICE_ID>";
NSString *functionName = @"<YOUR_FUNCTION_NAME>"; // registered to cloud using Spark.function("FUNCTION_NAME", FUNCTION);
NSString *accessToken = @"<YOUR_ACCESS_TOKEN>";
NSURL *url = [NSURL URLWithString: [NSString stringWithFormat:@"%@/%@/%@\?access_token=%@",
sparkApi,
deviceId,