improved handling of tangents
This commit is contained in:
parent
dbbd3c785a
commit
1eec3ea985
22
font.js
22
font.js
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
var r0_font, r0_glyphList, r0_glyphs, r0_Glyph, r0_Stroke, r0_para_regular, r0_para_bold, r0_para_italic, r0_para_bolditalic, r0_variantSelector, r0_globalTransform, r0_UPWARD, r0_DOWNWARD, r0_RIGHTWARD, r0_LEFTWARD, r0_DESCENDER, r0_WIDTH, r0_CAP, r0_XH, r0_O, r0_OXHOOK, r0_SB, r0_HOOK, r0_AHOOK, r0_SHOOK, r0_SMOOTH, r0_SMALLSMOOTH, r0_STROKE, r0_DOTSIZE, r0_BARPOS, r0_GBARPOS, r0_LONGSERIF, r0_ACCENT, r0_XO, r0_CAPO, r0_HALFSTROKE, r0_RIGHTSB, r0_MIDDLE, r0_CAPMIDDLE, r0_CAP_SMOOTH, r0_DOTRADIUS, r0_SMOOTHA, r0_SMOOTHB, r0_SMALLSMOOTHA, r0_SMALLSMOOTHB, r0_ITALICCORS, r0_KAPPA, r0_COKAPPA, r0_BKAPPA, r0_COBKAPPA, r0_KAPPA_HOOK, r0_KAPPA_AHOOK, r0_TAILADJX, r0_TAILADJY, r0_Ring, r0_ORing, r0_leftwardTopSerif, r0_leftwardBottomSerif, r0_rightwardTopSerif, r0_rightwardBottomSerif, r0_xn$createglyph$7Hrq, r0_para, _r0_t0, _r0_t1, _r0_t2, _r0_t3, _r0_t4, _r0_t5, _r0_t6, _r0_t7, _r0_t8, _r0_t9, _r0_t10, _r0_t11, _r0_t12, _r0_t13, _r0_t14, _r0_t15, _r0_t16, _r0_t17, _r0_t18, _r0_t19, _r0_t20, _r0_t21, _r0_t22, _r0_t23, _r0_t24, _r0_t25, _r0_t26, _r0_t27, _r0_t28, _r0_t29, _r0_t30, _r0_t31, _r0_t32, _r0_t33, _r0_t34, _r0_t35, _r0_t36, _r0_t37, _r0_t38, _r0_t39, _r0_t40, _r0_t41, _r0_t42, _r0_t43, _r0_t44, _r0_t45, _r0_t46, _r0_t47, _r0_t48, _r0_t49, _r0_t50, _r0_t51, _r0_t52, _r0_t53, _r0_t54, _r0_t55, _r0_t56, _r0_t57, _r0_t58, _r0_t59, _r0_t60, _r0_t61, _r0_t62, _r0_t63, _r0_t64, _r0_t65, _r0_t66, _r0_t67, _r0_t68, _r0_t69;
|
||||
var r0_font, r0_glyphList, r0_glyphs, r0_Glyph, r0_Stroke, r0_para_regular, r0_para_bold, r0_para_italic, r0_para_bolditalic, r0_variantSelector, r0_globalTransform, r0_ITALICCOR, r0_UPWARD, r0_DOWNWARD, r0_RIGHTWARD, r0_LEFTWARD, r0_DESCENDER, r0_WIDTH, r0_CAP, r0_XH, r0_O, r0_OXHOOK, r0_SB, r0_HOOK, r0_AHOOK, r0_SHOOK, r0_SMOOTH, r0_SMALLSMOOTH, r0_STROKE, r0_DOTSIZE, r0_BARPOS, r0_GBARPOS, r0_LONGSERIF, r0_ACCENT, r0_XO, r0_CAPO, r0_HALFSTROKE, r0_RIGHTSB, r0_MIDDLE, r0_CAPMIDDLE, r0_CAP_SMOOTH, r0_DOTRADIUS, r0_SMOOTHA, r0_SMOOTHB, r0_SMALLSMOOTHA, r0_SMALLSMOOTHB, r0_ITALICCORS, r0_KAPPA, r0_COKAPPA, r0_BKAPPA, r0_COBKAPPA, r0_KAPPA_HOOK, r0_KAPPA_AHOOK, r0_TAILADJX, r0_TAILADJY, r0_TAILADJKAPPA, r0_Ring, r0_ORing, r0_leftwardTopSerif, r0_leftwardBottomSerif, r0_rightwardTopSerif, r0_rightwardBottomSerif, r0_xn$createglyph$7Hrq, r0_para, _r0_t0, _r0_t1, _r0_t2, _r0_t3, _r0_t4, _r0_t5, _r0_t6, _r0_t7, _r0_t8, _r0_t9, _r0_t10, _r0_t11, _r0_t12, _r0_t13, _r0_t14, _r0_t15, _r0_t16, _r0_t17, _r0_t18, _r0_t19, _r0_t20, _r0_t21, _r0_t22, _r0_t23, _r0_t24, _r0_t25, _r0_t26, _r0_t27, _r0_t28, _r0_t29, _r0_t30, _r0_t31, _r0_t32, _r0_t33, _r0_t34, _r0_t35, _r0_t36, _r0_t37, _r0_t38, _r0_t39, _r0_t40, _r0_t41, _r0_t42, _r0_t43, _r0_t44, _r0_t45, _r0_t46, _r0_t47, _r0_t48, _r0_t49, _r0_t50, _r0_t51, _r0_t52, _r0_t53, _r0_t54, _r0_t55, _r0_t56, _r0_t57, _r0_t58, _r0_t59, _r0_t60, _r0_t61, _r0_t62, _r0_t63, _r0_t64, _r0_t65, _r0_t66, _r0_t67, _r0_t68, _r0_t69;
|
||||
r0_font = require('./empty.json');
|
||||
r0_glyphList = r0_font['glyf'];
|
||||
r0_glyphs = { '.notdef': r0_glyphList[0] };
|
||||
|
@ -29,7 +29,7 @@
|
|||
'accent': 175
|
||||
};
|
||||
r0_para_bold = Object['create'](r0_para_regular);
|
||||
r0_para_bold['stroke'] = 120;
|
||||
r0_para_bold['stroke'] = 114;
|
||||
r0_para_bold['dotsize'] = 150;
|
||||
r0_para_bold['barpos'] = 0.42;
|
||||
r0_para_bold['hook'] = 150;
|
||||
|
@ -41,7 +41,7 @@
|
|||
r0_para_italic['italicangle'] = 10;
|
||||
r0_para_bolditalic = Object['create'](r0_para_bold);
|
||||
r0_para_bolditalic['italicangle'] = 10;
|
||||
r0_para = r0_para_italic;
|
||||
r0_para = r0_para_bolditalic;
|
||||
r0_variantSelector = { 'zero': 'slashed' };
|
||||
r0_globalTransform = {
|
||||
'xx': 1,
|
||||
|
@ -51,12 +51,13 @@
|
|||
'x': 0,
|
||||
'y': 0
|
||||
};
|
||||
r0_ITALICCOR = 1 / Math['sqrt'](1 - r0_globalTransform['yx'] * r0_globalTransform['yx']);
|
||||
r0_UPWARD = {
|
||||
'x': -1,
|
||||
'x': -r0_ITALICCOR,
|
||||
'y': 0
|
||||
};
|
||||
r0_DOWNWARD = {
|
||||
'x': 1,
|
||||
'x': r0_ITALICCOR,
|
||||
'y': 0
|
||||
};
|
||||
r0_RIGHTWARD = {
|
||||
|
@ -105,7 +106,8 @@
|
|||
r0_KAPPA_HOOK = r0_para['kappa_hook'] || 0.7;
|
||||
r0_KAPPA_AHOOK = r0_para['kappa_ahook'] || r0_KAPPA_HOOK;
|
||||
r0_TAILADJX = r0_WIDTH * 0.2;
|
||||
r0_TAILADJY = r0_XH * 0.5;
|
||||
r0_TAILADJY = r0_XH * 0.25;
|
||||
r0_TAILADJKAPPA = 0.75;
|
||||
r0_Stroke['bindParameters'](r0_para);
|
||||
r0_Ring = function _r0_t0(r1_u, r1_d, r1_l, r1_r) {
|
||||
var r1_u, r1_d, r1_l, r1_r, r1_my, r1_mx, r1_s;
|
||||
|
@ -1077,7 +1079,7 @@
|
|||
r91_xn$setwidth$9Jrj(r0_WIDTH);
|
||||
r91_xn$assignunicode$7Hrq('c');
|
||||
r91_outline = r91_xn$createstroke$7Hrq();
|
||||
r91_outline['start-from'](r0_RIGHTSB - r0_OXHOOK, r0_XH - r0_HOOK)['curve-to'](r0_MIDDLE + r0_KAPPA_HOOK * (r0_MIDDLE - r0_para['sb']), r0_XO, r0_MIDDLE, r0_XO)['pen-direction'](r0_LEFTWARD)['arc-hv-to'](r0_SB + r0_O, r0_XH - r0_SMALLSMOOTHA)['line-to'](r0_SB + r0_O, r0_SMALLSMOOTHB)['arc-vh-to'](r0_MIDDLE, r0_O)['pen-direction'](r0_RIGHTWARD)['curve-to'](r0_MIDDLE + r0_KAPPA_HOOK * (r0_MIDDLE - r0_SB), r0_O, r0_RIGHTSB - r0_OXHOOK + r0_TAILADJX * r0_globalTransform['yx'], r0_HOOK - r0_TAILADJY * r0_globalTransform['yx']);
|
||||
r91_outline['start-from'](r0_RIGHTSB - r0_OXHOOK, r0_XH - r0_HOOK)['curve-to'](r0_MIDDLE + r0_KAPPA_HOOK * (r0_MIDDLE - r0_para['sb']), r0_XO, r0_MIDDLE, r0_XO)['pen-direction'](r0_LEFTWARD)['arc-hv-to'](r0_SB + r0_O, r0_XH - r0_SMALLSMOOTHA)['line-to'](r0_SB + r0_O, r0_SMALLSMOOTHB)['arc-vh-to'](r0_MIDDLE, r0_O)['pen-direction'](r0_RIGHTWARD)['curve-to'](r0_MIDDLE + (r0_KAPPA_HOOK + r0_TAILADJKAPPA * r0_globalTransform['yx']) * (r0_MIDDLE - r0_SB), r0_O, r0_RIGHTSB - r0_OXHOOK + r0_TAILADJX * r0_globalTransform['yx'], r0_HOOK - r0_TAILADJY * r0_globalTransform['yx']);
|
||||
r91_xn$putshapes$9Jrj(r91_outline['form-stroke'](r0_STROKE, 0));
|
||||
return void 0;
|
||||
});
|
||||
|
@ -1099,7 +1101,7 @@
|
|||
r93_xn$setwidth$9Jrj(r0_WIDTH);
|
||||
r93_xn$assignunicode$7Hrq('e');
|
||||
r93_barbottom = r0_XH * r0_BARPOS;
|
||||
r93_outline = r93_xn$createstroke$7Hrq()['start-from'](r0_RIGHTSB - r0_O, r93_barbottom)['pen-direction'](r0_UPWARD)['set-width'](r0_STROKE, 0)['line-to'](r0_RIGHTSB - r0_O, r0_XH - r0_SMALLSMOOTHB)['arc-vh-to'](r0_MIDDLE, r0_XO)['pen-direction'](r0_LEFTWARD)['arc-hv-to'](r0_SB + r0_O, r0_XH - r0_SMALLSMOOTHA)['line-to'](r0_SB + r0_O, r0_SMALLSMOOTHB)['arc-vh-to'](r0_MIDDLE, r0_O)['pen-direction'](r0_RIGHTWARD)['curve-to'](r0_MIDDLE + r0_KAPPA_HOOK * (r0_MIDDLE - r0_SB), r0_O, r0_RIGHTSB - r0_OXHOOK + r0_TAILADJX * r0_globalTransform['yx'], r0_HOOK - r0_TAILADJY * r0_globalTransform['yx']);
|
||||
r93_outline = r93_xn$createstroke$7Hrq()['start-from'](r0_RIGHTSB - r0_O, r93_barbottom)['pen-direction'](r0_UPWARD)['set-width'](r0_STROKE, 0)['line-to'](r0_RIGHTSB - r0_O, r0_XH - r0_SMALLSMOOTHB)['arc-vh-to'](r0_MIDDLE, r0_XO)['pen-direction'](r0_LEFTWARD)['arc-hv-to'](r0_SB + r0_O, r0_XH - r0_SMALLSMOOTHA)['line-to'](r0_SB + r0_O, r0_SMALLSMOOTHB)['arc-vh-to'](r0_MIDDLE, r0_O)['pen-direction'](r0_RIGHTWARD)['curve-to'](r0_MIDDLE + (r0_KAPPA_HOOK + r0_TAILADJKAPPA * r0_globalTransform['yx']) * (r0_MIDDLE - r0_SB), r0_O, r0_RIGHTSB - r0_OXHOOK + r0_TAILADJX * r0_globalTransform['yx'], r0_HOOK - r0_TAILADJY * r0_globalTransform['yx']);
|
||||
r93_bar = r93_xn$createstroke$7Hrq()['start-from'](r0_SB + r0_HALFSTROKE, r93_barbottom)['set-width'](r0_STROKE, 0)['pen-direction'](r0_RIGHTWARD)['line-to'](r0_RIGHTSB - r0_HALFSTROKE, r93_barbottom)['pen-direction'](r0_RIGHTWARD);
|
||||
r93_xn$putshapes$9Jrj(r93_outline['form-stroke']());
|
||||
r93_xn$putshapes$9Jrj(r93_bar['form-stroke']());
|
||||
|
@ -1189,7 +1191,7 @@
|
|||
r101_xn$setwidth$9Jrj(r0_WIDTH);
|
||||
r101_xn$assignunicode$7Hrq('u');
|
||||
r101_xn$putshapes$9Jrj(r101_xn$createstroke$7Hrq()['start-from'](r0_SB, r0_XH)['pen-direction'](r0_DOWNWARD)['set-width'](r0_STROKE, 0)['line-to'](r0_SB, r0_SMALLSMOOTHA)['arc-vh-to'](r0_MIDDLE, r0_O)['pen-direction'](r0_RIGHTWARD)['form-stroke']());
|
||||
r101_xn$putshapes$9Jrj(r101_xn$createstroke$7Hrq()['start-from'](r0_MIDDLE, r0_O + r0_STROKE)['set-width'](0, r0_STROKE)['pen-direction'](r0_RIGHTWARD)['arc-hv-to'](r0_RIGHTSB - r0_STROKE, r0_SMALLSMOOTHA)['pen-direction'](r0_UPWARD)['set-width'](0, r0_STROKE * 0.4)['form-stroke']());
|
||||
r101_xn$putshapes$9Jrj(r101_xn$createstroke$7Hrq()['start-from'](r0_MIDDLE, r0_O + r0_STROKE)['set-width'](0, r0_STROKE)['pen-direction'](r0_RIGHTWARD)['arc-hv-to'](r0_RIGHTSB - r0_STROKE * r0_ITALICCOR, r0_SMALLSMOOTHA)['pen-direction'](r0_UPWARD)['set-width'](0, r0_STROKE * 0.4)['form-stroke']());
|
||||
r101_xn$putshapes$9Jrj(r101_xn$createstroke$7Hrq()['start-from'](r0_RIGHTSB, 0)['pen-direction'](r0_UPWARD)['set-width'](r0_STROKE, 0)['line-to'](r0_RIGHTSB, r0_XH)['pen-direction'](r0_UPWARD)['form-stroke']());
|
||||
return void 0;
|
||||
});
|
||||
|
@ -1209,7 +1211,7 @@
|
|||
_r103_t0['gizmo'] = r0_globalTransform;
|
||||
_r103_t0['set-width'](r0_WIDTH);
|
||||
r103_xn$putshapes$9Jrj(r103_xn$createstroke$7Hrq()['start-from'](r0_RIGHTSB, 0)['pen-direction'](r0_UPWARD)['set-width'](r0_STROKE, 0)['line-to'](r0_RIGHTSB, r0_XH - r0_SMALLSMOOTHB)['arc-vh-to'](r0_MIDDLE, r0_XO)['pen-direction'](r0_LEFTWARD)['form-stroke']());
|
||||
r103_xn$putshapes$9Jrj(r103_xn$createstroke$7Hrq()['start-from'](r0_MIDDLE, r0_XO - r0_STROKE)['set-width'](0, r0_STROKE)['pen-direction'](r0_LEFTWARD)['arc-hv-to'](r0_SB + r0_STROKE, r0_XH - r0_SMALLSMOOTHA)['pen-direction'](r0_DOWNWARD)['set-width'](0, r0_STROKE * 0.4)['form-stroke']());
|
||||
r103_xn$putshapes$9Jrj(r103_xn$createstroke$7Hrq()['start-from'](r0_MIDDLE, r0_XO - r0_STROKE)['set-width'](0, r0_STROKE)['pen-direction'](r0_LEFTWARD)['arc-hv-to'](r0_SB + r0_STROKE * r0_ITALICCOR, r0_XH - r0_SMALLSMOOTHA)['pen-direction'](r0_DOWNWARD)['set-width'](0, r0_STROKE * 0.4)['form-stroke']());
|
||||
return void 0;
|
||||
});
|
||||
r0_xn$createglyph$7Hrq('n', function _r0_t53() {
|
||||
|
|
21
font.patel
21
font.patel
|
@ -31,7 +31,7 @@ define para_regular (
|
|||
)
|
||||
|
||||
define para_bold : Object.create para_regular
|
||||
para_bold.stroke = 120
|
||||
para_bold.stroke = 114
|
||||
para_bold.dotsize = 150
|
||||
para_bold.barpos = 0.42
|
||||
para_bold.hook = 150
|
||||
|
@ -46,7 +46,7 @@ para_italic.italicangle = 10
|
|||
define para_bolditalic : Object.create para_bold
|
||||
para_bolditalic.italicangle = 10
|
||||
|
||||
para = para_italic
|
||||
para = para_bolditalic
|
||||
|
||||
define variantSelector (
|
||||
.zero 'slashed'
|
||||
|
@ -61,8 +61,10 @@ define globalTransform (
|
|||
.y 0
|
||||
)
|
||||
|
||||
define UPWARD (.x [-1] .y 0)
|
||||
define DOWNWARD (.x 1 .y 0)
|
||||
define ITALICCOR : 1 / [Math.sqrt [1 - globalTransform.yx * globalTransform.yx]]
|
||||
|
||||
define UPWARD (.x [-ITALICCOR] .y 0)
|
||||
define DOWNWARD (.x ITALICCOR .y 0)
|
||||
define RIGHTWARD (.x globalTransform.yx .y 1)
|
||||
define LEFTWARD (.x [- globalTransform.yx] .y [-1])
|
||||
|
||||
|
@ -111,7 +113,8 @@ define COBKAPPA : 1 - BKAPPA
|
|||
define KAPPA_HOOK : para.kappa_hook || 0.7
|
||||
define KAPPA_AHOOK : para.kappa_ahook || KAPPA_HOOK
|
||||
define TAILADJX : WIDTH * 0.2
|
||||
define TAILADJY : XH * 0.5
|
||||
define TAILADJY : XH * 0.25
|
||||
define TAILADJKAPPA 0.75
|
||||
|
||||
Stroke.bindParameters para
|
||||
|
||||
|
@ -923,7 +926,7 @@ create-glyph 'c' : glyph-construction {
|
|||
:.line-to [SB + O] SMALLSMOOTHB
|
||||
:.arc-vh-to MIDDLE O
|
||||
:.pen-direction RIGHTWARD
|
||||
:.curve-to [MIDDLE + KAPPA_HOOK * [MIDDLE - SB]] O [RIGHTSB - OXHOOK + TAILADJX * globalTransform.yx] [HOOK - TAILADJY * globalTransform.yx]
|
||||
:.curve-to [MIDDLE + [KAPPA_HOOK + TAILADJKAPPA * globalTransform.yx] * [MIDDLE - SB]] O [RIGHTSB - OXHOOK + TAILADJX * globalTransform.yx] [HOOK - TAILADJY * globalTransform.yx]
|
||||
put-shapes : outline.form-stroke STROKE 0
|
||||
}
|
||||
create-glyph 'e' : glyph-construction {
|
||||
|
@ -943,7 +946,7 @@ create-glyph 'e' : glyph-construction {
|
|||
:.line-to [SB + O] SMALLSMOOTHB
|
||||
:.arc-vh-to MIDDLE O
|
||||
:.pen-direction RIGHTWARD
|
||||
:.curve-to [MIDDLE + KAPPA_HOOK * [MIDDLE - SB]] O [RIGHTSB - OXHOOK + TAILADJX * globalTransform.yx] [HOOK - TAILADJY * globalTransform.yx]
|
||||
:.curve-to [MIDDLE + [KAPPA_HOOK + TAILADJKAPPA * globalTransform.yx] * [MIDDLE - SB]] O [RIGHTSB - OXHOOK + TAILADJX * globalTransform.yx] [HOOK - TAILADJY * globalTransform.yx]
|
||||
|
||||
local bar : create-stroke
|
||||
:.start-from [SB + HALFSTROKE] barbottom
|
||||
|
@ -1022,7 +1025,7 @@ create-glyph 'u' : glyph-construction {
|
|||
:.start-from MIDDLE [O + STROKE]
|
||||
:.set-width 0 STROKE
|
||||
:.pen-direction RIGHTWARD
|
||||
:.arc-hv-to [RIGHTSB - STROKE] SMALLSMOOTHA
|
||||
:.arc-hv-to [RIGHTSB - STROKE * ITALICCOR] SMALLSMOOTHA
|
||||
:.pen-direction UPWARD
|
||||
:.set-width 0 [STROKE * 0.4]
|
||||
:.form-stroke
|
||||
|
@ -1049,7 +1052,7 @@ create-glyph 'nbowl' : glyph-construction {
|
|||
:.start-from MIDDLE [XO - STROKE]
|
||||
:.set-width 0 STROKE
|
||||
:.pen-direction LEFTWARD
|
||||
:.arc-hv-to [SB + STROKE] [XH - SMALLSMOOTHA]
|
||||
:.arc-hv-to [SB + STROKE * ITALICCOR] [XH - SMALLSMOOTHA]
|
||||
:.pen-direction DOWNWARD
|
||||
:.set-width 0 [STROKE * 0.4]
|
||||
:.form-stroke
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
var r0_smooth, r0_intersection, r0_Bezier, r0_tp, r0_utp, r0_xn$xsarray$3cah, r0_xn$ysarray$3cah, r0_SAMPLES, r0_TINY, r0_LITTLE, r0_KAPPA, r0_COKAPPA, r0_BKAPPA, r0_COBKAPPA, r0_Stroke, r0_dforward, r0_dbackward, r0_nonlinear, r0_computeOffsetPoint, _r0_t0, _r0_t1, _r0_t2, _r0_t3, _r0_t4, _r0_t5, _r0_t6, _r0_t7, _r0_t8, _r0_t9, _r0_t10, _r0_t11, _r0_t12, _r0_t13, _r0_t14, _r0_t15, _r0_t16, _r0_t17;
|
||||
var r0_smooth, r0_intersection, r0_Bezier, r0_tp, r0_utp, r0_xn$xsarray$3cah, r0_xn$ysarray$3cah, r0_SAMPLES, r0_TINY, r0_LITTLE, r0_CUTOFF, r0_KAPPA, r0_COKAPPA, r0_BKAPPA, r0_COBKAPPA, r0_Stroke, r0_dforward, r0_dbackward, r0_nonlinear, r0_computeOffsetPoint, _r0_t0, _r0_t1, _r0_t2, _r0_t3, _r0_t4, _r0_t5, _r0_t6, _r0_t7, _r0_t8, _r0_t9, _r0_t10, _r0_t11, _r0_t12, _r0_t13, _r0_t14, _r0_t15, _r0_t16, _r0_t17;
|
||||
r0_smooth = require('./monotonic-interpolate')['createInterpolant'];
|
||||
r0_intersection = require('./intersection')['intersection'];
|
||||
r0_Bezier = require('bezier-js');
|
||||
|
@ -18,9 +18,10 @@
|
|||
var r2_a;
|
||||
return [r2_a[0]]['concat'](r2_a['concat']([r2_a[r2_a['length'] - 1]]));
|
||||
};
|
||||
r0_SAMPLES = 4;
|
||||
r0_SAMPLES = 5;
|
||||
r0_TINY = 0.0001;
|
||||
r0_LITTLE = 0.01;
|
||||
r0_CUTOFF = 10000;
|
||||
r0_KAPPA = 0.51;
|
||||
r0_COKAPPA = 1 - r0_KAPPA;
|
||||
r0_BKAPPA = r0_KAPPA + 0.1;
|
||||
|
@ -347,8 +348,7 @@
|
|||
r18_dlnext = r0_dbackward(r18_lnext, r18_lnnext1, r18_lnnext2, r18_lnnext3);
|
||||
r18_drnext = r0_dbackward(r18_rnext, r18_rnnext2, r18_rnnext2, r18_rnnext3);
|
||||
r18_il = r0_intersection(r18_lthis['x'], r18_lthis['y'], r18_dlthis['x'], r18_dlthis['y'], r18_lnext['x'], r18_lnext['y'], r18_dlnext['x'], r18_dlnext['y']);
|
||||
r18_ir = r0_intersection(r18_rthis['x'], r18_rthis['y'], r18_drthis['x'], r18_drthis['y'], r18_rnext['x'], r18_rnext['y'], r18_drnext['x'], r18_drnext['y']);
|
||||
if (r18_il['x'] !== null && r18_il['y'] !== null && r0_nonlinear(r18_lthis, r18_il, r18_lnext)) {
|
||||
if (r0_nonlinear(r18_lthis, r18_lnext, r18_dlthis) && r0_nonlinear(r18_lthis, r18_lnext, r18_dlnext) && r18_il['x'] !== null && r18_il['y'] !== null && Math['abs'](r18_il['x']) <= r0_CUTOFF && Math['abs'](r18_il['y']) <= r0_CUTOFF && r0_nonlinear(r18_lthis, r18_il, r18_lnext)) {
|
||||
r18_left['push']({
|
||||
'x': r18_lthis['x'],
|
||||
'y': r18_lthis['y'],
|
||||
|
@ -365,7 +365,8 @@
|
|||
'onCurve': true
|
||||
});
|
||||
}
|
||||
if (r18_ir['x'] !== null && r18_ir['y'] !== null && r0_nonlinear(r18_rthis, r18_ir, r18_rnext)) {
|
||||
r18_ir = r0_intersection(r18_rthis['x'], r18_rthis['y'], r18_drthis['x'], r18_drthis['y'], r18_rnext['x'], r18_rnext['y'], r18_drnext['x'], r18_drnext['y']);
|
||||
if (r0_nonlinear(r18_rthis, r18_rnext, r18_drthis) && r0_nonlinear(r18_rthis, r18_rnext, r18_drnext) && r18_ir['x'] !== null && r18_ir['y'] !== null && Math['abs'](r18_ir['x']) <= r0_CUTOFF && Math['abs'](r18_ir['y']) <= r0_CUTOFF && r0_nonlinear(r18_rthis, r18_ir, r18_rnext)) {
|
||||
r18_right['push']({
|
||||
'x': r18_rthis['x'],
|
||||
'y': r18_rthis['y'],
|
||||
|
|
|
@ -11,9 +11,10 @@ define [xs-array low high] : begin {
|
|||
}
|
||||
define [ys-array a] (a.0 :: [a.concat (a`[a.length - 1])])
|
||||
|
||||
define SAMPLES 4
|
||||
define SAMPLES 5
|
||||
define TINY 0.0001
|
||||
define LITTLE 0.01
|
||||
define CUTOFF 10000
|
||||
define KAPPA 0.51
|
||||
define COKAPPA : 1 - KAPPA
|
||||
define BKAPPA : KAPPA + 0.1
|
||||
|
@ -186,15 +187,14 @@ define [Stroke.prototype.form-stroke d1 d2] : begin {
|
|||
local drnext [dbackward rnext rnnext2 rnnext2 rnnext3]
|
||||
|
||||
local il : intersection lthis.x lthis.y dlthis.x dlthis.y lnext.x lnext.y dlnext.x dlnext.y
|
||||
local ir : intersection rthis.x rthis.y drthis.x drthis.y rnext.x rnext.y drnext.x drnext.y
|
||||
|
||||
if [[il.x != null] && [il.y != null] && [nonlinear lthis il lnext]] [then {
|
||||
if [[nonlinear lthis lnext dlthis] && [nonlinear lthis lnext dlnext] && [il.x != null] && [il.y != null] && [Math.abs il.x] <= CUTOFF && [Math.abs il.y] <= CUTOFF && [nonlinear lthis il lnext]] [then {
|
||||
left.push (.x lthis.x .y lthis.y .onCurve true) (.x il.x .y il.y .onCurve false)
|
||||
}] [else {
|
||||
left.push (.x lthis.x .y lthis.y .onCurve true)
|
||||
}]
|
||||
|
||||
if [[ir.x != null] && [ir.y != null] && [nonlinear rthis ir rnext]] [then {
|
||||
local ir : intersection rthis.x rthis.y drthis.x drthis.y rnext.x rnext.y drnext.x drnext.y
|
||||
if [[nonlinear rthis rnext drthis] && [nonlinear rthis rnext drnext] && [ir.x != null] && [ir.y != null] && [Math.abs ir.x] <= CUTOFF && [Math.abs ir.y] <= CUTOFF && [nonlinear rthis ir rnext]] [then {
|
||||
right.push (.x rthis.x .y rthis.y .onCurve true) (.x ir.x .y ir.y .onCurve false)
|
||||
}] [else {
|
||||
right.push (.x rthis.x .y rthis.y .onCurve true)
|
||||
|
|
Loading…
Reference in New Issue
Block a user