So I scrapped all of this, and added .y to my var point calculation since I am only passing in the Y to my controlpoints and it SEEMS to be working. I am getting curved lines that attach to all of my points… Wondering if I even needed to use vector math. I think I am still following the above linked algo that I found for figuring this out… but not 100% sure.
var point0Percentage = .25;
var point1Percentage = .75;
// start at 1 because 0 would make the first lines start and end point the same which we don't want!
for(var k = 1; k < linePoints.length; k++){
var point0 = 1 - point0Percentage * linePoints[0].y + point0Percentage * linePoints[k].y;
var point1 = 1 - point1Percentage * linePoints[0].y + point1Percentage * linePoints[k].y;
var controlPoint0 = new THREE.Vector3(
linePoints[0].x,
point0 - (1 - point0Percentage * linePoints[0].y / point0Percentage),
linePoints[0].z
);
var controlPoint1 = new THREE.Vector3(
linePoints[0].x,
point1 - (1 - point1Percentage * linePoints[0].y / point1Percentage),
linePoints[0].z
);
var curve = new THREE.CubicBezierCurve3(linePoints[0], controlPoint0, controlPoint1, linePoints[k]);
var curvePoints = curve.getPoints(50);
var lineGeo = new THREE.BufferGeometry().setFromPoints(curvePoints);
var line = new THREE.Line(lineGeo, lineMat);
line.visible = false;
hexSphere.add(line);
this.clusterLines.push(line);
}