1
0
Fork 0
freesewing/designs/noble/src/backpoints.mjs

90 lines
2.6 KiB
JavaScript
Raw Normal View History

2022-09-05 16:13:41 +02:00
import { back as bellaBack } from '@freesewing/bella'
import * as options from './options.mjs'
2022-09-11 16:05:55 +02:00
function nobleBackPoints({ points, Path, paths, options, snippets, log, part }) {
2022-07-10 16:09:59 +02:00
// Hide Bella paths
2022-06-19 23:23:10 +00:00
for (let key of Object.keys(paths)) paths[key].render = false
for (let i in snippets) delete snippets[i]
2022-06-20 21:25:06 +00:00
2022-06-19 23:23:10 +00:00
delete points.__titleNr
delete points.__titleName
delete points.__titlePattern
delete points.scaleboxAnchor
delete points.__scaleboxImperialBottomLeft
delete points.__scaleboxMetricBottomLeft
delete points.__scaleboxImperialTopLeft
delete points.__scaleboxMetricTopLeft
delete points.__scaleboxImperialTopRight
delete points.__scaleboxMetricTopRight
delete points.__scaleboxImperialBottomRight
delete points.__scaleboxMetricBottomRight
delete points.__scaleboxLead
delete points.__scaleboxTitle
delete points.__scaleboxText
delete points.__scaleboxLink
delete points.__scaleboxImperial
delete points.__scaleboxMetric
delete points.bustDartLeft
delete points.bustDartLeftCp
2022-09-05 16:13:41 +02:00
points.shoulderDart = points.hps.shiftFractionTowards(
points.shoulder,
options.shoulderDartPosition
)
2022-09-05 16:13:41 +02:00
let aUp = points.dartTip.angle(points.shoulderDart)
let aDown = points.dartBottomRight.angle(points.dartTip)
let aDiff = Math.abs(aUp - aDown)
2022-06-19 23:23:10 +00:00
// let dartCpAdjustment = Math.abs( options.shoulderDartPosition -.5) +.05
2022-09-05 16:13:41 +02:00
let dartCpAdjustment = aDiff / 50
2022-06-19 23:23:10 +00:00
2022-09-05 16:13:41 +02:00
points.shoulderDartCpUp = points.shoulderDart.shiftFractionTowards(
points.dartTip,
1 - dartCpAdjustment
)
points.shoulderDartCpDown = points.shoulderDart.shiftFractionTowards(
points.dartTip,
1 + dartCpAdjustment
)
const length = {
i: new Path()
.move(points.dartBottomLeft)
.curve(points.dartLeftCp, points.shoulderDartCpDown, points.dartTip)
.curve(points.shoulderDartCpUp, points.shoulderDart, points.shoulderDart)
2022-09-05 16:13:41 +02:00
.length(),
}
2022-06-19 23:23:10 +00:00
let iteration = 0
let diff = 0
let angle = 0
do {
2022-09-05 16:13:41 +02:00
if (length.o) angle = diff * (length.o > length.i ? -0.1 : 0.1)
2022-09-05 16:13:41 +02:00
points.dartBottomRight = points.dartBottomRight.rotate(angle, points.waistSide)
2022-06-19 23:23:10 +00:00
length.o = new Path()
2022-06-19 23:23:10 +00:00
.move(points.shoulderDart)
.curve(points.shoulderDart, points.shoulderDartCpUp, points.dartTip)
.curve(points.shoulderDartCpDown, points.dartRightCp, points.dartBottomRight)
.length()
2022-06-19 23:23:10 +00:00
diff = length.o - length.i
2022-09-05 16:13:41 +02:00
iteration++
} while (diff < -0.5 || (diff > 0.5 && iteration < 100))
if (iteration >= 100) {
2022-09-11 16:05:55 +02:00
log.error('Something is not quite right here!')
2022-06-19 23:23:10 +00:00
}
2022-06-19 23:23:10 +00:00
return part
}
2022-09-05 16:13:41 +02:00
export const backPoints = {
name: 'noble.backPoints',
from: bellaBack,
hideAll: true,
options,
draft: nobleBackPoints,
}