|
@@ -569,53 +569,59 @@ function isInFace(current, test, scaleTime, scaleTimeH) {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+// 最简单数组去重法
|
|
|
+/*
|
|
|
+* 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中
|
|
|
+* IE8以下不支持数组的indexOf方法
|
|
|
+* */
|
|
|
+function uniq(array){
|
|
|
+ var temp = []; //一个新的临时数组
|
|
|
+ for(var i = 0; i < array.length; i++){
|
|
|
+ if(temp.indexOf(array[i]) == -1){
|
|
|
+ temp.push(array[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return temp;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+function get3dLinePoint(arr,fullPoint) {
|
|
|
+ let temp = []
|
|
|
+ for (let i = 0; i < arr.length; i++) {
|
|
|
+ temp.push(arr[i]['3d_point1'])
|
|
|
+ temp.push(arr[i]['3d_point2'])
|
|
|
+ }
|
|
|
+ return uniq(temp)
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* 更新墙体线段的位置
|
|
|
* @param {缩放的大小} distance
|
|
|
* @param {墙体线段} lineArr
|
|
|
*/
|
|
|
-function updateLineArr(distance, lineArr, _3dPoint, tag, verticalArr,selectArr) {
|
|
|
+function updateLineArr(distance, lineArr, _3dLineArr, _3dPoint,selectArr,verticalVec) {
|
|
|
// deltaX:值为负的(-1),则表示滚轮向左滚动。值为正的(1),则表示滚轮向右滚动。
|
|
|
// deltaY:值为负的(-1),则表示滚轮向下滚动。值为正的(1),则表示滚轮向上滚动。
|
|
|
// deltaFactor:增量因子。通过 deltaFactor * deltaX 或者 deltaFactor * deltaY 可以得到浏览器实际的滚动距离。
|
|
|
// distance = -10
|
|
|
-
|
|
|
+ let selectLine = []
|
|
|
+
|
|
|
for (let i = 0; i < selectArr.length; i++) {
|
|
|
- console.log('====================================');
|
|
|
- console.log(_3dPoint[selectArr[i]]);
|
|
|
- console.log('====================================');
|
|
|
-
|
|
|
- }
|
|
|
- console.log('====================================');
|
|
|
- console.log(selectArr);
|
|
|
- console.log('====================================');
|
|
|
- var xl = [1*distance,0*distance,0*distance]
|
|
|
- for (let i = 0; i < verticalArr.length; i++) {
|
|
|
-
|
|
|
- // _3dPoint[i] = [_3dPoint[i][0]+xl[0],_3dPoint[i][1]+xl[1],_3dPoint[i][2]+xl[2]]
|
|
|
- // _3dPoint[i] = [_3dPoint[i][0]+xl[0],_3dPoint[i][1]+xl[1],_3dPoint[i][2]+xl[2]]
|
|
|
- // _3dPoint[verticalArr[i]] = [_3dPoint[verticalArr[i]]['3d_point1']]
|
|
|
- console.log('====================================');
|
|
|
- console.log(_3dPoint[verticalArr[i]]);
|
|
|
- console.log('====================================');
|
|
|
- }
|
|
|
-
|
|
|
- // if (tag) {
|
|
|
- // _3dPoint[2][0] += distance
|
|
|
- // _3dPoint[3][0] += distance
|
|
|
- // _3dPoint[((_3dPoint.length) / 2 + 2)][0] += distance
|
|
|
- // _3dPoint[((_3dPoint.length) / 2 + 3)][0] += distance
|
|
|
- // } else {
|
|
|
- // _3dPoint[1][1] += distance
|
|
|
- // _3dPoint[2][1] += distance
|
|
|
- // _3dPoint[((_3dPoint.length) / 2 + 1)][1] += distance
|
|
|
- // _3dPoint[((_3dPoint.length) / 2 + 2)][1] += distance
|
|
|
- // }
|
|
|
- rx1 = _3dLine(r2x, r3x, ret);
|
|
|
-
|
|
|
- console.log('====================================');
|
|
|
- console.log(rx1);
|
|
|
- console.log('====================================');
|
|
|
+ selectLine.push(_3dLineArr[selectArr[i]])
|
|
|
+ }
|
|
|
+
|
|
|
+ let _3dLinePoint = get3dLinePoint(selectLine)
|
|
|
+ for (let i = 0; i < _3dLinePoint.length; i++) {
|
|
|
+ for (let j = 0; j < _3dPoint.length; j++) {
|
|
|
+ if (_3dLinePoint[i].toString() === _3dPoint[j].toString()) {
|
|
|
+ _3dPoint[j][0] += distance * Math.abs(verticalVec[0])
|
|
|
+ _3dPoint[j][1] += distance * Math.abs(verticalVec[1])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ rx1 = _3dLine(_3dPoint, r3x, ret);
|
|
|
+
|
|
|
lineArr = _3dTo2d(
|
|
|
make_matrix_from_quat([
|
|
|
0.008515,
|
|
@@ -744,7 +750,6 @@ function findverticalLine(faceLine,n_panorama_line_3d) {
|
|
|
// console.log(tmp);
|
|
|
// console.log(lineAry);
|
|
|
return verticalLineData;
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/**
|