Fangyizhuo 6 years ago
parent
commit
8617c910bd
2 changed files with 8569 additions and 8515 deletions
  1. 216 216
      js/drawGeometry.js
  2. 8353 8299
      model_data/data.js

+ 216 - 216
js/drawGeometry.js

@@ -1,232 +1,232 @@
-let scene, camera, renderer, controls;
-let stats = initStats();
-let key = 'points', id = 'id';
-let verticalLineAry = [];
-let geoKeys = ['3d_point1', '3d_point2'];
-// n_panorama_line_3d = rx1
-
-/* 初始加载 */
-(function () {
-    console.log("three start...");
-    init();
-    animate();
-    console.log("three end...");
-})();
-
-/**
- * 初始化函数
- */
-function init() {
-    initRenderer();
-    initScene();
-    initCamera();
-    initLight();
-    initControls();
-    drawGeometry(rx1);
-    findIntersectLine();
-}
-
-// function drawGeometry() {
+// let scene, camera, renderer, controls;
+// let stats = initStats();
+// let key = 'points', id = 'id';
+// let verticalLineAry = [];
+// let geoKeys = ['3d_point1', '3d_point2'];
+// // n_panorama_line_3d = rx1
+
+// /* 初始加载 */
+// (function () {
+//     console.log("three start...");
+//     init();
+//     animate();
+//     console.log("three end...");
+// })();
+
+// /**
+//  * 初始化函数
+//  */
+// function init() {
+//     initRenderer();
+//     initScene();
+//     initCamera();
+//     initLight();
+//     initControls();
+//     drawGeometry(rx1);
 //     findIntersectLine();
-//     if (!panorama_line_3d) {
-//         let geometry = new THREE.geometry
-//         console.log('panorama_line_3d未定义, 请检查');
-//         return;
-//     }
+// }
+
+// // function drawGeometry() {
+// //     findIntersectLine();
+// //     if (!panorama_line_3d) {
+// //         let geometry = new THREE.geometry
+// //         console.log('panorama_line_3d未定义, 请检查');
+// //         return;
+// //     }
+
+// //     let material = new THREE.LineBasicMaterial({
+// //         color: 'red'
+// //     })
+// //     let geometry = new THREE.Geometry();
+
+// //     // 第一层的面循环
+// //     for (let i = 0; i < panorama_line_3d.length; i++) {
+// //         let face = panorama_line_3d[i]['faceLine'];
+// //         let index = panorama_line_3d[i]['index'];
+// //         let curVerticalLine = []
+// //         // if (face.length < 4) {
+// //         //     console.log('构成面的线段数小于4, 请检查');
+// //         //     return;
+// //         // }
+// //         let sta = false;   // 用于控制寻找相同点还是不同点
+// //         // 第二层面中的线循环
+// //         for (let j = 0; j < face.length; j++) {
+// //             if (!face[j][key] || face[j][key].length < 2) {
+// //                 console.log('线段' + face[j][id] + '的点数据有误, 请检查');
+// //                 return;
+// //             }
+// //             // 绘制第一条线段
+// //             if (j === 0) {
+// //                 // 第一条线段, 先寻找不同点
+// //                 let firstPoint = findPoint(face[j][key], face[j + 1][key], false);
+// //                 findverticalLine(firstPoint).forEach((item) => {
+// //                     index.indexOf(item) < 0 && curVerticalLine.indexOf(item) < 0 && curVerticalLine.push(item);
+// //                 })
+// //                 firstPoint && geometry.vertices.push(new THREE.Vector3(firstPoint[0], firstPoint[1], firstPoint[2]));
+// //                 // 再寻找相同点
+// //                 let secondPoint = findPoint(face[j][key], face[j + 1][key], true);
+// //                 findverticalLine(secondPoint).forEach((item) => {
+// //                     index.indexOf(item) < 0 && curVerticalLine.indexOf(item) < 0 && curVerticalLine.push(item);
+// //                 })
+// //                 secondPoint && geometry.vertices.push(new THREE.Vector3(secondPoint[0], secondPoint[1], secondPoint[2]));
+// //             } else if (j === face.length - 1) {  // 最后一条线段, 寻找与第一条线段相交的点
+// //                 let lastPoint = findPoint(face[j][key], face[0][key], true);
+// //                 findverticalLine(lastPoint).forEach((item) => {
+// //                     index.indexOf(item) < 0 && curVerticalLine.indexOf(item) < 0 && curVerticalLine.push(item);
+// //                 })
+// //                 lastPoint && geometry.vertices.push(new THREE.Vector3(lastPoint[0], lastPoint[1], lastPoint[2]));
+// //             } else {  // 寻找与上一条线段相交的点
+// //                 let point = findPoint(face[j][key], face[j + 1][key], true);
+// //                 findverticalLine(point).forEach((item) => {
+// //                     index.indexOf(item) < 0 && curVerticalLine.indexOf(item) < 0 && curVerticalLine.push(item);
+// //                 })
+// //                 point && geometry.vertices.push(new THREE.Vector3(point[0], point[1], point[2]));
+// //             }
+// //         }
+// //         panorama_line_3d[i].verticalLine.push(curVerticalLine);
+// //     }
+// //     let line = new THREE.Line(geometry, material);
+// //     scene.add(line);
+
+// // }
+
+// function drawGeometry(n_panorama_line_3d) {
+    
+//     // if (!panorama_line_3d) {
+//     //     console.log('panorama_line_3d未定义, 请检查');
+//     //     return;
+//     // }
+//     if (scene.getObjectByName("3d_line")) {
+//         scene.remove(scene.getObjectByName("3d_line"));
+//         }
 
 //     let material = new THREE.LineBasicMaterial({
 //         color: 'red'
 //     })
-//     let geometry = new THREE.Geometry();
 
+
+//     let line_model = new THREE.Object3D();
 //     // 第一层的面循环
-//     for (let i = 0; i < panorama_line_3d.length; i++) {
-//         let face = panorama_line_3d[i]['faceLine'];
-//         let index = panorama_line_3d[i]['index'];
-//         let curVerticalLine = []
-//         // if (face.length < 4) {
-//         //     console.log('构成面的线段数小于4, 请检查');
-//         //     return;
-//         // }
-//         let sta = false;   // 用于控制寻找相同点还是不同点
-//         // 第二层面中的线循环
-//         for (let j = 0; j < face.length; j++) {
-//             if (!face[j][key] || face[j][key].length < 2) {
-//                 console.log('线段' + face[j][id] + '的点数据有误, 请检查');
-//                 return;
-//             }
-//             // 绘制第一条线段
-//             if (j === 0) {
-//                 // 第一条线段, 先寻找不同点
-//                 let firstPoint = findPoint(face[j][key], face[j + 1][key], false);
-//                 findverticalLine(firstPoint).forEach((item) => {
-//                     index.indexOf(item) < 0 && curVerticalLine.indexOf(item) < 0 && curVerticalLine.push(item);
-//                 })
-//                 firstPoint && geometry.vertices.push(new THREE.Vector3(firstPoint[0], firstPoint[1], firstPoint[2]));
-//                 // 再寻找相同点
-//                 let secondPoint = findPoint(face[j][key], face[j + 1][key], true);
-//                 findverticalLine(secondPoint).forEach((item) => {
-//                     index.indexOf(item) < 0 && curVerticalLine.indexOf(item) < 0 && curVerticalLine.push(item);
-//                 })
-//                 secondPoint && geometry.vertices.push(new THREE.Vector3(secondPoint[0], secondPoint[1], secondPoint[2]));
-//             } else if (j === face.length - 1) {  // 最后一条线段, 寻找与第一条线段相交的点
-//                 let lastPoint = findPoint(face[j][key], face[0][key], true);
-//                 findverticalLine(lastPoint).forEach((item) => {
-//                     index.indexOf(item) < 0 && curVerticalLine.indexOf(item) < 0 && curVerticalLine.push(item);
-//                 })
-//                 lastPoint && geometry.vertices.push(new THREE.Vector3(lastPoint[0], lastPoint[1], lastPoint[2]));
-//             } else {  // 寻找与上一条线段相交的点
-//                 let point = findPoint(face[j][key], face[j + 1][key], true);
-//                 findverticalLine(point).forEach((item) => {
-//                     index.indexOf(item) < 0 && curVerticalLine.indexOf(item) < 0 && curVerticalLine.push(item);
-//                 })
-//                 point && geometry.vertices.push(new THREE.Vector3(point[0], point[1], point[2]));
-//             }
+//     for (let i = 0; i < n_panorama_line_3d.length; i++) {
+//         let threeDLine = n_panorama_line_3d[i];
+//         let geometry = new THREE.Geometry();
+//         for (let j = 0; j < geoKeys.length; j++) {
+//             geometry.vertices.push(new THREE.Vector3(threeDLine[geoKeys[j]][0], threeDLine[geoKeys[j]][1], threeDLine[geoKeys[j]][2]))
 //         }
-//         panorama_line_3d[i].verticalLine.push(curVerticalLine);
+//         let line = new THREE.Line(geometry, material);
+//         line_model.add(line);
 //     }
-//     let line = new THREE.Line(geometry, material);
-//     scene.add(line);
+//     line_model.name = '3d_line';
+//     scene.add(line_model);
 
 // }
 
-function drawGeometry(n_panorama_line_3d) {
-    
-    // if (!panorama_line_3d) {
-    //     console.log('panorama_line_3d未定义, 请检查');
-    //     return;
-    // }
-    if (scene.getObjectByName("3d_line")) {
-        scene.remove(scene.getObjectByName("3d_line"));
-        }
-
-    let material = new THREE.LineBasicMaterial({
-        color: 'red'
-    })
-
-
-    let line_model = new THREE.Object3D();
-    // 第一层的面循环
-    for (let i = 0; i < n_panorama_line_3d.length; i++) {
-        let threeDLine = n_panorama_line_3d[i];
-        let geometry = new THREE.Geometry();
-        for (let j = 0; j < geoKeys.length; j++) {
-            geometry.vertices.push(new THREE.Vector3(threeDLine[geoKeys[j]][0], threeDLine[geoKeys[j]][1], threeDLine[geoKeys[j]][2]))
-        }
-        let line = new THREE.Line(geometry, material);
-        line_model.add(line);
-    }
-    line_model.name = '3d_line';
-    scene.add(line_model);
-
-}
-
-/**
- * 
- * @param {*} point 
- */
-// function findverticalLine(point) {
-//     let lineAry = [];
-//     for (let i = 0; i < panorama_line_3d.length; i++) {
-//         for (let j = 0; j < panorama_line_3d[i].length; j++) {
-//             for (let k = 0; k < panorama_line_3d[i][j]['points'].length; k++) {
-//                 let o_point = panorama_line_3d[i][j]['points'][k];
-//                 if (arrayEquals(o_point, point)) {
-//                     lineAry.push(panorama_line_3d[i][j]['id']);
-//                 }
-//             }
-//         }
-//     }
-//     // console.log(lineAry);
-//     return lineAry;
+// /**
+//  * 
+//  * @param {*} point 
+//  */
+// // function findverticalLine(point) {
+// //     let lineAry = [];
+// //     for (let i = 0; i < panorama_line_3d.length; i++) {
+// //         for (let j = 0; j < panorama_line_3d[i].length; j++) {
+// //             for (let k = 0; k < panorama_line_3d[i][j]['points'].length; k++) {
+// //                 let o_point = panorama_line_3d[i][j]['points'][k];
+// //                 if (arrayEquals(o_point, point)) {
+// //                     lineAry.push(panorama_line_3d[i][j]['id']);
+// //                 }
+// //             }
+// //         }
+// //     }
+// //     // console.log(lineAry);
+// //     return lineAry;
+// // }
+
+
+
+// /**
+//  * 初始化渲染器
+//  */
+// function initRenderer() {
+//     renderer = new THREE.WebGLRenderer({
+//         antialias: true
+//     });
+//     renderer.setSize(window.innerWidth / 2, window.innerHeight);
+//     renderer.setClearColor("#ccc");
+//     renderer.shadowMap.enabled = true;
+//     let rightCav = document.getElementById('geo-cav');
+//     rightCav.appendChild(renderer.domElement);
+//     // canvas = renderer.domElement;
+// }
+
+// /**
+//  * 初始化场景
+//  */
+// function initScene() {
+//     scene = new THREE.Scene();
+//     // initContents();
+// }
+
+// /**
+//  * 初始化相机
+//  */
+// function initCamera() {
+//     camera = new THREE.PerspectiveCamera(
+//         45,
+//         0.5 * window.innerWidth / window.innerHeight,
+//         1,
+//         100
+//     );
+//     // camera = new THREE.OrthographicCamera(3 / - 2, 3 / 2, 3 / 2, 3 / - 2, 1, 1000);
+//     camera.position.set(15, -15, 8);
+//     camera.up.x = 0;
+//     camera.up.y = 0;
+//     camera.up.z = 1;
+//     camera.lookAt(new THREE.Vector3(0, 0, 0));
+// }
+
+// /**
+//  * 初始化灯光
+//  */
+// function initLight() {
+//     let ambientLight = new THREE.AmbientLight(0x333333);
+//     let directionalLight = new THREE.DirectionalLight("#FFFAFA", 1);
+//     directionalLight.position.set(100, -200, 200);
+//     directionalLight.castShadow = true;
+//     scene.add(ambientLight);
+//     scene.add(directionalLight);
+// }
+
+// /**
+//  * 初始化控制器
+//  */
+// function initControls() {
+//     // TODO: 3D状态下启动控制器
+//     controls = new THREE.OrbitControls(camera, renderer.domElement);
 // }
 
 
+// /**
+//  * 初始化性能插件
+//  */
+// function initStats() {
+//     let stats = new Stats();
+//     stats.setMode(0);
+//     stats.domElement.style.position = "absolute";
+//     stats.domElement.style.left = "0";
+//     stats.domElement.style.top = "0";
+//     document.body.appendChild(stats.domElement);
+//     return stats;
+// }
+
+// /* 循环调用 */
+// function animate() {
+//     requestAnimationFrame(animate);
+//     renderer.render(scene, camera);
+//     update();
+// }
 
-/**
- * 初始化渲染器
- */
-function initRenderer() {
-    renderer = new THREE.WebGLRenderer({
-        antialias: true
-    });
-    renderer.setSize(window.innerWidth / 2, window.innerHeight);
-    renderer.setClearColor("#ccc");
-    renderer.shadowMap.enabled = true;
-    let rightCav = document.getElementById('geo-cav');
-    rightCav.appendChild(renderer.domElement);
-    // canvas = renderer.domElement;
-}
-
-/**
- * 初始化场景
- */
-function initScene() {
-    scene = new THREE.Scene();
-    // initContents();
-}
-
-/**
- * 初始化相机
- */
-function initCamera() {
-    camera = new THREE.PerspectiveCamera(
-        45,
-        0.5 * window.innerWidth / window.innerHeight,
-        1,
-        100
-    );
-    // camera = new THREE.OrthographicCamera(3 / - 2, 3 / 2, 3 / 2, 3 / - 2, 1, 1000);
-    camera.position.set(15, -15, 8);
-    camera.up.x = 0;
-    camera.up.y = 0;
-    camera.up.z = 1;
-    camera.lookAt(new THREE.Vector3(0, 0, 0));
-}
-
-/**
- * 初始化灯光
- */
-function initLight() {
-    let ambientLight = new THREE.AmbientLight(0x333333);
-    let directionalLight = new THREE.DirectionalLight("#FFFAFA", 1);
-    directionalLight.position.set(100, -200, 200);
-    directionalLight.castShadow = true;
-    scene.add(ambientLight);
-    scene.add(directionalLight);
-}
-
-/**
- * 初始化控制器
- */
-function initControls() {
-    // TODO: 3D状态下启动控制器
-    controls = new THREE.OrbitControls(camera, renderer.domElement);
-}
-
-
-/**
- * 初始化性能插件
- */
-function initStats() {
-    let stats = new Stats();
-    stats.setMode(0);
-    stats.domElement.style.position = "absolute";
-    stats.domElement.style.left = "0";
-    stats.domElement.style.top = "0";
-    document.body.appendChild(stats.domElement);
-    return stats;
-}
-
-/* 循环调用 */
-function animate() {
-    requestAnimationFrame(animate);
-    renderer.render(scene, camera);
-    update();
-}
-
-/* 更新数据 */
-function update() {
-    stats.update();
-    controls.update();
-}
+// /* 更新数据 */
+// function update() {
+//     stats.update();
+//     controls.update();
+// }

File diff suppressed because it is too large
+ 8353 - 8299
model_data/data.js