|
@@ -49856,12 +49856,20 @@
|
|
|
var curve = new CatmullRomCurve3(points, false);
|
|
|
curve.UtoTMapArr = []; //用于存储 getSpacedPoints得到的点对应points的百分比对应
|
|
|
//window.arcLengthDivisions && (curve.arcLengthDivisions = arcLengthDivisions) //默认200,但改为1也没变化呀
|
|
|
+ var oldCount = count;
|
|
|
count = Math.max(2, Math.round(this.getTotalDistance() * 400)), points = curve.getSpacedPoints(count - 1); //拆分为更密集的点
|
|
|
this.curve = curve;
|
|
|
//减少点数(拐弯的部分紧凑些,直线部分宽松些):
|
|
|
var lastVec;
|
|
|
var newPoints = [];
|
|
|
this.UtoTMapArr = [];
|
|
|
+ var pointIndexs = []; //找出新点中对应原先控制点的index,这些点必须加入拐点,否则会出现控制点偏移path(当它所在部分接近直线时)
|
|
|
+ var _loop = function _loop(n) {
|
|
|
+ pointIndexs.push(curve.UtoTMapArr.findIndex(e => e >= n / (oldCount - 1)));
|
|
|
+ };
|
|
|
+ for (var n = 1; n < oldCount - 1; n++) {
|
|
|
+ _loop(n);
|
|
|
+ }
|
|
|
for (var i = 0; i < count; i++) {
|
|
|
var point = points[i];
|
|
|
var last = points[i - 1];
|
|
@@ -49875,7 +49883,7 @@
|
|
|
if (!lastVec) lastVec = curVec;
|
|
|
if (i > 1) {
|
|
|
// 和上一个加入点的vec之间的夹角如果过大就加入
|
|
|
- if (curVec.angleTo(lastVec) > 0.05) {
|
|
|
+ if (pointIndexs.includes(i) || curVec.angleTo(lastVec) > 0.05) {
|
|
|
//最小角度
|
|
|
newPoints.push(point);
|
|
|
this.UtoTMapArr.push(curve.UtoTMapArr[i]);
|
|
@@ -50447,7 +50455,7 @@
|
|
|
var arrowCount = sliceCount - 1;
|
|
|
var sliceLen = lineLen / sliceCount;
|
|
|
var j = arrowCount;
|
|
|
- var _loop = function _loop() {
|
|
|
+ var _loop2 = function _loop2() {
|
|
|
var pos = info.line.start.clone().add(info.dir.clone().multiplyScalar(j * sliceLen));
|
|
|
var disSq = pos.distanceToSquared(viewer.mainViewport.view.position);
|
|
|
j--;
|
|
@@ -50467,7 +50475,7 @@
|
|
|
waitAdd.length > arrowCountMax && waitAdd.pop();
|
|
|
};
|
|
|
while (j > 0) {
|
|
|
- if (_loop()) continue;
|
|
|
+ if (_loop2()) continue;
|
|
|
}
|
|
|
});
|
|
|
var scaleMap = new Map();
|