Resolves #5956
This commit is contained in:
parent
23fa716098
commit
fd8dc3e4b4
1 changed files with 20 additions and 6 deletions
|
@ -48,9 +48,10 @@ const createWaistPoint = (options, measurements, Path, points, utils, log, front
|
||||||
)
|
)
|
||||||
let waistCp = waist.shiftFractionTowards(points.middleKnee, options.waistToKneeCP)
|
let waistCp = waist.shiftFractionTowards(points.middleKnee, options.waistToKneeCP)
|
||||||
const kneeToWaist = measurements.waistToKnee * 0.75
|
const kneeToWaist = measurements.waistToKnee * 0.75
|
||||||
|
|
||||||
let diff = 0
|
let diff = 0
|
||||||
let iter = 0
|
let iter = 0
|
||||||
|
let bestDiff = 999
|
||||||
|
let best = {}
|
||||||
do {
|
do {
|
||||||
// waist = kneeTemp.shift(angle, kneeToWaist +((diff > 0 ? 1 : -1) *iter))
|
// waist = kneeTemp.shift(angle, kneeToWaist +((diff > 0 ? 1 : -1) *iter))
|
||||||
waist = kneeTemp.shift(angle, kneeToWaist + diff * 1.03)
|
waist = kneeTemp.shift(angle, kneeToWaist + diff * 1.03)
|
||||||
|
@ -60,12 +61,22 @@ const createWaistPoint = (options, measurements, Path, points, utils, log, front
|
||||||
const crossSeamPath = new Path().move(points.middleCrossSeam).curve(crossSeamCp, waistCp, waist)
|
const crossSeamPath = new Path().move(points.middleCrossSeam).curve(crossSeamCp, waistCp, waist)
|
||||||
|
|
||||||
diff = crossSeam - crossSeamPath.length()
|
diff = crossSeam - crossSeamPath.length()
|
||||||
// console.log({i:iter,d:diff,cs:crossSeam,csl:crossSeamPath.length()})
|
if (Math.abs(diff) < bestDiff) {
|
||||||
|
best = {
|
||||||
|
waist: waist.copy(),
|
||||||
|
waistCp: waistCp.copy(),
|
||||||
|
}
|
||||||
|
bestDiff = Math.abs(diff)
|
||||||
|
}
|
||||||
} while (++iter < 100 && (diff > 1 || diff < -1))
|
} while (++iter < 100 && (diff > 1 || diff < -1))
|
||||||
if (iter >= 100) {
|
if (iter >= 100) {
|
||||||
log.error('lumina:cantFitTheWaistPoint')
|
if (bestDiff > 5) {
|
||||||
|
log.error('lumina:cantFitTheWaistPoint')
|
||||||
|
} else {
|
||||||
|
waist = best.waist
|
||||||
|
waistCp = best.waistCp
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (front) {
|
if (front) {
|
||||||
points.frontWaist = waist.clone()
|
points.frontWaist = waist.clone()
|
||||||
points.frontWaistband = waist.clone()
|
points.frontWaistband = waist.clone()
|
||||||
|
@ -178,8 +189,11 @@ const createSidePoints = ({
|
||||||
points[prefix + postfix + names[i]] = ci[prefix == 'front' ? 0 : 1]
|
points[prefix + postfix + names[i]] = ci[prefix == 'front' ? 0 : 1]
|
||||||
}
|
}
|
||||||
} while (iter++ < 100 && (false == ci || isNaN(ci[prefix == 'front' ? 0 : 1].x)))
|
} while (iter++ < 100 && (false == ci || isNaN(ci[prefix == 'front' ? 0 : 1].x)))
|
||||||
|
if (iter >= 100) {
|
||||||
lastGood = i
|
points[prefix + postfix + names[i]] = points[prefix + postfix + names[lastGood]].clone()
|
||||||
|
} else {
|
||||||
|
lastGood = i
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue