MCPcopy
hub / github.com/txstc55/ugly-avatar / generateHairLines0

Function generateHairLines0

src/utils/hair_lines.js:39–65  ·  view source on GitHub ↗
(faceCountour, numHairLines = 100)

Source from the content-addressed store, hash-verified

37}
38
39export function generateHairLines0(faceCountour, numHairLines = 100) {
40 var faceCountourCopy = faceCountour.slice(0, faceCountour.length - 2);
41 var results = [];
42 for (var i = 0; i < numHairLines; i++){
43 var numHairPoints = 20 + Math.floor(randomFromInterval(-5, 5));
44 // we generate some hair lines
45 var hair_line = [];
46 var index_offset = Math.floor(randomFromInterval(30, 140));
47 for (var j = 0; j < numHairPoints; j++){
48 hair_line.push({x: faceCountourCopy[(faceCountourCopy.length - (j + index_offset)) % faceCountourCopy.length][0], y:faceCountourCopy[(faceCountourCopy.length - (j + index_offset)) % faceCountourCopy.length][1]});
49 }
50 var d0 = computeBezierCurve(hair_line, numHairPoints);
51 hair_line = []
52 index_offset = Math.floor(randomFromInterval(30, 140));
53 for (var j = 0; j < numHairPoints; j++){
54 hair_line.push({x: faceCountourCopy[(faceCountourCopy.length - (-j + index_offset)) % faceCountourCopy.length][0], y:faceCountourCopy[(faceCountourCopy.length - (-j + index_offset)) % faceCountourCopy.length][1]});
55 }
56 var d1 = computeBezierCurve(hair_line, numHairPoints);
57 var d = [];
58 for (var j = 0; j < numHairPoints; j++){
59 d.push([d0[j][0] * (j * (1 / numHairPoints)) ** 2 + d1[j][0] * (1 - (j * (1 / numHairPoints)) ** 2), d0[j][1] * (j * (1 / numHairPoints)) ** 2 + d1[j][1] * (1 - (j * (1 / numHairPoints)) ** 2)]);
60 }
61
62 results.push(d);
63 }
64 return results;
65}
66export function generateHairLines1(faceCountour, numHairLines = 100) {
67 var faceCountourCopy = faceCountour.slice(0, faceCountour.length - 2);
68 var results = [];

Callers

nothing calls this directly

Calls 2

computeBezierCurveFunction · 0.85
randomFromIntervalFunction · 0.70

Tested by

no test coverage detected