perfect-freehand
Advanced tools
Comparing version 0.4.8 to 0.4.9
@@ -0,1 +1,5 @@ | ||
## 0.4.9 | ||
- Prevents duplicates when parsing points. | ||
## 0.4.8 | ||
@@ -2,0 +6,0 @@ |
@@ -230,7 +230,8 @@ 'use strict'; | ||
for (var i = 1, curr = pts[i], prev = strokePoints[0]; i < pts.length; i++, curr = pts[i], prev = strokePoints[i - 1]) { | ||
var point = lrp(prev.point, curr, 1 - streamline), | ||
pressure = curr[2], | ||
vector = uni(vec(point, prev.point)), | ||
distance = dist(point, prev.point), | ||
runningLength = prev.runningLength + distance; | ||
var point = lrp(prev.point, curr, 1 - streamline); | ||
if (isEqual(prev.point, point)) continue; | ||
var pressure = curr[2]; | ||
var vector = uni(vec(point, prev.point)); | ||
var distance = dist(point, prev.point); | ||
var runningLength = prev.runningLength + distance; | ||
strokePoints.push({ | ||
@@ -237,0 +238,0 @@ point: point, |
@@ -1,2 +0,2 @@ | ||
"use strict";function r(r,n){return[r[0]+n[0],r[1]+n[1]]}function n(r,n){return[r[0]-n[0],r[1]-n[1]]}function t(r,n){return[n[0]-r[0],n[1]-r[1]]}function e(r,n){return[r[0]*n,r[1]*n]}function i(r){return[r[1],-r[0]]}function o(r,n){return r[0]*n[0]+r[1]*n[1]}function u(r,t){return function(r){return r[0]*r[0]+r[1]*r[1]}(n(r,t))}function a(r){return function(r,n){return[r[0]/n,r[1]/n]}(r,function(r){return Math.hypot(r[0],r[1])}(r))}function s(r,n){return Math.hypot(r[1]-n[1],r[0]-n[0])}function v(r,n,t){var e=Math.sin(t),i=Math.cos(t),o=r[0]-n[0],u=r[1]-n[1];return[o*i-u*e+n[0],o*e+u*i+n[1]]}function f(n,i,o){return r(n,e(t(n,i),o))}function c(r,n){return r[0]===n[0]&&r[1]===n[1]}function p(r,n,t){return r*(1-t)+n*t}function h(r,n,t){return Math.max(n,Math.min(t,r))}function d(r,n,t,e){return void 0===e&&(e=.5),n?(e=h(t(e),0,1),(n<0?p(r,r+r*h(n,-.95,-.05),e):p(r-r*h(n,.05,.95),r,e))/2):r/2}Object.defineProperty(exports,"__esModule",{value:!0});var g=Math.min,l=Math.PI;function m(n,e){var i=e.simulatePressure,u=e.streamline,v=void 0===u?.5:u,c=e.size,p=void 0===c?8:c;v/=2,void 0===i||i||(v/=2);var h=function(r){return Array.isArray(r[0])?r.map((function(r){var n=r[2];return[r[0],r[1],void 0===n?.5:n]})):r.map((function(r){var n=r.pressure;return[r.x,r.y,void 0===n?.5:n]}))}(n),d=h.length;if(0===d)return[];1===d&&h.push(r(h[0],[1,0]));for(var g=[{point:[h[0][0],h[0][1]],pressure:h[0][2],vector:[0,0],distance:0,runningLength:0}],l=1,m=h[l],M=g[0];l<h.length;m=h[++l],M=g[l-1]){var L=f(M.point,m,1-v),x=m[2],y=a(t(L,M.point)),P=s(L,M.point);g.push({point:L,pressure:x,vector:y,distance:P,runningLength:M.runningLength+P})}for(var k=g[d-1].runningLength,b=d-2;b>1;b--){var z=g[b],A=z.runningLength,O=z.vector,S=o(g[b-1].vector,g[b].vector);if(k-A>p/2||S<.8){for(var _=b;_<d;_++)g[_].vector=O;break}}return g}function M(p,h){void 0===h&&(h={});var m=h.size,M=void 0===m?8:m,L=h.thinning,x=void 0===L?.5:L,y=h.smoothing,P=void 0===y?.5:y,k=h.simulatePressure,b=void 0===k||k,z=h.easing,A=void 0===z?function(r){return r}:z,O=h.start,S=void 0===O?{}:O,_=h.end,j=void 0===_?{}:_,w=h.last,I=void 0!==w&&w,q=h.streamline,B=void 0===q?.5:q;B/=2;var C=S.taper,D=void 0===C?0:C,E=S.easing,F=void 0===E?function(r){return r*(2-r)}:E,G=j.taper,H=void 0===G?0:G,J=j.easing,K=void 0===J?function(r){return--r*r*r+1}:J,N=p.length;if(0===N)return[];for(var Q=p[N-1].runningLength,R=[],T=[],U=p.slice(0,5).reduce((function(r,n){return(r+n.pressure)/2}),p[0].pressure),V=d(M,x,A,p[N-1].pressure),W=p[0].vector,X=p[0].point,Y=X,Z=X,$=Y,rr=1;rr<N-1;rr++){var nr=p[rr],tr=nr.point,er=nr.pressure,ir=nr.vector,or=nr.distance,ur=nr.runningLength;if(x){if(b){var ar=g(1,1-or/M),sr=g(1,or/M);er=g(1,U+sr/2*(ar-U))}V=d(M,x,A,er)}else V=M/2;var vr=ur<D?F(ur/D):1,fr=Q-ur<H?K((Q-ur)/H):1;V*=Math.min(vr,fr);var cr=p[rr+1].vector,pr=o(ir,cr);if(pr<0){for(var hr=e(i(W),V),dr=0;dr<1;dr+=.2)$=v(r(tr,hr),tr,l*-dr),Z=v(n(tr,hr),tr,l*dr),T.push($),R.push(Z);X=Z,Y=$}else{var gr=e(i(f(cr,ir,pr)),V);Z=n(tr,gr),$=r(tr,gr);var lr=1===rr||pr<.25,mr=Math.pow((ur>M?M:M/2)*P,2);(lr||u(X,Z)>mr)&&(R.push(f(X,Z,B)),X=Z),(lr||u(Y,$)>mr)&&(T.push(f(Y,$,B)),Y=$),U=er,W=ir}}var Mr=p[0],Lr=p[N-1],xr=T.length<2||R.length<2;if(xr&&(!D&&!H||I)){for(var yr=0,Pr=0;Pr<N;Pr++){var kr=p[Pr];if(kr.runningLength>M){yr=d(M,x,A,kr.pressure);break}}for(var br=n(Mr.point,e(i(a(t(Lr.point,Mr.point))),yr||V)),zr=[],Ar=0;Ar<=1;Ar+=.1)zr.push(v(br,Mr.point,2*l*Ar));return zr}var Or=[];if(!(D||H&&xr)){$=T[1];for(var Sr=1;Sr<R.length;Sr++)if(!c($,R[Sr])){Z=R[Sr];break}if(!c($,Z)){for(var _r=n(Mr.point,e(a(t($,Z)),s($,Z)/2)),jr=0;jr<=1;jr+=.2)Or.push(v(_r,Mr.point,l*jr));R.shift(),T.shift()}}var wr=[];if(H||D&&xr)wr.push(Lr.point);else for(var Ir=n(Lr.point,e(i(Lr.vector),V)),qr=0;qr<=1;qr+=.1)wr.push(v(Ir,Lr.point,3*l*qr));return R.concat(wr,T.reverse(),Or)}exports.default=function(r,n){return void 0===n&&(n={}),M(m(r,n),n)},exports.getStrokeOutlinePoints=M,exports.getStrokePoints=m; | ||
"use strict";function r(r,n){return[r[0]+n[0],r[1]+n[1]]}function n(r,n){return[r[0]-n[0],r[1]-n[1]]}function t(r,n){return[n[0]-r[0],n[1]-r[1]]}function e(r,n){return[r[0]*n,r[1]*n]}function i(r){return[r[1],-r[0]]}function o(r,n){return r[0]*n[0]+r[1]*n[1]}function u(r,t){return function(r){return r[0]*r[0]+r[1]*r[1]}(n(r,t))}function a(r){return function(r,n){return[r[0]/n,r[1]/n]}(r,function(r){return Math.hypot(r[0],r[1])}(r))}function s(r,n){return Math.hypot(r[1]-n[1],r[0]-n[0])}function v(r,n,t){var e=Math.sin(t),i=Math.cos(t),o=r[0]-n[0],u=r[1]-n[1];return[o*i-u*e+n[0],o*e+u*i+n[1]]}function f(n,i,o){return r(n,e(t(n,i),o))}function c(r,n){return r[0]===n[0]&&r[1]===n[1]}function p(r,n,t){return r*(1-t)+n*t}function h(r,n,t){return Math.max(n,Math.min(t,r))}function d(r,n,t,e){return void 0===e&&(e=.5),n?(e=h(t(e),0,1),(n<0?p(r,r+r*h(n,-.95,-.05),e):p(r-r*h(n,.05,.95),r,e))/2):r/2}Object.defineProperty(exports,"__esModule",{value:!0});var g=Math.min,l=Math.PI;function m(n,e){var i=e.simulatePressure,u=e.streamline,v=void 0===u?.5:u,p=e.size,h=void 0===p?8:p;v/=2,void 0===i||i||(v/=2);var d=function(r){return Array.isArray(r[0])?r.map((function(r){var n=r[2];return[r[0],r[1],void 0===n?.5:n]})):r.map((function(r){var n=r.pressure;return[r.x,r.y,void 0===n?.5:n]}))}(n),g=d.length;if(0===g)return[];1===g&&d.push(r(d[0],[1,0]));for(var l=[{point:[d[0][0],d[0][1]],pressure:d[0][2],vector:[0,0],distance:0,runningLength:0}],m=1,M=d[m],L=l[0];m<d.length;M=d[++m],L=l[m-1]){var x=f(L.point,M,1-v);if(!c(L.point,x)){var y=M[2],P=a(t(x,L.point)),k=s(x,L.point);l.push({point:x,pressure:y,vector:P,distance:k,runningLength:L.runningLength+k})}}for(var b=l[g-1].runningLength,z=g-2;z>1;z--){var A=l[z],O=A.runningLength,S=A.vector,_=o(l[z-1].vector,l[z].vector);if(b-O>h/2||_<.8){for(var j=z;j<g;j++)l[j].vector=S;break}}return l}function M(p,h){void 0===h&&(h={});var m=h.size,M=void 0===m?8:m,L=h.thinning,x=void 0===L?.5:L,y=h.smoothing,P=void 0===y?.5:y,k=h.simulatePressure,b=void 0===k||k,z=h.easing,A=void 0===z?function(r){return r}:z,O=h.start,S=void 0===O?{}:O,_=h.end,j=void 0===_?{}:_,w=h.last,I=void 0!==w&&w,q=h.streamline,B=void 0===q?.5:q;B/=2;var C=S.taper,D=void 0===C?0:C,E=S.easing,F=void 0===E?function(r){return r*(2-r)}:E,G=j.taper,H=void 0===G?0:G,J=j.easing,K=void 0===J?function(r){return--r*r*r+1}:J,N=p.length;if(0===N)return[];for(var Q=p[N-1].runningLength,R=[],T=[],U=p.slice(0,5).reduce((function(r,n){return(r+n.pressure)/2}),p[0].pressure),V=d(M,x,A,p[N-1].pressure),W=p[0].vector,X=p[0].point,Y=X,Z=X,$=Y,rr=1;rr<N-1;rr++){var nr=p[rr],tr=nr.point,er=nr.pressure,ir=nr.vector,or=nr.distance,ur=nr.runningLength;if(x){if(b){var ar=g(1,1-or/M),sr=g(1,or/M);er=g(1,U+sr/2*(ar-U))}V=d(M,x,A,er)}else V=M/2;var vr=ur<D?F(ur/D):1,fr=Q-ur<H?K((Q-ur)/H):1;V*=Math.min(vr,fr);var cr=p[rr+1].vector,pr=o(ir,cr);if(pr<0){for(var hr=e(i(W),V),dr=0;dr<1;dr+=.2)$=v(r(tr,hr),tr,l*-dr),Z=v(n(tr,hr),tr,l*dr),T.push($),R.push(Z);X=Z,Y=$}else{var gr=e(i(f(cr,ir,pr)),V);Z=n(tr,gr),$=r(tr,gr);var lr=1===rr||pr<.25,mr=Math.pow((ur>M?M:M/2)*P,2);(lr||u(X,Z)>mr)&&(R.push(f(X,Z,B)),X=Z),(lr||u(Y,$)>mr)&&(T.push(f(Y,$,B)),Y=$),U=er,W=ir}}var Mr=p[0],Lr=p[N-1],xr=T.length<2||R.length<2;if(xr&&(!D&&!H||I)){for(var yr=0,Pr=0;Pr<N;Pr++){var kr=p[Pr];if(kr.runningLength>M){yr=d(M,x,A,kr.pressure);break}}for(var br=n(Mr.point,e(i(a(t(Lr.point,Mr.point))),yr||V)),zr=[],Ar=0;Ar<=1;Ar+=.1)zr.push(v(br,Mr.point,2*l*Ar));return zr}var Or=[];if(!(D||H&&xr)){$=T[1];for(var Sr=1;Sr<R.length;Sr++)if(!c($,R[Sr])){Z=R[Sr];break}if(!c($,Z)){for(var _r=n(Mr.point,e(a(t($,Z)),s($,Z)/2)),jr=0;jr<=1;jr+=.2)Or.push(v(_r,Mr.point,l*jr));R.shift(),T.shift()}}var wr=[];if(H||D&&xr)wr.push(Lr.point);else for(var Ir=n(Lr.point,e(i(Lr.vector),V)),qr=0;qr<=1;qr+=.1)wr.push(v(Ir,Lr.point,3*l*qr));return R.concat(wr,T.reverse(),Or)}exports.default=function(r,n){return void 0===n&&(n={}),M(m(r,n),n)},exports.getStrokeOutlinePoints=M,exports.getStrokePoints=m; | ||
//# sourceMappingURL=perfect-freehand.cjs.production.min.js.map |
@@ -226,7 +226,8 @@ /** | ||
for (var i = 1, curr = pts[i], prev = strokePoints[0]; i < pts.length; i++, curr = pts[i], prev = strokePoints[i - 1]) { | ||
var point = lrp(prev.point, curr, 1 - streamline), | ||
pressure = curr[2], | ||
vector = uni(vec(point, prev.point)), | ||
distance = dist(point, prev.point), | ||
runningLength = prev.runningLength + distance; | ||
var point = lrp(prev.point, curr, 1 - streamline); | ||
if (isEqual(prev.point, point)) continue; | ||
var pressure = curr[2]; | ||
var vector = uni(vec(point, prev.point)); | ||
var distance = dist(point, prev.point); | ||
var runningLength = prev.runningLength + distance; | ||
strokePoints.push({ | ||
@@ -233,0 +234,0 @@ point: point, |
{ | ||
"version": "0.4.8", | ||
"version": "0.4.9", | ||
"name": "perfect-freehand", | ||
@@ -4,0 +4,0 @@ "author": { |
@@ -49,8 +49,11 @@ import { toPointsArray, getStrokeRadius } from './utils' | ||
) { | ||
const point = vec.lrp(prev.point, curr, 1 - streamline), | ||
pressure = curr[2], | ||
vector = vec.uni(vec.vec(point, prev.point)), | ||
distance = vec.dist(point, prev.point), | ||
runningLength = prev.runningLength + distance | ||
const point = vec.lrp(prev.point, curr, 1 - streamline) | ||
if (vec.isEqual(prev.point, point)) continue | ||
const pressure = curr[2] | ||
const vector = vec.uni(vec.vec(point, prev.point)) | ||
const distance = vec.dist(point, prev.point) | ||
const runningLength = prev.runningLength + distance | ||
strokePoints.push({ | ||
@@ -57,0 +60,0 @@ point, |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
163640
1766