更新爆炸图例子
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
// import { Color, Face3, MeshBasicMaterial, Object3D, Vector2, Vector3 } from "three";
|
||||
// import "./style.css";
|
||||
import { data } from "../data";
|
||||
import { Viewer } from "../Viewer";
|
||||
import { Vector3 } from "three";
|
||||
import { CameraControlState } from "../CameraControls";
|
||||
import { data } from "../data";
|
||||
import { GetBox } from "../GeUtils";
|
||||
import { LoadBoard } from "../Utils";
|
||||
import { Viewer } from "../Viewer";
|
||||
|
||||
let btn = document.createElement("button");
|
||||
btn.innerHTML = "载入"
|
||||
@@ -13,6 +15,10 @@ let btn2 = document.createElement("button");
|
||||
btn2.innerHTML = "清理"
|
||||
document.body.appendChild(btn2);
|
||||
|
||||
let btn3 = document.createElement("button");
|
||||
btn3.innerHTML = "爆炸图"
|
||||
document.body.appendChild(btn3);
|
||||
|
||||
let el = document.createElement("canvas");
|
||||
|
||||
el.style.width = "80%";
|
||||
@@ -39,3 +45,51 @@ btn2.onclick = () =>
|
||||
{
|
||||
// LoadBoard(view, []);
|
||||
}
|
||||
|
||||
btn3.onclick = () =>
|
||||
{
|
||||
let box = GetBox(view.m_Scene);
|
||||
|
||||
let cen = box.getCenter(new Vector3());
|
||||
let m = [];
|
||||
for (let obj of view.m_Scene.children)
|
||||
{
|
||||
if (obj.userData && obj.userData instanceof Vector3)
|
||||
{
|
||||
let objCen = GetBox(obj).getCenter(new Vector3());
|
||||
|
||||
let v = objCen.clone().sub(cen);
|
||||
|
||||
let zv = obj.userData as Vector3;
|
||||
if (zv instanceof Vector3)
|
||||
{
|
||||
let d = zv.dot(v);
|
||||
// m.set(obj, zv.clone().multiplyScalar(d));
|
||||
m.push([obj, zv.clone().multiplyScalar(d)]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let count = 0;
|
||||
|
||||
let t = setInterval(() =>
|
||||
{
|
||||
for (let [o, v] of m)
|
||||
{
|
||||
o.position.add(
|
||||
v.clone().multiplyScalar(1.5 / 120)
|
||||
);
|
||||
o.updateMatrix();
|
||||
}
|
||||
|
||||
view.ZoomAll();
|
||||
|
||||
view.m_bNeedUpdate = true;
|
||||
|
||||
count++;
|
||||
|
||||
if (count === 60)
|
||||
clearInterval(t);
|
||||
}, 16)
|
||||
}
|
||||
|
Reference in New Issue
Block a user