更新编译输出为es5支持老旧的浏览器

This commit is contained in:
ChenX 2018-06-06 17:23:22 +08:00
parent 256a7ea8a6
commit 29a6dd0fff
38 changed files with 616 additions and 533 deletions

138
dist/CameraControls.js vendored
View File

@ -1,8 +1,8 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const THREE = require("three");
const KeyEnum_1 = require("./KeyEnum");
const three_1 = require("three");
var THREE = require("three");
var KeyEnum_1 = require("./KeyEnum");
var three_1 = require("three");
//控制类型
var CameraControlsEnabled;
(function (CameraControlsEnabled) {
@ -18,8 +18,9 @@ var CameraControlState;
CameraControlState[CameraControlState["Rotate"] = 2] = "Rotate";
CameraControlState[CameraControlState["Scale"] = 3] = "Scale";
})(CameraControlState = exports.CameraControlState || (exports.CameraControlState = {}));
class CameraControls {
constructor(viewer) {
var CameraControls = /** @class */ (function () {
function CameraControls(viewer) {
var _this = this;
this.m_TouthTypeList = [CameraControlState.Rotate, CameraControlState.Scale, CameraControlState.Pan];
//起始点击
this.m_StartClickPoint = new THREE.Vector3();
@ -37,36 +38,36 @@ class CameraControls {
*
* @memberof CameraControls
*/
this.onBlur = () => {
this.m_KeyDown.clear();
this.m_MouseDown.clear();
this.onBlur = function () {
_this.m_KeyDown.clear();
_this.m_MouseDown.clear();
};
//触屏开始事件
this.onTouchStart = (event) => {
this.m_Viewer.UpdateLockTarget();
this.m_StartClickPoint.set(event.touches[0].pageX, event.touches[0].pageY, 0);
this.onTouchStart = function (event) {
_this.m_Viewer.UpdateLockTarget();
_this.m_StartClickPoint.set(event.touches[0].pageX, event.touches[0].pageY, 0);
if (event.touches.length < 4) {
if (event.touches.length == 2) {
var dx = event.touches[0].pageX - event.touches[1].pageX;
var dy = event.touches[0].pageY - event.touches[1].pageY;
var distance = Math.sqrt(dx * dx + dy * dy);
this.m_DollyStart.set(0, distance);
_this.m_DollyStart.set(0, distance);
}
this.m_State = this.m_TouthTypeList[event.touches.length - 1];
_this.m_State = _this.m_TouthTypeList[event.touches.length - 1];
}
};
this.onTouchEnd = (event) => {
this.m_State = CameraControlState.Null;
this.onTouchEnd = function (event) {
_this.m_State = CameraControlState.Null;
};
this.onTouchMove = (event) => {
this.onTouchMove = function (event) {
event.preventDefault();
event.stopPropagation();
this.m_EndClickPoint.set(event.touches[0].pageX, event.touches[0].pageY, 0);
let vec = this.m_EndClickPoint.clone().sub(this.m_StartClickPoint);
switch (this.m_State) {
_this.m_EndClickPoint.set(event.touches[0].pageX, event.touches[0].pageY, 0);
var vec = _this.m_EndClickPoint.clone().sub(_this.m_StartClickPoint);
switch (_this.m_State) {
case CameraControlState.Pan:
{
this.m_Viewer.Pan(vec);
_this.m_Viewer.Pan(vec);
break;
}
case CameraControlState.Scale:
@ -74,55 +75,55 @@ class CameraControls {
var dx = event.touches[0].pageX - event.touches[1].pageX;
var dy = event.touches[0].pageY - event.touches[1].pageY;
var distance = Math.sqrt(dx * dx + dy * dy);
this.m_DollyEnd.set(0, distance);
if (distance > this.m_DollyStart.y) {
this.m_Viewer.Zoom(0.95);
_this.m_DollyEnd.set(0, distance);
if (distance > _this.m_DollyStart.y) {
_this.m_Viewer.Zoom(0.95);
}
else {
this.m_Viewer.Zoom(1.05);
_this.m_Viewer.Zoom(1.05);
}
this.m_DollyStart.copy(this.m_DollyEnd);
_this.m_DollyStart.copy(_this.m_DollyEnd);
break;
}
case CameraControlState.Rotate:
{
this.m_Viewer.Rotate(vec.multiplyScalar(2));
_this.m_Viewer.Rotate(vec.multiplyScalar(2));
break;
}
}
this.m_StartClickPoint.copy(this.m_EndClickPoint);
this.m_Viewer.m_bNeedUpdate = true;
_this.m_StartClickPoint.copy(_this.m_EndClickPoint);
_this.m_Viewer.m_bNeedUpdate = true;
};
//最后一次按中键的时间
this.lastMiddleClickTime = 0;
//鼠标
this.onMouseDown = (event) => {
this.onMouseDown = function (event) {
event.preventDefault();
let key = event.button;
this.m_MouseDown.set(key, true);
this.m_StartClickPoint.set(event.offsetX, event.offsetY, 0);
var key = event.button;
_this.m_MouseDown.set(key, true);
_this.m_StartClickPoint.set(event.offsetX, event.offsetY, 0);
switch (key) {
case KeyEnum_1.MouseKey.Left:
{
if (this.m_LeftUseRotate) {
this.beginRotate();
if (_this.m_LeftUseRotate) {
_this.beginRotate();
}
break;
}
case KeyEnum_1.MouseKey.Middle:
{
let curTime = Date.now();
let t = curTime - this.lastMiddleClickTime;
this.lastMiddleClickTime = curTime;
var curTime = Date.now();
var t = curTime - _this.lastMiddleClickTime;
_this.lastMiddleClickTime = curTime;
if (t < 350) {
this.m_Viewer.ZoomAll();
_this.m_Viewer.ZoomAll();
return;
}
if (this.m_KeyDown.get(KeyEnum_1.KeyBoard.Control)) {
this.beginRotate();
if (_this.m_KeyDown.get(KeyEnum_1.KeyBoard.Control)) {
_this.beginRotate();
}
else {
this.m_State = CameraControlState.Pan;
_this.m_State = CameraControlState.Pan;
}
break;
}
@ -132,25 +133,25 @@ class CameraControls {
}
}
};
this.onMouseUp = (event) => {
this.onMouseUp = function (event) {
event.preventDefault();
this.m_State = CameraControlState.Null;
this.m_MouseDown.set(event.button, false);
_this.m_State = CameraControlState.Null;
_this.m_MouseDown.set(event.button, false);
};
this.onMouseMove = (event) => {
this.onMouseMove = function (event) {
event.preventDefault();
this.m_EndClickPoint.set(event.offsetX, event.offsetY, 0);
let changeVec = this.m_EndClickPoint.clone().sub(this.m_StartClickPoint);
this.m_StartClickPoint.copy(this.m_EndClickPoint);
if ((this.m_LeftUseRotate ||
(this.m_KeyDown.get(KeyEnum_1.KeyBoard.Control)))
&& this.m_State == CameraControlState.Rotate) {
this.m_Viewer.Rotate(changeVec);
_this.m_EndClickPoint.set(event.offsetX, event.offsetY, 0);
var changeVec = _this.m_EndClickPoint.clone().sub(_this.m_StartClickPoint);
_this.m_StartClickPoint.copy(_this.m_EndClickPoint);
if ((_this.m_LeftUseRotate ||
(_this.m_KeyDown.get(KeyEnum_1.KeyBoard.Control)))
&& _this.m_State == CameraControlState.Rotate) {
_this.m_Viewer.Rotate(changeVec);
}
switch (this.m_State) {
switch (_this.m_State) {
case CameraControlState.Pan:
{
this.m_Viewer.Pan(changeVec);
_this.m_Viewer.Pan(changeVec);
break;
}
case CameraControlState.Rotate:
@ -168,30 +169,30 @@ class CameraControls {
*
* @memberof CameraControls
*/
this.onMouseWheel = (event) => {
this.onMouseWheel = function (event) {
event.preventDefault();
event.stopPropagation();
let pt = new THREE.Vector3(event.offsetX, event.offsetY, 0);
this.m_Viewer.ScreenToWorld(pt, new three_1.Vector3().setFromMatrixColumn(this.m_Viewer.m_Camera.Camera.matrixWorld, 2));
var pt = new THREE.Vector3(event.offsetX, event.offsetY, 0);
_this.m_Viewer.ScreenToWorld(pt, new three_1.Vector3().setFromMatrixColumn(_this.m_Viewer.m_Camera.Camera.matrixWorld, 2));
if (event.deltaY < 0) {
this.m_Viewer.Zoom(0.6, pt);
_this.m_Viewer.Zoom(0.6, pt);
}
else if (event.deltaY > 0) {
this.m_Viewer.Zoom(1.4, pt);
_this.m_Viewer.Zoom(1.4, pt);
}
};
//按键
this.onKeyDown = (event) => {
this.m_KeyDown.set(event.keyCode, true);
this.onKeyDown = function (event) {
_this.m_KeyDown.set(event.keyCode, true);
};
this.onKeyUp = (event) => {
this.m_KeyDown.set(event.keyCode, false);
this.onKeyUp = function (event) {
_this.m_KeyDown.set(event.keyCode, false);
};
this.m_Viewer = viewer;
this.m_domElement = viewer.m_Render.domElement.parentElement;
this.RegisterEvent();
}
RegisterEvent() {
CameraControls.prototype.RegisterEvent = function () {
if (this.m_domElement) {
this.m_domElement.addEventListener("mousedown", this.onMouseDown, false);
this.m_domElement.addEventListener("mousemove", this.onMouseMove, false);
@ -204,11 +205,12 @@ class CameraControls {
this.m_domElement.addEventListener('touchmove', this.onTouchMove, false);
window.addEventListener("blur", this.onBlur, false);
}
}
beginRotate() {
};
CameraControls.prototype.beginRotate = function () {
this.m_State = CameraControlState.Rotate;
this.m_Viewer.UpdateLockTarget();
}
}
};
return CameraControls;
}());
exports.CameraControls = CameraControls;
//# sourceMappingURL=CameraControls.js.map

File diff suppressed because one or more lines are too long

99
dist/CameraUpdate.js vendored
View File

@ -1,8 +1,8 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const THREE = require("three");
const three_1 = require("three");
const Orbit_1 = require("./Orbit");
var THREE = require("three");
var three_1 = require("three");
var Orbit_1 = require("./Orbit");
/**
*
* 相机的控制.
@ -13,8 +13,8 @@ const Orbit_1 = require("./Orbit");
* @export
* @class ViewCameraManage
*/
class CameraUpdate {
constructor() {
var CameraUpdate = /** @class */ (function () {
function CameraUpdate() {
this.m_CameraArray = new Map();
//视口显示的高度
this.m_ViewHeight = 10;
@ -33,46 +33,58 @@ class CameraUpdate {
this.UpdateUp();
this.Update();
}
get Aspect() {
return this.m_Width / this.m_Height;
}
get Camera() {
return this.m_CurCamera;
}
get ViewHeight() {
return this.m_ViewHeight;
}
set ViewHeight(height) {
this.m_ViewHeight = THREE.Math.clamp(height, this.m_MinViewHeight, this.m_MaxViewHeight);
}
SetSize(width, height) {
Object.defineProperty(CameraUpdate.prototype, "Aspect", {
get: function () {
return this.m_Width / this.m_Height;
},
enumerable: true,
configurable: true
});
Object.defineProperty(CameraUpdate.prototype, "Camera", {
get: function () {
return this.m_CurCamera;
},
enumerable: true,
configurable: true
});
Object.defineProperty(CameraUpdate.prototype, "ViewHeight", {
get: function () {
return this.m_ViewHeight;
},
set: function (height) {
this.m_ViewHeight = THREE.Math.clamp(height, this.m_MinViewHeight, this.m_MaxViewHeight);
},
enumerable: true,
configurable: true
});
CameraUpdate.prototype.SetSize = function (width, height) {
this.m_Width = width;
this.m_Height = height;
}
};
/**
* 平移相机.
*
* @param {THREE.Vector3} mouseMove
* @memberof CameraControl
*/
Pan(mouseMove) {
CameraUpdate.prototype.Pan = function (mouseMove) {
mouseMove.y *= -1;
mouseMove.multiplyScalar(-this.m_ViewHeight / this.m_Height);
mouseMove.applyQuaternion(this.Camera.quaternion);
this.m_Target.add(mouseMove);
this.Update();
}
Rotate(mouseMove, target) {
};
CameraUpdate.prototype.Rotate = function (mouseMove, target) {
this.m_Orbit.RoX -= mouseMove.y * 0.003;
this.m_Orbit.RoZ -= mouseMove.x * 0.003;
//缓存观察点
let oldTargetFormCameraSpace = target.clone().applyMatrix4(this.Camera.matrixWorldInverse);
var oldTargetFormCameraSpace = target.clone().applyMatrix4(this.Camera.matrixWorldInverse);
this.m_Orbit.UpdateDirection(this.m_Direction);
this.UpdateUp();
this.Update();
//-----还原观察点
//得到新的观察点相对于相机的位置
let newTargetFormCameraSpace = target.clone().applyMatrix4(this.Camera.matrixWorldInverse);
var newTargetFormCameraSpace = target.clone().applyMatrix4(this.Camera.matrixWorldInverse);
//减去原先的位置. 得到观测点在相机内移动的向量
newTargetFormCameraSpace.sub(oldTargetFormCameraSpace);
//乘以相机的矩阵. 得到向量在世界坐标系的位置
@ -82,8 +94,8 @@ class CameraUpdate {
//加上移动的向量. 使得观察点时钟在相机的某个位置
this.m_Target.add(newTargetFormCameraSpace);
this.Update();
}
Zoom(scale, scaleCenter) {
};
CameraUpdate.prototype.Zoom = function (scale, scaleCenter) {
if (this.Camera instanceof THREE.OrthographicCamera) {
this.ViewHeight *= scale;
if (scaleCenter && this.m_ViewHeight < this.m_MaxViewHeight) {
@ -93,13 +105,13 @@ class CameraUpdate {
}
}
else if (this.Camera instanceof THREE.PerspectiveCamera) {
let add = scale > 1 ? 1 : -1;
var add = scale > 1 ? 1 : -1;
add *= this.Camera.position.distanceTo(this.m_Target) / 10;
this.m_Target.add(this.m_Direction.clone().multiplyScalar(-add));
}
this.Update();
}
ZoomExtensBox3(box3) {
};
CameraUpdate.prototype.ZoomExtensBox3 = function (box3) {
if (!box3)
return;
this.Camera.updateMatrixWorld(false);
@ -110,10 +122,10 @@ class CameraUpdate {
//世界坐标系
this.m_Target.applyMatrix4(this.Camera.matrix);
//size
let size = box3.getSize(new three_1.Vector3());
var size = box3.getSize(new three_1.Vector3());
//宽高比
let aspectRatio = size.x / size.y;
let viewAspectRatio = this.Aspect;
var aspectRatio = size.x / size.y;
var viewAspectRatio = this.Aspect;
//
if (aspectRatio > viewAspectRatio) {
this.m_ViewHeight = size.x / viewAspectRatio;
@ -122,23 +134,23 @@ class CameraUpdate {
this.m_ViewHeight = size.y;
}
this.Update();
}
LookAt(dir) {
};
CameraUpdate.prototype.LookAt = function (dir) {
this.m_Orbit.UpdateRoValue(dir);
this.m_Direction.copy(dir);
this.UpdateUp();
this.Update();
}
UpdateUp() {
};
CameraUpdate.prototype.UpdateUp = function () {
Orbit_1.Orbit.ComputUpDirection(this.m_Direction, this.Camera.up);
}
};
/**
* 根据视口大小,设置相机视口范围.
*
* @returns
* @memberof CameraControl
*/
Update() {
CameraUpdate.prototype.Update = function () {
this.Camera.position.copy(this.m_Target);
if (this.Camera instanceof THREE.OrthographicCamera) {
this.Camera.left = this.Aspect * this.m_ViewHeight / -2;
@ -149,7 +161,7 @@ class CameraUpdate {
}
else if (this.Camera instanceof THREE.PerspectiveCamera) {
this.Camera.aspect = this.Aspect;
let distens = (this.m_ViewHeight / 2) / (Math.tan(THREE.Math.degToRad(this.Camera.fov) / 2));
var distens = (this.m_ViewHeight / 2) / (Math.tan(THREE.Math.degToRad(this.Camera.fov) / 2));
this.Camera.position.sub(this.m_Direction.clone().multiplyScalar(distens));
}
else {
@ -158,8 +170,8 @@ class CameraUpdate {
this.Camera.lookAt(this.m_Target);
this.Camera.updateProjectionMatrix();
this.Camera.updateMatrixWorld(false);
}
SwitchCamera() {
};
CameraUpdate.prototype.SwitchCamera = function () {
if (this.Camera instanceof THREE.OrthographicCamera) {
this.m_CurCamera = this.m_CameraArray.get(THREE.PerspectiveCamera);
}
@ -168,7 +180,8 @@ class CameraUpdate {
}
this.UpdateUp();
this.Update();
}
}
};
return CameraUpdate;
}());
exports.CameraUpdate = CameraUpdate;
//# sourceMappingURL=CameraUpdate.js.map

File diff suppressed because one or more lines are too long

26
dist/ColorPalette.js vendored
View File

@ -1,7 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const THREE = require("three");
const ColorPalette = [
var THREE = require("three");
var ColorPalette = [
[255, 0, 0, 255],
//[255, 255, 255, 255],//----- 0 - ByBlock - White
[255, 0, 0, 255],
@ -13,21 +13,23 @@ const ColorPalette = [
[255, 0, 255, 255],
];
//颜色材质,对于二维图像来说可能有用,应该不对三维对象使用该材质
class ColorMaterial {
constructor() { }
static GetLineMaterial(index) {
var ColorMaterial = /** @class */ (function () {
function ColorMaterial() {
}
ColorMaterial.GetLineMaterial = function (index) {
if (this.m_LineMaterialMap.has(index))
return this.m_LineMaterialMap.get(index);
let mat = new THREE.LineBasicMaterial({ color: this.GetColor(index) });
var mat = new THREE.LineBasicMaterial({ color: this.GetColor(index) });
this.m_LineMaterialMap.set(index, mat);
return mat;
}
static GetColor(index) {
let rgb = ColorPalette[index];
};
ColorMaterial.GetColor = function (index) {
var rgb = ColorPalette[index];
if (rgb)
return new THREE.Color(rgb[0] / 255, rgb[1] / 255, rgb[2] / 255);
}
}
ColorMaterial.m_LineMaterialMap = new Map();
};
ColorMaterial.m_LineMaterialMap = new Map();
return ColorMaterial;
}());
exports.ColorMaterial = ColorMaterial;
//# sourceMappingURL=ColorPalette.js.map

View File

@ -1 +1 @@
{"version":3,"file":"ColorPalette.js","sourceRoot":"","sources":["../src/ColorPalette.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,MAAM,YAAY,GAAG;IACjB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,kDAAkD;IAClD,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,uCAAuC;IACvC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAChB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;CA8PrB,CAAC;AAGF,iCAAiC;AACjC;IAEI,gBAAwB,CAAC;IAEzB,MAAM,CAAC,eAAe,CAAC,KAAK;QAExB,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;YACjC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,KAAa;QAEzB,IAAI,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,GAAG;YACH,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACzE,CAAC;;AAfc,+BAAiB,GAAG,IAAI,GAAG,EAAmC,CAAC;AAHlF,sCAmBC"}
{"version":3,"file":"ColorPalette.js","sourceRoot":"","sources":["../src/ColorPalette.ts"],"names":[],"mappings":";;AAAA,6BAA+B;AAC/B,IAAM,YAAY,GAAG;IACjB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,kDAAkD;IAClD,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,uCAAuC;IACvC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAChB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;CA8PrB,CAAC;AAGF,iCAAiC;AACjC;IAEI;IAAwB,CAAC;IAElB,6BAAe,GAAtB,UAAuB,KAAK;QAExB,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;YACjC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC;IACf,CAAC;IAEM,sBAAQ,GAAf,UAAgB,KAAa;QAEzB,IAAI,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,GAAG;YACH,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACzE,CAAC;IAfc,+BAAiB,GAAG,IAAI,GAAG,EAAmC,CAAC;IAgBlF,oBAAC;CAAA,AAnBD,IAmBC;AAnBY,sCAAa"}

54
dist/Dimension.js vendored
View File

@ -1,9 +1,19 @@
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
const three_1 = require("three");
const ColorPalette_1 = require("./ColorPalette");
const Text_1 = require("./Text");
const GeUtils_1 = require("./GeUtils");
var three_1 = require("three");
var ColorPalette_1 = require("./ColorPalette");
var Text_1 = require("./Text");
var GeUtils_1 = require("./GeUtils");
/**
* 标注实体
*
@ -11,36 +21,42 @@ const GeUtils_1 = require("./GeUtils");
* @class Dimension
* @extends {Group}
*/
class Dimension extends three_1.Group {
constructor(length, textHeight = 25, mirror = false, mirrorFoot = false) {
super();
let footLength = 60;
var Dimension = /** @class */ (function (_super) {
__extends(Dimension, _super);
function Dimension(length, textHeight, mirror, mirrorFoot) {
if (textHeight === void 0) { textHeight = 25; }
if (mirror === void 0) { mirror = false; }
if (mirrorFoot === void 0) { mirrorFoot = false; }
var _this = _super.call(this) || this;
var footLength = 60;
if (mirrorFoot) {
footLength = -footLength;
}
//针脚几何体
let lineGeo = new three_1.Geometry();
var lineGeo = new three_1.Geometry();
lineGeo.vertices.push(new three_1.Vector3(), new three_1.Vector3(0, footLength, 0));
//托盘几何体
let lineGeo2 = new three_1.Geometry();
var lineGeo2 = new three_1.Geometry();
lineGeo2.vertices.push(new three_1.Vector3(0, footLength), new three_1.Vector3(length, footLength, 0));
let material = ColorPalette_1.ColorMaterial.GetLineMaterial(5);
let line1 = new three_1.Line(lineGeo, material);
let line2 = new three_1.Line(lineGeo, material);
var material = ColorPalette_1.ColorMaterial.GetLineMaterial(5);
var line1 = new three_1.Line(lineGeo, material);
var line2 = new three_1.Line(lineGeo, material);
line2.position.x = length;
let line3 = new three_1.Line(lineGeo2, material);
let text = new Text_1.DbText(parseFloat(length.toFixed(2)).toString(), textHeight);
var line3 = new three_1.Line(lineGeo2, material);
var text = new Text_1.DbText(parseFloat(length.toFixed(2)).toString(), textHeight);
if (mirror) {
let roMat = new three_1.Matrix4().makeRotationZ(Math.PI);
var roMat = new three_1.Matrix4().makeRotationZ(Math.PI);
text.applyMatrix(roMat);
text.applyMatrix(GeUtils_1.MoveMatrix(new three_1.Vector3(length * 0.5, footLength - textHeight * 0.1)));
}
else {
text.applyMatrix(GeUtils_1.MoveMatrix(new three_1.Vector3(length * 0.5, footLength * 1.1)));
}
this.add(text);
this.add(line1, line2, line3);
_this.add(text);
_this.add(line1, line2, line3);
return _this;
}
}
return Dimension;
}(three_1.Group));
exports.Dimension = Dimension;
//# sourceMappingURL=Dimension.js.map

View File

@ -1 +1 @@
{"version":3,"file":"Dimension.js","sourceRoot":"","sources":["../src/Dimension.ts"],"names":[],"mappings":";;AAAA,iCAAgE;AAChE,iDAA+C;AAC/C,iCAAgC;AAChC,uCAAuC;AAEvC;;;;;;GAMG;AACH,eAAuB,SAAQ,aAAK;IAGhC,YAAY,MAAc,EAAE,aAAqB,EAAE,EAAE,SAAkB,KAAK,EAAE,aAAsB,KAAK;QAErG,KAAK,EAAE,CAAC;QACR,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,UAAU,EACd;YACI,UAAU,GAAG,CAAC,UAAU,CAAC;SAC5B;QAED,OAAO;QACP,IAAI,OAAO,GAAG,IAAI,gBAAQ,EAAE,CAAC;QAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAO,EAAE,EAAE,IAAI,eAAO,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpE,OAAO;QACP,IAAI,QAAQ,GAAG,IAAI,gBAAQ,EAAE,CAAC;QAC9B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAO,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,IAAI,eAAO,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAEvF,IAAI,QAAQ,GAAG,4BAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAE/C,IAAI,KAAK,GAAG,IAAI,YAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxC,IAAI,KAAK,GAAG,IAAI,YAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC;QAE1B,IAAI,KAAK,GAAG,IAAI,YAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEzC,IAAI,IAAI,GAAG,IAAI,aAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;QAC5E,IAAI,MAAM,EACV;YACI,IAAI,KAAK,GAAG,IAAI,eAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,oBAAU,CAAC,IAAI,eAAO,CAAC,MAAM,GAAG,GAAG,EAAE,UAAU,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SAC1F;aAED;YACI,IAAI,CAAC,WAAW,CAAC,oBAAU,CAAC,IAAI,eAAO,CAAC,MAAM,GAAG,GAAG,EAAE,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SAC7E;QAGD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;CACJ;AA7CD,8BA6CC"}
{"version":3,"file":"Dimension.js","sourceRoot":"","sources":["../src/Dimension.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAAgE;AAChE,+CAA+C;AAC/C,+BAAgC;AAChC,qCAAuC;AAEvC;;;;;;GAMG;AACH;IAA+B,6BAAK;IAGhC,mBAAY,MAAc,EAAE,UAAuB,EAAE,MAAuB,EAAE,UAA2B;QAA7E,2BAAA,EAAA,eAAuB;QAAE,uBAAA,EAAA,cAAuB;QAAE,2BAAA,EAAA,kBAA2B;QAAzG,YAEI,iBAAO,SAuCV;QAtCG,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,UAAU,EACd;YACI,UAAU,GAAG,CAAC,UAAU,CAAC;SAC5B;QAED,OAAO;QACP,IAAI,OAAO,GAAG,IAAI,gBAAQ,EAAE,CAAC;QAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAO,EAAE,EAAE,IAAI,eAAO,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpE,OAAO;QACP,IAAI,QAAQ,GAAG,IAAI,gBAAQ,EAAE,CAAC;QAC9B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAO,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,IAAI,eAAO,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAEvF,IAAI,QAAQ,GAAG,4BAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAE/C,IAAI,KAAK,GAAG,IAAI,YAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxC,IAAI,KAAK,GAAG,IAAI,YAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC;QAE1B,IAAI,KAAK,GAAG,IAAI,YAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEzC,IAAI,IAAI,GAAG,IAAI,aAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;QAC5E,IAAI,MAAM,EACV;YACI,IAAI,KAAK,GAAG,IAAI,eAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,oBAAU,CAAC,IAAI,eAAO,CAAC,MAAM,GAAG,GAAG,EAAE,UAAU,GAAG,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SAC1F;aAED;YACI,IAAI,CAAC,WAAW,CAAC,oBAAU,CAAC,IAAI,eAAO,CAAC,MAAM,GAAG,GAAG,EAAE,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;SAC7E;QAGD,KAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEf,KAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;;IAClC,CAAC;IACL,gBAAC;AAAD,CAAC,AA7CD,CAA+B,aAAK,GA6CnC;AA7CY,8BAAS"}

18
dist/DrawDimension.js vendored
View File

@ -1,7 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const three_1 = require("three");
const _1 = require(".");
var three_1 = require("three");
var _1 = require(".");
/**
* 绘制标注实体
*
@ -10,19 +10,19 @@ const _1 = require(".");
* @returns 标注实体列表
*/
function DrawDimension(brList) {
let box = _1.GetBoxArr(brList);
let size = box.getSize(new three_1.Vector3());
let mat4 = new three_1.Matrix4();
var box = _1.GetBoxArr(brList);
var size = box.getSize(new three_1.Vector3());
var mat4 = new three_1.Matrix4();
mat4.makeBasis(new three_1.Vector3(-1, 0, 0), new three_1.Vector3(0, -1, 0), new three_1.Vector3(0, 0, 1));
mat4.setPosition(box.min.clone().add(new three_1.Vector3(size.x, -30)));
let textHeight = 45;
let dimx = new _1.Dimension(size.x, textHeight, true);
var textHeight = 45;
var dimx = new _1.Dimension(size.x, textHeight, true);
dimx.applyMatrix(mat4);
let dimz = new _1.Dimension(size.z, textHeight);
var dimz = new _1.Dimension(size.z, textHeight);
mat4.makeBasis(new three_1.Vector3(0, 0, -1), new three_1.Vector3(1, 0, 0), new three_1.Vector3(0, -1, 0));
mat4.setPosition(box.max.clone().add(new three_1.Vector3(30, -size.y)));
dimz.applyMatrix(mat4);
let dimy = new _1.Dimension(size.y, textHeight, true, true);
var dimy = new _1.Dimension(size.y, textHeight, true, true);
mat4.makeBasis(new three_1.Vector3(0, 1, 0), new three_1.Vector3(-1, 0, 0), new three_1.Vector3(0, 0, 1));
mat4.setPosition(box.max.clone().add(new three_1.Vector3(30, -size.y)));
dimy.applyMatrix(mat4);

View File

@ -1 +1 @@
{"version":3,"file":"DrawDimension.js","sourceRoot":"","sources":["../src/DrawDimension.ts"],"names":[],"mappings":";;AAAA,iCAAqD;AACrD,wBAAyC;AAGzC;;;;;;GAMG;AACH,uBAA8B,MAAc;IAExC,IAAI,GAAG,GAAG,YAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,eAAO,EAAE,CAAC,CAAC;IAEtC,IAAI,IAAI,GAAG,IAAI,eAAO,EAAE,CAAC;IACzB,IAAI,CAAC,SAAS,CACV,IAAI,eAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACrB,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACrB,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACvB,CAAA;IACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,eAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEhE,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,IAAI,GAAG,IAAI,YAAS,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEvB,IAAI,IAAI,GAAG,IAAI,YAAS,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,SAAS,CACV,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EACrB,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpB,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACxB,CAAA;IACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,eAAO,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEvB,IAAI,IAAI,GAAG,IAAI,YAAS,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,SAAS,CACV,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpB,IAAI,eAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACrB,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACvB,CAAA;IACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,eAAO,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAGvB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC;AArCD,sCAqCC"}
{"version":3,"file":"DrawDimension.js","sourceRoot":"","sources":["../src/DrawDimension.ts"],"names":[],"mappings":";;AAAA,+BAAqD;AACrD,sBAAyC;AAGzC;;;;;;GAMG;AACH,uBAA8B,MAAc;IAExC,IAAI,GAAG,GAAG,YAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,eAAO,EAAE,CAAC,CAAC;IAEtC,IAAI,IAAI,GAAG,IAAI,eAAO,EAAE,CAAC;IACzB,IAAI,CAAC,SAAS,CACV,IAAI,eAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACrB,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACrB,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACvB,CAAA;IACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,eAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEhE,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,IAAI,GAAG,IAAI,YAAS,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEvB,IAAI,IAAI,GAAG,IAAI,YAAS,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,SAAS,CACV,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EACrB,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpB,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACxB,CAAA;IACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,eAAO,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEvB,IAAI,IAAI,GAAG,IAAI,YAAS,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,SAAS,CACV,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpB,IAAI,eAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACrB,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACvB,CAAA;IACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,eAAO,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAGvB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC;AArCD,sCAqCC"}

94
dist/GeUtils.js vendored
View File

@ -1,8 +1,8 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const THREE = require("three");
const three_1 = require("three");
const Matrix2_1 = require("./Matrix2");
var THREE = require("three");
var three_1 = require("three");
var Matrix2_1 = require("./Matrix2");
exports.cZeroVec = new THREE.Vector3();
exports.cXAxis = new THREE.Vector3(1, 0, 0);
exports.cYAxis = new THREE.Vector3(0, 1, 0);
@ -20,7 +20,8 @@ function rotatePoint(pt, ang) {
return pt;
}
exports.rotatePoint = rotatePoint;
function equaln(v1, v2, fuzz = 1e-3) {
function equaln(v1, v2, fuzz) {
if (fuzz === void 0) { fuzz = 1e-3; }
return Math.abs(v1 - v2) < fuzz;
}
exports.equaln = equaln;
@ -28,11 +29,12 @@ function equal(v1, v2) {
return v1.distanceToSquared(v2) < 1e-8;
}
exports.equal = equal;
function fixAngle(an, fixAngle, fuzz = 0.1) {
function fixAngle(an, fixAngle, fuzz) {
if (fuzz === void 0) { fuzz = 0.1; }
if (an < 0)
an += Math.PI * 2;
an += fuzz;
let rem = an % fixAngle;
var rem = an % fixAngle;
if (rem < fuzz * 2) {
an -= rem;
}
@ -61,7 +63,7 @@ exports.polar = polar;
function angle(v) {
if (equaln(v.y, 0) && v.x > 0)
return 0;
let angle = Math.atan2(v.y, v.x);
var angle = Math.atan2(v.y, v.x);
if (angle < 0)
angle += Math.PI * 2;
return angle;
@ -75,14 +77,15 @@ exports.angle = angle;
* @param {THREE.Vector3} [ref] 参考向量,如果为世界坐标系则为0,0,1
* @returns
*/
function angleTo(v1, v2, ref = new THREE.Vector3(0, 0, 1)) {
function angleTo(v1, v2, ref) {
if (ref === void 0) { ref = new THREE.Vector3(0, 0, 1); }
if (!ref.equals(new three_1.Vector3(0, 0, 1))) {
//任意轴坐标系. 使用相机的构造矩阵.
ref.multiplyScalar(-1);
let up = getLoocAtUpVec(ref);
let refOcs = new THREE.Matrix4();
var up = getLoocAtUpVec(ref);
var refOcs = new THREE.Matrix4();
refOcs.lookAt(exports.cZeroVec, ref, up);
let refOcsInv = new THREE.Matrix4().getInverse(refOcs);
var refOcsInv = new THREE.Matrix4().getInverse(refOcs);
v1.applyMatrix4(refOcsInv);
v2.applyMatrix4(refOcsInv);
v1.z = 0;
@ -90,7 +93,7 @@ function angleTo(v1, v2, ref = new THREE.Vector3(0, 0, 1)) {
}
if (v1.equals(exports.cZeroVec) || v2.equals(exports.cZeroVec))
return 0;
let cv = new three_1.Vector3().crossVectors(v1, v2).normalize();
var cv = new three_1.Vector3().crossVectors(v1, v2).normalize();
return cv.z === 0 ? v1.angleTo(v2) : v1.angleTo(v2) * cv.z;
}
exports.angleTo = angleTo;
@ -98,7 +101,7 @@ function getLoocAtUpVec(dir) {
if (dir.equals(exports.cZeroVec)) {
throw ("zero vector");
}
let norm = dir.clone().normalize();
var norm = dir.clone().normalize();
if (norm.equals(exports.cZAxis)) {
return new THREE.Vector3(0, 1, 0);
}
@ -106,17 +109,17 @@ function getLoocAtUpVec(dir) {
return new THREE.Vector3(0, -1, 0);
}
else {
let xv = new THREE.Vector3();
var xv = new THREE.Vector3();
xv.crossVectors(exports.cZAxis, norm);
let up = new THREE.Vector3();
var up = new THREE.Vector3();
up.crossVectors(norm, xv);
return up;
}
}
exports.getLoocAtUpVec = getLoocAtUpVec;
function createLookAtMat4(dir) {
let up = getLoocAtUpVec(dir);
let mat = new THREE.Matrix4();
var up = getLoocAtUpVec(dir);
var mat = new THREE.Matrix4();
mat.lookAt(exports.cZeroVec, dir, up);
return mat;
}
@ -125,8 +128,9 @@ function isParallelTo(v1, v2) {
return v1.clone().cross(v2).lengthSq() < 1e-9;
}
exports.isParallelTo = isParallelTo;
function ptToString(v, fractionDigits = 3) {
return v.toArray().map(o => {
function ptToString(v, fractionDigits) {
if (fractionDigits === void 0) { fractionDigits = 3; }
return v.toArray().map(function (o) {
return o.toFixed(fractionDigits);
}).join(",");
}
@ -140,10 +144,10 @@ function midPoint2(v1, v2) {
}
exports.midPoint2 = midPoint2;
function midPtCir(v1, v2) {
let baseline = new three_1.Vector3(1, 0, 0);
let outLine = v2.clone().sub(v1);
let ang = angleTo(baseline, outLine) / 2;
let midLine = rotatePoint(outLine, -ang);
var baseline = new three_1.Vector3(1, 0, 0);
var outLine = v2.clone().sub(v1);
var ang = angleTo(baseline, outLine) / 2;
var midLine = rotatePoint(outLine, -ang);
return v1.clone().add(midLine);
}
exports.midPtCir = midPtCir;
@ -151,7 +155,7 @@ function GetBox(obj, updateMatrix) {
if (updateMatrix)
obj.updateMatrixWorld(false);
if (obj.hasOwnProperty("geometry")) {
let geo = obj["geometry"];
var geo = obj["geometry"];
if (geo instanceof THREE.Geometry || geo instanceof THREE.BufferGeometry) {
if (!geo.boundingBox)
geo.computeBoundingBox();
@ -159,8 +163,8 @@ function GetBox(obj, updateMatrix) {
}
}
else if (obj.children.length > 0) {
let box = obj.children.reduce((sumBox, itemObj) => {
let itemBox = GetBox(itemObj);
var box = obj.children.reduce(function (sumBox, itemObj) {
var itemBox = GetBox(itemObj);
if (itemBox)
sumBox.union(itemBox);
return sumBox;
@ -176,24 +180,24 @@ function GetBoxArr(arr) {
if (arr.length == 0) {
return null;
}
return arr.map(o => {
return arr.map(function (o) {
return GetBox(o);
}).filter(o => {
}).filter(function (o) {
return o;
}).reduce((sumBox, objBox) => {
}).reduce(function (sumBox, objBox) {
return sumBox.union(objBox);
}, new THREE.Box3());
}
exports.GetBoxArr = GetBoxArr;
function MoveMatrix(v) {
let mat = new THREE.Matrix4();
var mat = new THREE.Matrix4();
mat.makeTranslation(v.x, v.y, v.z);
return mat;
}
exports.MoveMatrix = MoveMatrix;
function getProjectDist(v1, v2) {
let ang = v1.angleTo(v2);
let dist = v1.length();
var ang = v1.angleTo(v2);
var dist = v1.length();
return {
h: dist * Math.cos(ang),
v: dist * Math.sin(ang)
@ -202,31 +206,31 @@ function getProjectDist(v1, v2) {
exports.getProjectDist = getProjectDist;
//获得输入点在2线组成的4个区间的位置
function getPtPostion(sp, ep, c, inPt) {
let l1 = sp.clone().sub(c);
let l2 = ep.clone().sub(c);
let l3 = l1.clone().negate();
let l4 = l2.clone().negate();
let inputLine = inPt.clone().sub(c);
let ang1 = angleTo(l1, l2);
let ang2 = Math.PI;
let ang3 = ang2 + Math.abs(ang1);
let inputAng = angleTo(l1, inputLine);
var l1 = sp.clone().sub(c);
var l2 = ep.clone().sub(c);
var l3 = l1.clone().negate();
var l4 = l2.clone().negate();
var inputLine = inPt.clone().sub(c);
var ang1 = angleTo(l1, l2);
var ang2 = Math.PI;
var ang3 = ang2 + Math.abs(ang1);
var inputAng = angleTo(l1, inputLine);
if (ang1 * inputAng < 0) {
inputAng = (Math.PI * 2 - Math.abs(inputAng));
}
ang1 = Math.abs(ang1);
inputAng = Math.abs(inputAng);
if (inputAng <= ang1) {
return { sp, ep };
return { sp: sp, ep: ep };
}
else if (inputAng > ang1 && inputAng <= ang2) {
return { sp: c.clone().add(l3), ep };
return { sp: c.clone().add(l3), ep: ep };
}
else if (inputAng > ang2 && inputAng <= ang3) {
return { sp: c.clone().add(l3), ep: c.clone().add(l4) };
}
else {
return { sp, ep: c.clone().add(l4) };
return { sp: sp, ep: c.clone().add(l4) };
}
}
exports.getPtPostion = getPtPostion;
@ -248,7 +252,7 @@ function angleTo2Pi(an) {
}
exports.angleTo2Pi = angleTo2Pi;
function updateGeometry(l, geometry) {
let geo = l.geometry;
var geo = l.geometry;
geo.dispose();
l.geometry = geometry;
geometry.verticesNeedUpdate = true;

2
dist/GeUtils.js.map vendored

File diff suppressed because one or more lines are too long

2
dist/Material.js vendored
View File

@ -1,6 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const three_1 = require("three");
var three_1 = require("three");
//板件的材质,使用这个材质避免板件将线覆盖.
exports.boardMaterial = new three_1.MeshBasicMaterial({
color: new three_1.Color(0.8, 0.8, 0.8),

View File

@ -1 +1 @@
{"version":3,"file":"Material.js","sourceRoot":"","sources":["../src/Material.ts"],"names":[],"mappings":";;AAAA,iCAAoE;AAEpE,uBAAuB;AACZ,QAAA,aAAa,GAAG,IAAI,yBAAiB,CAAC;IAC7C,KAAK,EAAE,IAAI,aAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC/B,aAAa,EAAE,IAAI;IACnB,mBAAmB,EAAE,CAAC;IACtB,kBAAkB,EAAE,CAAC;CACxB,CAAC,CAAC;AAEQ,QAAA,cAAc,GAAG,IAAI,yBAAiB,CAAC;IAC9C,KAAK,EAAE,IAAI,aAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC/B,aAAa,EAAE,IAAI;IACnB,mBAAmB,EAAE,CAAC;IACtB,kBAAkB,EAAE,CAAC;CACxB,CAAC,CAAC;AAEH,OAAO;AACI,QAAA,YAAY,GAAG,IAAI,yBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,aAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC"}
{"version":3,"file":"Material.js","sourceRoot":"","sources":["../src/Material.ts"],"names":[],"mappings":";;AAAA,+BAAoE;AAEpE,uBAAuB;AACZ,QAAA,aAAa,GAAG,IAAI,yBAAiB,CAAC;IAC7C,KAAK,EAAE,IAAI,aAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC/B,aAAa,EAAE,IAAI;IACnB,mBAAmB,EAAE,CAAC;IACtB,kBAAkB,EAAE,CAAC;CACxB,CAAC,CAAC;AAEQ,QAAA,cAAc,GAAG,IAAI,yBAAiB,CAAC;IAC9C,KAAK,EAAE,IAAI,aAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC/B,aAAa,EAAE,IAAI;IACnB,mBAAmB,EAAE,CAAC;IACtB,kBAAkB,EAAE,CAAC;CACxB,CAAC,CAAC;AAEH,OAAO;AACI,QAAA,YAAY,GAAG,IAAI,yBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,aAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC"}

29
dist/Matrix2.js vendored
View File

@ -1,30 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class Matrix2 {
constructor() {
var Matrix2 = /** @class */ (function () {
function Matrix2() {
this.el = [1, 0, 0, 1];
}
set(n11, n12, n21, n22) {
let te = this.el;
Matrix2.prototype.set = function (n11, n12, n21, n22) {
var te = this.el;
te[0] = n11;
te[1] = n21;
te[2] = n12;
te[3] = n22;
return this;
}
applyVector(vec) {
let x = vec.x, y = vec.y;
let e = this.el;
};
Matrix2.prototype.applyVector = function (vec) {
var x = vec.x, y = vec.y;
var e = this.el;
vec.x = e[0] * x + e[2] * y;
vec.y = e[1] * x + e[3] * y;
return this;
}
setRotate(theta) {
let el = this.el;
let c = Math.cos(theta), s = Math.sin(theta);
};
Matrix2.prototype.setRotate = function (theta) {
var el = this.el;
var c = Math.cos(theta), s = Math.sin(theta);
this.set(c, -s, s, c);
return this;
}
}
};
return Matrix2;
}());
exports.Matrix2 = Matrix2;
//# sourceMappingURL=Matrix2.js.map

2
dist/Matrix2.js.map vendored
View File

@ -1 +1 @@
{"version":3,"file":"Matrix2.js","sourceRoot":"","sources":["../src/Matrix2.ts"],"names":[],"mappings":";;AAEA;IAAA;QAEY,OAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IA4B9B,CAAC;IA3BG,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW;QAElD,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAEjB,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACzB,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,WAAW,CAAC,GAAsB;QAE9B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QAChB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE5B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,KAAa;QAEnB,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACV,CAAC,EAAE,CAAC,CAAC,CAAC;QACV,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AA9BD,0BA8BC"}
{"version":3,"file":"Matrix2.js","sourceRoot":"","sources":["../src/Matrix2.ts"],"names":[],"mappings":";;AAEA;IAAA;QAEY,OAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IA4B9B,CAAC;IA3BG,qBAAG,GAAH,UAAI,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW;QAElD,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAEjB,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACzB,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,6BAAW,GAAX,UAAY,GAAsB;QAE9B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QAChB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE5B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,2BAAS,GAAT,UAAU,KAAa;QAEnB,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACV,CAAC,EAAE,CAAC,CAAC,CAAC;QACV,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,cAAC;AAAD,CAAC,AA9BD,IA8BC;AA9BY,0BAAO"}

45
dist/Orbit.js vendored
View File

@ -1,25 +1,29 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const THREE = require("three");
var THREE = require("three");
/**
* 轨道控制的数学类,观察向量和角度的互相转换
* 当x当抬头或者低头到90度时,触发万向锁.
*
* @class Orbit
*/
class Orbit {
constructor() {
var Orbit = /** @class */ (function () {
function Orbit() {
//抬头低头 正数抬头 负数低头
this.m_RoX = 0;
//身体旋转 0为正右边 逆时针旋转
this.RoZ = 0;
}
get RoX() {
return this.m_RoX;
}
set RoX(v) {
this.m_RoX = THREE.Math.clamp(v, Math.PI * -0.5, Math.PI * 0.5);
}
Object.defineProperty(Orbit.prototype, "RoX", {
get: function () {
return this.m_RoX;
},
set: function (v) {
this.m_RoX = THREE.Math.clamp(v, Math.PI * -0.5, Math.PI * 0.5);
},
enumerable: true,
configurable: true
});
/**
* 使用旋转角度 计算观察向量
*
@ -27,29 +31,29 @@ class Orbit {
* @returns {THREE.Vector3} 返回观察向量
* @memberof Orbit
*/
UpdateDirection(dir) {
let rtDir = dir ? dir : new THREE.Vector3();
Orbit.prototype.UpdateDirection = function (dir) {
var rtDir = dir ? dir : new THREE.Vector3();
rtDir.z = Math.sin(this.m_RoX);
//归一化专用.
let d = Math.abs(Math.cos(this.m_RoX));
var d = Math.abs(Math.cos(this.m_RoX));
rtDir.x = Math.cos(this.RoZ) * d;
rtDir.y = Math.sin(this.RoZ) * d;
return rtDir;
}
};
/**
* 使用观察向量,计算旋转角度
*
* @param {THREE.Vector3} dir
* @memberof Orbit
*/
UpdateRoValue(dir) {
Orbit.prototype.UpdateRoValue = function (dir) {
dir.normalize();
this.m_RoX = Math.asin(dir.z);
if (dir.x < 1e-4 && dir.y < 1e-4)
this.RoZ = Math.PI * 0.5;
else
this.RoZ = Math.atan2(dir.y, dir.x);
}
};
/**
*
* 根据观察向量 求头部的向量.
@ -60,8 +64,8 @@ class Orbit {
* @returns {THREE.Vector3}
* @memberof Orbit
*/
static ComputUpDirection(dir, up) {
let upRes = up ? up : new THREE.Vector3();
Orbit.ComputUpDirection = function (dir, up) {
var upRes = up ? up : new THREE.Vector3();
if (dir.equals(new THREE.Vector3(0, 0, -1))) {
upRes.set(0, 1, 0);
}
@ -69,13 +73,14 @@ class Orbit {
upRes.set(0, -1, 0);
}
else {
let xv = new THREE.Vector3();
var xv = new THREE.Vector3();
xv.crossVectors(new THREE.Vector3(0, 0, 1), dir);
upRes.crossVectors(dir, xv);
upRes.normalize();
}
return upRes;
}
}
};
return Orbit;
}());
exports.Orbit = Orbit;
//# sourceMappingURL=Orbit.js.map

2
dist/Orbit.js.map vendored
View File

@ -1 +1 @@
{"version":3,"file":"Orbit.js","sourceRoot":"","sources":["../src/Orbit.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAE/B;;;;;GAKG;AACH;IAAA;QAEI,gBAAgB;QACR,UAAK,GAAW,CAAC,CAAC;QAE1B,kBAAkB;QAClB,QAAG,GAAW,CAAC,CAAC;IA+EpB,CAAC;IA7EG,IAAI,GAAG;QAEH,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,IAAI,GAAG,CAAC,CAAC;QAEL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,GAAmB;QAE/B,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAE5C,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE/B,QAAQ;QACR,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAEvC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,GAAkB;QAE5B,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI;YAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;;YAEzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAkB,EAAE,EAAkB;QAE3D,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAC3C;YACI,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACtB;aACI,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAC/C;YACI,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB;aAED;YACI,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACjD,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5B,KAAK,CAAC,SAAS,EAAE,CAAC;SACrB;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AArFD,sBAqFC"}
{"version":3,"file":"Orbit.js","sourceRoot":"","sources":["../src/Orbit.ts"],"names":[],"mappings":"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"}

44
dist/PlaneExt.js vendored
View File

@ -1,16 +1,27 @@
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
const THREE = require("three");
const three_1 = require("three");
class PlaneExt extends THREE.Plane {
constructor(normal, constant) {
super(normal, constant);
var THREE = require("three");
var three_1 = require("three");
var PlaneExt = /** @class */ (function (_super) {
__extends(PlaneExt, _super);
function PlaneExt(normal, constant) {
return _super.call(this, normal, constant) || this;
}
intersectLine(line, optionalTarget, extendLine) {
let v1 = new three_1.Vector3();
let result = optionalTarget || new three_1.Vector3();
let direction = line.delta(v1);
let denominator = this.normal.dot(direction);
PlaneExt.prototype.intersectLine = function (line, optionalTarget, extendLine) {
var v1 = new three_1.Vector3();
var result = optionalTarget || new three_1.Vector3();
var direction = line.delta(v1);
var denominator = this.normal.dot(direction);
if (denominator === 0) {
// line is coplanar, return origin
if (this.distanceToPoint(line.start) === 0) {
@ -19,18 +30,19 @@ class PlaneExt extends THREE.Plane {
// Unsure if this is the correct method to handle this case.
return undefined;
}
let t = -(line.start.dot(this.normal) + this.constant) / denominator;
var t = -(line.start.dot(this.normal) + this.constant) / denominator;
//If you not extendLine,check intersect point in Line
if (!extendLine && (t < 0 || t > 1)) {
return undefined;
}
return result.copy(direction).multiplyScalar(t).add(line.start);
}
intersectRay(ray, optionalTarget, extendLine) {
};
PlaneExt.prototype.intersectRay = function (ray, optionalTarget, extendLine) {
// 从射线初始位置
let line = new THREE.Line3(ray.origin.clone(), ray.origin.clone().add(ray.direction));
var line = new THREE.Line3(ray.origin.clone(), ray.origin.clone().add(ray.direction));
return this.intersectLine(line, optionalTarget, extendLine);
}
}
};
return PlaneExt;
}(THREE.Plane));
exports.PlaneExt = PlaneExt;
//# sourceMappingURL=PlaneExt.js.map

View File

@ -1 +1 @@
{"version":3,"file":"PlaneExt.js","sourceRoot":"","sources":["../src/PlaneExt.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,iCAAuC;AAEvC,cAAsB,SAAQ,KAAK,CAAC,KAAK;IAErC,YAAY,MAAsB,EAAE,QAAiB;QAEjD,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACD,aAAa,CAAC,IAAW,EAAE,cAAwB,EAAE,UAAoB;QAErE,IAAI,EAAE,GAAG,IAAI,eAAO,EAAE,CAAC;QAEvB,IAAI,MAAM,GAAG,cAAc,IAAI,IAAI,eAAO,EAAE,CAAC;QAE7C,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE/B,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE7C,IAAI,WAAW,KAAK,CAAC,EACrB;YACI,kCAAkC;YAClC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAC1C;gBACI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAClC;YACD,4DAA4D;YAC5D,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;QACtE,qDAAqD;QACrD,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACnC;YACI,OAAO,SAAS,CAAC;SACpB;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IACD,YAAY,CAAC,GAAc,EAAE,cAAwB,EAAE,UAAoB;QAEvE,UAAU;QACV,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;CACJ;AA1CD,4BA0CC"}
{"version":3,"file":"PlaneExt.js","sourceRoot":"","sources":["../src/PlaneExt.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAA+B;AAC/B,+BAAuC;AAEvC;IAA8B,4BAAW;IAErC,kBAAY,MAAsB,EAAE,QAAiB;eAEjD,kBAAM,MAAM,EAAE,QAAQ,CAAC;IAC3B,CAAC;IACD,gCAAa,GAAb,UAAc,IAAW,EAAE,cAAwB,EAAE,UAAoB;QAErE,IAAI,EAAE,GAAG,IAAI,eAAO,EAAE,CAAC;QAEvB,IAAI,MAAM,GAAG,cAAc,IAAI,IAAI,eAAO,EAAE,CAAC;QAE7C,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE/B,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE7C,IAAI,WAAW,KAAK,CAAC,EACrB;YACI,kCAAkC;YAClC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAC1C;gBACI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAClC;YACD,4DAA4D;YAC5D,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;QACtE,qDAAqD;QACrD,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACnC;YACI,OAAO,SAAS,CAAC;SACpB;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IACD,+BAAY,GAAZ,UAAa,GAAc,EAAE,cAAwB,EAAE,UAAoB;QAEvE,UAAU;QACV,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;IACL,eAAC;AAAD,CAAC,AA1CD,CAA8B,KAAK,CAAC,KAAK,GA0CxC;AA1CY,4BAAQ"}

15
dist/PointPick.js vendored
View File

@ -1,6 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const three_1 = require("three");
var three_1 = require("three");
/**
* 点选
*
@ -11,20 +11,21 @@ const three_1 = require("three");
* @returns {(Mesh | undefined)}
*/
function PointPick(view, ptx, pty) {
let raycaster = new three_1.Raycaster();
var raycaster = new three_1.Raycaster();
raycaster.setFromCamera({
x: (ptx / view._Width) * 2 - 1,
y: -(pty / view._Height) * 2 + 1 //y轴相反
}, view.m_Camera.Camera);
//https://github.com/mrdoob/three.js/issues/14128
raycaster.ray.origin.set((ptx / view._Width) * 2 - 1, -(pty / view._Height) * 2 + 1, -1).unproject(view.m_Camera.Camera);
let minDis = Infinity;
let minObj = undefined;
view.m_Scene.children.forEach(obj => {
var minDis = Infinity;
var minObj = undefined;
view.m_Scene.children.forEach(function (obj) {
if (obj instanceof three_1.Mesh) {
let intersects = [];
var intersects = [];
obj.raycast(raycaster, intersects);
for (let i of intersects) {
for (var _i = 0, intersects_1 = intersects; _i < intersects_1.length; _i++) {
var i = intersects_1[_i];
if (i.distance < minDis) {
minObj = obj;
minDis = i.distance;

View File

@ -1 +1 @@
{"version":3,"file":"PointPick.js","sourceRoot":"","sources":["../src/PointPick.ts"],"names":[],"mappings":";;AAAA,iCAA2E;AAc3E;;;;;;;;GAQG;AACH,mBAA0B,IAAY,EAAE,GAAW,EAAE,GAAW;IAE5D,IAAI,SAAS,GAAG,IAAI,iBAAS,EAAE,CAAC;IAChC,SAAS,CAAC,aAAa,CAAC;QACpB,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QAC9B,CAAC,EAAE,CAAE,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM;KAC3C,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzB,iDAAiD;IACjD,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAG1H,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,IAAI,MAAM,GAAG,SAAS,CAAC;IAEvB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAEhC,IAAI,GAAG,YAAY,YAAI,EACvB;YACI,IAAI,UAAU,GAAgB,EAAE,CAAC;YACjC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAEnC,KAAK,IAAI,CAAC,IAAI,UAAU,EACxB;gBACI,IAAI,CAAC,CAAC,QAAQ,GAAG,MAAM,EACvB;oBACI,MAAM,GAAG,GAAG,CAAC;oBACb,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC;iBACvB;aACJ;SACJ;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC;AAlCD,8BAkCC"}
{"version":3,"file":"PointPick.js","sourceRoot":"","sources":["../src/PointPick.ts"],"names":[],"mappings":";;AAAA,+BAA2E;AAc3E;;;;;;;;GAQG;AACH,mBAA0B,IAAY,EAAE,GAAW,EAAE,GAAW;IAE5D,IAAI,SAAS,GAAG,IAAI,iBAAS,EAAE,CAAC;IAChC,SAAS,CAAC,aAAa,CAAC;QACpB,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QAC9B,CAAC,EAAE,CAAE,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM;KAC3C,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzB,iDAAiD;IACjD,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAG1H,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,IAAI,MAAM,GAAG,SAAS,CAAC;IAEvB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,GAAG;QAE7B,IAAI,GAAG,YAAY,YAAI,EACvB;YACI,IAAI,UAAU,GAAgB,EAAE,CAAC;YACjC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAEnC,KAAc,UAAU,EAAV,yBAAU,EAAV,wBAAU,EAAV,IAAU;gBAAnB,IAAI,CAAC,mBAAA;gBAEN,IAAI,CAAC,CAAC,QAAQ,GAAG,MAAM,EACvB;oBACI,MAAM,GAAG,GAAG,CAAC;oBACb,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC;iBACvB;aACJ;SACJ;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC;AAlCD,8BAkCC"}

17
dist/RotateUV.js vendored
View File

@ -1,14 +1,17 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Matrix2_1 = require("./Matrix2");
const three_1 = require("three");
var Matrix2_1 = require("./Matrix2");
var three_1 = require("three");
function RotateUVs(geo) {
let roMat = new Matrix2_1.Matrix2();
var roMat = new Matrix2_1.Matrix2();
roMat.set(0, -1, 1, 0);
let addV = new three_1.Vector2(1, 0);
for (let uvs of geo.faceVertexUvs) {
for (let uv of uvs) {
for (let v of uv) {
var addV = new three_1.Vector2(1, 0);
for (var _i = 0, _a = geo.faceVertexUvs; _i < _a.length; _i++) {
var uvs = _a[_i];
for (var _b = 0, uvs_1 = uvs; _b < uvs_1.length; _b++) {
var uv = uvs_1[_b];
for (var _c = 0, uv_1 = uv; _c < uv_1.length; _c++) {
var v = uv_1[_c];
roMat.applyVector(v);
v.add(addV);
}

View File

@ -1 +1 @@
{"version":3,"file":"RotateUV.js","sourceRoot":"","sources":["../src/RotateUV.ts"],"names":[],"mappings":";;AAAA,uCAAoC;AACpC,iCAA0C;AAG1C,mBAA0B,GAAa;IAEnC,IAAI,KAAK,GAAG,IAAI,iBAAO,EAAE,CAAC;IAC1B,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACX,CAAC,EAAE,CAAC,CAAC,CAAC;IAEV,IAAI,IAAI,GAAG,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7B,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,aAAa,EACjC;QACI,KAAK,IAAI,EAAE,IAAI,GAAG,EAClB;YACI,KAAK,IAAI,CAAC,IAAI,EAAE,EAChB;gBACI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACf;SACJ;KACJ;IACD,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;AAC7B,CAAC;AApBD,8BAoBC"}
{"version":3,"file":"RotateUV.js","sourceRoot":"","sources":["../src/RotateUV.ts"],"names":[],"mappings":";;AAAA,qCAAoC;AACpC,+BAA0C;AAG1C,mBAA0B,GAAa;IAEnC,IAAI,KAAK,GAAG,IAAI,iBAAO,EAAE,CAAC;IAC1B,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACX,CAAC,EAAE,CAAC,CAAC,CAAC;IAEV,IAAI,IAAI,GAAG,IAAI,eAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7B,KAAgB,UAAiB,EAAjB,KAAA,GAAG,CAAC,aAAa,EAAjB,cAAiB,EAAjB,IAAiB;QAA5B,IAAI,GAAG,SAAA;QAER,KAAe,UAAG,EAAH,WAAG,EAAH,iBAAG,EAAH,IAAG;YAAb,IAAI,EAAE,YAAA;YAEP,KAAc,UAAE,EAAF,SAAE,EAAF,gBAAE,EAAF,IAAE;gBAAX,IAAI,CAAC,WAAA;gBAEN,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACf;SACJ;KACJ;IACD,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;AAC7B,CAAC;AApBD,8BAoBC"}

54
dist/Text.js vendored
View File

@ -1,19 +1,33 @@
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
const three_1 = require("three");
const ColorPalette_1 = require("./ColorPalette");
const GeUtils_1 = require("./GeUtils");
class FontLoaderUtil {
static Load() {
var three_1 = require("three");
var ColorPalette_1 = require("./ColorPalette");
var GeUtils_1 = require("./GeUtils");
var FontLoaderUtil = /** @class */ (function () {
function FontLoaderUtil() {
}
FontLoaderUtil.Load = function () {
if (!this.defFont) {
const f = require("../resources/fonts/helvetiker_regular.typeface.json");
let loader = new three_1.FontLoader();
var f = require("../resources/fonts/helvetiker_regular.typeface.json");
var loader = new three_1.FontLoader();
this.defFont = loader.parse(f);
}
return this.defFont;
}
}
class DbText extends three_1.Mesh {
};
return FontLoaderUtil;
}());
var DbText = /** @class */ (function (_super) {
__extends(DbText, _super);
/**
*
* 构造一个文本对象,8位点(中心点下面)在0点
@ -21,15 +35,19 @@ class DbText extends three_1.Mesh {
* @param {number} height 文本高度
* @memberof DbText
*/
constructor(str, height = 5) {
let font = FontLoaderUtil.Load();
let shapes = font.generateShapes(str, height, 0.1);
let geometry = new three_1.ShapeGeometry(shapes);
function DbText(str, height) {
if (height === void 0) { height = 5; }
var _this = this;
var font = FontLoaderUtil.Load();
var shapes = font.generateShapes(str, height, 0.1);
var geometry = new three_1.ShapeGeometry(shapes);
geometry.computeBoundingBox();
super(geometry, ColorPalette_1.ColorMaterial.GetLineMaterial(5));
let center = geometry.boundingBox.getCenter(new three_1.Vector3());
this.applyMatrix(GeUtils_1.MoveMatrix(new three_1.Vector3(-center.x, 0, 0)));
_this = _super.call(this, geometry, ColorPalette_1.ColorMaterial.GetLineMaterial(5)) || this;
var center = geometry.boundingBox.getCenter(new three_1.Vector3());
_this.applyMatrix(GeUtils_1.MoveMatrix(new three_1.Vector3(-center.x, 0, 0)));
return _this;
}
}
return DbText;
}(three_1.Mesh));
exports.DbText = DbText;
//# sourceMappingURL=Text.js.map

2
dist/Text.js.map vendored
View File

@ -1 +1 @@
{"version":3,"file":"Text.js","sourceRoot":"","sources":["../src/Text.ts"],"names":[],"mappings":";;AAAA,iCAAuE;AACvE,iDAA+C;AAC/C,uCAAuC;AAEvC;IAGE,MAAM,CAAC,IAAI;QAET,IAAI,CAAC,IAAI,CAAC,OAAO,EACjB;YACE,MAAM,CAAC,GAAG,OAAO,CAAC,qDAAqD,CAAC,CAAC;YACzE,IAAI,MAAM,GAAG,IAAI,kBAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAChC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAED,YAAoB,SAAQ,YAAI;IAE9B;;;;;;OAMG;IACH,YAAY,GAAW,EAAE,SAAiB,CAAC;QAEzC,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;QAEjC,IAAI,MAAM,GAAkB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAClE,IAAI,QAAQ,GAAG,IAAI,qBAAa,CAAC,MAAM,CAAC,CAAC;QAEzC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAE9B,KAAK,CAAC,QAAQ,EAAE,4BAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAElD,IAAI,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,eAAO,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,CAAC,oBAAU,CAAC,IAAI,eAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;CACF;AAvBD,wBAuBC"}
{"version":3,"file":"Text.js","sourceRoot":"","sources":["../src/Text.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAAuE;AACvE,+CAA+C;AAC/C,qCAAuC;AAEvC;IAAA;IAaA,CAAC;IAVQ,mBAAI,GAAX;QAEE,IAAI,CAAC,IAAI,CAAC,OAAO,EACjB;YACE,IAAM,CAAC,GAAG,OAAO,CAAC,qDAAqD,CAAC,CAAC;YACzE,IAAI,MAAM,GAAG,IAAI,kBAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAChC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACH,qBAAC;AAAD,CAAC,AAbD,IAaC;AAED;IAA4B,0BAAI;IAE9B;;;;;;OAMG;IACH,gBAAY,GAAW,EAAE,MAAkB;QAAlB,uBAAA,EAAA,UAAkB;QAA3C,iBAaC;QAXC,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;QAEjC,IAAI,MAAM,GAAkB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAClE,IAAI,QAAQ,GAAG,IAAI,qBAAa,CAAC,MAAM,CAAC,CAAC;QAEzC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAE9B,QAAA,kBAAM,QAAQ,EAAE,4BAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAC;QAElD,IAAI,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,eAAO,EAAE,CAAC,CAAC;QAC3D,KAAI,CAAC,WAAW,CAAC,oBAAU,CAAC,IAAI,eAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;;IAC7D,CAAC;IACH,aAAC;AAAD,CAAC,AAvBD,CAA4B,YAAI,GAuB/B;AAvBY,wBAAM"}

4
dist/ThreeCSG.d.ts vendored
View File

@ -20,8 +20,8 @@ export declare class Polygon {
calculateProperties(): this;
clone(): Polygon;
flip(): this;
classifyVertex(vertex: any): 1 | 0 | 2;
classifySide(polygon: any): 1 | 0 | 2 | 3;
classifyVertex(vertex: any): 0 | 2 | 1;
classifySide(polygon: any): 0 | 2 | 1 | 3;
splitPolygon(polygon: any, coplanar_front: any, coplanar_back: any, front: any, back: any): void;
}
export declare class Vertex {

198
dist/ThreeCSG.js vendored
View File

@ -1,14 +1,14 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const THREE = require("three");
var THREE = require("three");
/*jshint esversion: 6 */
const EPSILON = 1e-5, COPLANAR = 0, //共面
var EPSILON = 1e-5, COPLANAR = 0, //共面
FRONT = 1, //前
BACK = 2, SPANNING = 3;
class ThreeBSP {
constructor(geometry) {
var ThreeBSP = /** @class */ (function () {
function ThreeBSP(geometry) {
// Convert THREE.Geometry to ThreeBSP
let i, _length_i, face, vertex, faceVertexUvs, uvs, polygon, polygons = [], tree;
var i, _length_i, face, vertex, faceVertexUvs, uvs, polygon, polygons = [], tree;
this.Polygon = Polygon;
this.Vertex = Vertex;
this.Node = Node;
@ -81,8 +81,8 @@ class ThreeBSP {
this.tree = new Node(polygons);
}
//减
subtract(other_tree) {
let a = this.tree.clone(), b = other_tree.tree.clone();
ThreeBSP.prototype.subtract = function (other_tree) {
var a = this.tree.clone(), b = other_tree.tree.clone();
a.invert();
a.clipTo(b);
b.clipTo(a);
@ -91,26 +91,26 @@ class ThreeBSP {
b.invert();
a.build(b.allPolygons());
a.invert();
let bsp = new ThreeBSP(a);
var bsp = new ThreeBSP(a);
bsp.matrix = this.matrix;
return bsp;
}
};
//结合
union(other_tree) {
let a = this.tree.clone(), b = other_tree.tree.clone();
ThreeBSP.prototype.union = function (other_tree) {
var a = this.tree.clone(), b = other_tree.tree.clone();
a.clipTo(b);
b.clipTo(a);
b.invert();
b.clipTo(a);
b.invert();
a.build(b.allPolygons());
let bsp = new ThreeBSP(a);
var bsp = new ThreeBSP(a);
bsp.matrix = this.matrix;
return bsp;
}
};
//相交
intersect(other_tree) {
let a = this.tree.clone(), b = other_tree.tree.clone();
ThreeBSP.prototype.intersect = function (other_tree) {
var a = this.tree.clone(), b = other_tree.tree.clone();
a.invert();
b.clipTo(a);
b.invert();
@ -118,12 +118,12 @@ class ThreeBSP {
b.clipTo(a);
a.build(b.allPolygons());
a.invert();
let bsp = new ThreeBSP(a);
var bsp = new ThreeBSP(a);
bsp.matrix = this.matrix;
return bsp;
}
toGeometry() {
let i, j, matrix = new THREE.Matrix4().getInverse(this.matrix), geometry = new THREE.Geometry(), polygons = this.tree.allPolygons(), polygon_count = polygons.length, polygon, polygon_vertice_count, vertice_dict = {}, vertex_idx_a, vertex_idx_b, vertex_idx_c, vertex, face, verticeUvs;
};
ThreeBSP.prototype.toGeometry = function () {
var i, j, matrix = new THREE.Matrix4().getInverse(this.matrix), geometry = new THREE.Geometry(), polygons = this.tree.allPolygons(), polygon_count = polygons.length, polygon, polygon_vertice_count, vertice_dict = {}, vertex_idx_a, vertex_idx_b, vertex_idx_c, vertex, face, verticeUvs;
for (i = 0; i < polygon_count; i++) {
polygon = polygons[i];
polygon_vertice_count = polygon.vertices.length;
@ -168,18 +168,19 @@ class ThreeBSP {
}
}
return geometry;
}
toMesh(material) {
let geometry = this.toGeometry(), mesh = new THREE.Mesh(geometry, material);
};
ThreeBSP.prototype.toMesh = function (material) {
var geometry = this.toGeometry(), mesh = new THREE.Mesh(geometry, material);
mesh.position.setFromMatrixPosition(this.matrix);
mesh.rotation.setFromRotationMatrix(this.matrix);
return mesh;
}
}
};
return ThreeBSP;
}());
exports.ThreeBSP = ThreeBSP;
//多边形
class Polygon {
constructor(vertices, normal, w) {
var Polygon = /** @class */ (function () {
function Polygon(vertices, normal, w) {
if (!(vertices instanceof Array)) {
vertices = [];
}
@ -191,22 +192,22 @@ class Polygon {
this.normal = this.w = undefined;
}
}
calculateProperties() {
let a = this.vertices[0], b = this.vertices[1], c = this.vertices[2];
Polygon.prototype.calculateProperties = function () {
var a = this.vertices[0], b = this.vertices[1], c = this.vertices[2];
this.normal = b.clone().subtract(a).cross(c.clone().subtract(a)).normalize();
this.w = this.normal.clone().dot(a);
return this;
}
clone() {
let i, vertice_count, polygon = new Polygon();
};
Polygon.prototype.clone = function () {
var i, vertice_count, polygon = new Polygon();
for (i = 0, vertice_count = this.vertices.length; i < vertice_count; i++) {
polygon.vertices.push(this.vertices[i].clone());
}
polygon.calculateProperties();
return polygon;
}
flip() {
let i, vertices = [];
};
Polygon.prototype.flip = function () {
var i, vertices = [];
this.normal.multiplyScalar(-1);
this.w *= -1;
for (i = this.vertices.length - 1; i >= 0; i--) {
@ -214,10 +215,10 @@ class Polygon {
}
this.vertices = vertices;
return this;
}
};
//划分?
classifyVertex(vertex) {
let side_value = this.normal.dot(vertex) - this.w;
Polygon.prototype.classifyVertex = function (vertex) {
var side_value = this.normal.dot(vertex) - this.w;
if (side_value < -EPSILON) {
return BACK;
}
@ -227,10 +228,10 @@ class Polygon {
else {
return COPLANAR;
}
}
};
//划分边?
classifySide(polygon) {
let i, vertex, classification, num_positive = 0, num_negative = 0, vertice_count = polygon.vertices.length;
Polygon.prototype.classifySide = function (polygon) {
var i, vertex, classification, num_positive = 0, num_negative = 0, vertice_count = polygon.vertices.length;
for (i = 0; i < vertice_count; i++) {
vertex = polygon.vertices[i];
classification = this.classifyVertex(vertex);
@ -253,10 +254,10 @@ class Polygon {
else {
return SPANNING;
}
}
};
//分解 分离 区域?
splitPolygon(polygon, coplanar_front, coplanar_back, front, back) {
let classification = this.classifySide(polygon);
Polygon.prototype.splitPolygon = function (polygon, coplanar_front, coplanar_back, front, back) {
var classification = this.classifySide(polygon);
if (classification === COPLANAR) {
(this.normal.dot(polygon.normal) > 0 ? coplanar_front : coplanar_back).push(polygon);
}
@ -267,7 +268,7 @@ class Polygon {
back.push(polygon);
}
else {
let vertice_count, i, j, ti, tj, vi, vj, t, v, f = [], b = [];
var vertice_count = void 0, i = void 0, j = void 0, ti = void 0, tj = void 0, vi = void 0, vj = void 0, t = void 0, v = void 0, f = [], b = [];
for (i = 0, vertice_count = polygon.vertices.length; i < vertice_count; i++) {
j = (i + 1) % vertice_count;
vi = polygon.vertices[i];
@ -290,82 +291,84 @@ class Polygon {
if (b.length >= 3)
back.push(new Polygon(b).calculateProperties());
}
}
}
};
return Polygon;
}());
exports.Polygon = Polygon;
class Vertex {
constructor(x, y, z, normal, uv) {
var Vertex = /** @class */ (function () {
function Vertex(x, y, z, normal, uv) {
this.x = x;
this.y = y;
this.z = z;
this.normal = normal || new THREE.Vector3();
this.uv = uv || new THREE.Vector2();
}
clone() {
Vertex.prototype.clone = function () {
return new Vertex(this.x, this.y, this.z, this.normal.clone(), this.uv.clone());
}
add(vertex) {
};
Vertex.prototype.add = function (vertex) {
this.x += vertex.x;
this.y += vertex.y;
this.z += vertex.z;
return this;
}
subtract(vertex) {
};
Vertex.prototype.subtract = function (vertex) {
this.x -= vertex.x;
this.y -= vertex.y;
this.z -= vertex.z;
return this;
}
multiplyScalar(scalar) {
};
Vertex.prototype.multiplyScalar = function (scalar) {
this.x *= scalar;
this.y *= scalar;
this.z *= scalar;
return this;
}
};
//×乘
cross(vertex) {
let x = this.x, y = this.y, z = this.z;
Vertex.prototype.cross = function (vertex) {
var x = this.x, y = this.y, z = this.z;
this.x = y * vertex.z - z * vertex.y;
this.y = z * vertex.x - x * vertex.z;
this.z = x * vertex.y - y * vertex.x;
return this;
}
normalize() {
let length = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
};
Vertex.prototype.normalize = function () {
var length = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
this.x /= length;
this.y /= length;
this.z /= length;
return this;
}
};
//点乘
dot(vertex) {
Vertex.prototype.dot = function (vertex) {
return this.x * vertex.x + this.y * vertex.y + this.z * vertex.z;
}
};
//线性插值
lerp(a, t) {
Vertex.prototype.lerp = function (a, t) {
this.add(a.clone().subtract(this).multiplyScalar(t));
this.normal.add(a.normal.clone().sub(this.normal).multiplyScalar(t));
this.uv.add(a.uv.clone().sub(this.uv).multiplyScalar(t));
return this;
}
};
//插值
interpolate(other, t) {
Vertex.prototype.interpolate = function (other, t) {
return this.clone().lerp(other, t);
}
applyMatrix4(m) {
};
Vertex.prototype.applyMatrix4 = function (m) {
// input: THREE.Matrix4 affine matrix
let x = this.x, y = this.y, z = this.z;
let e = m.elements;
var x = this.x, y = this.y, z = this.z;
var e = m.elements;
this.x = e[0] * x + e[4] * y + e[8] * z + e[12];
this.y = e[1] * x + e[5] * y + e[9] * z + e[13];
this.z = e[2] * x + e[6] * y + e[10] * z + e[14];
return this;
}
}
};
return Vertex;
}());
exports.Vertex = Vertex;
class Node {
constructor(polygons) {
let i, polygon_count, front = [], back = [];
var Node = /** @class */ (function () {
function Node(polygons) {
var i, polygon_count, front = [], back = [];
this.polygons = [];
this.front = this.back = undefined;
if (!(polygons instanceof Array) || polygons.length === 0)
@ -382,8 +385,8 @@ class Node {
}
}
//是凸的? 凸包?
isConvex(polygons) {
let i, j;
Node.prototype.isConvex = function (polygons) {
var i, j;
for (i = 0; i < polygons.length; i++) {
for (j = 0; j < polygons.length; j++) {
if (i !== j && polygons[i].classifySide(polygons[j]) !== BACK) {
@ -392,9 +395,9 @@ class Node {
}
}
return true;
}
build(polygons) {
let i, polygon_count, front = [], back = [];
};
Node.prototype.build = function (polygons) {
var i, polygon_count, front = [], back = [];
if (!this.divider) {
this.divider = polygons[0].clone();
}
@ -411,17 +414,17 @@ class Node {
this.back = new Node();
this.back.build(back);
}
}
allPolygons() {
let polygons = this.polygons.slice();
};
Node.prototype.allPolygons = function () {
var polygons = this.polygons.slice();
if (this.front)
polygons = polygons.concat(this.front.allPolygons());
if (this.back)
polygons = polygons.concat(this.back.allPolygons());
return polygons;
}
clone() {
let node = new Node();
};
Node.prototype.clone = function () {
var node = new Node();
node.divider = this.divider.clone();
node.polygons = this.polygons.map(function (polygon) {
return polygon.clone();
@ -429,10 +432,10 @@ class Node {
node.front = this.front && this.front.clone();
node.back = this.back && this.back.clone();
return node;
}
};
//反转
invert() {
let i, polygon_count, temp;
Node.prototype.invert = function () {
var i, polygon_count, temp;
for (i = 0, polygon_count = this.polygons.length; i < polygon_count; i++) {
this.polygons[i].flip();
}
@ -445,10 +448,10 @@ class Node {
this.front = this.back;
this.back = temp;
return this;
}
};
//
clipPolygons(polygons) {
let i, polygon_count, front, back;
Node.prototype.clipPolygons = function (polygons) {
var i, polygon_count, front, back;
if (!this.divider)
return polygons.slice();
front = [];
@ -463,14 +466,15 @@ class Node {
else
back = [];
return front.concat(back);
}
clipTo(node) {
};
Node.prototype.clipTo = function (node) {
this.polygons = node.clipPolygons(this.polygons);
if (this.front)
this.front.clipTo(node);
if (this.back)
this.back.clipTo(node);
}
}
};
return Node;
}());
exports.Node = Node;
//# sourceMappingURL=ThreeCSG.js.map

File diff suppressed because one or more lines are too long

17
dist/Utils.js vendored
View File

@ -1,23 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const _1 = require(".");
var _1 = require(".");
function LoadBoard(view, data) {
view.m_Scene.children.forEach(obj => {
let geo = obj["geometry"];
view.m_Scene.children.forEach(function (obj) {
var geo = obj["geometry"];
if (geo)
geo.dispose();
});
view.m_Scene.children.length = 0;
//加板
let { meshs, edgesa } = _1.createTemplateBoard(data);
var _a = _1.createTemplateBoard(data), meshs = _a.meshs, edgesa = _a.edgesa;
//加标注
let dims = _1.DrawDimension(meshs);
view.m_Scene.add(...meshs);
view.m_Scene.add(...edgesa);
view.m_Scene.add(...dims);
var dims = _1.DrawDimension(meshs);
(_b = view.m_Scene).add.apply(_b, meshs);
(_c = view.m_Scene).add.apply(_c, edgesa);
(_d = view.m_Scene).add.apply(_d, dims);
view.ViewToSwiso();
view.ZoomAll();
view.Zoom(1.1);
var _b, _c, _d;
}
exports.LoadBoard = LoadBoard;
//# sourceMappingURL=Utils.js.map

2
dist/Utils.js.map vendored
View File

@ -1 +1 @@
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../src/Utils.ts"],"names":[],"mappings":";;AAAA,wBAA2E;AAG3E,mBAA0B,IAAY,EAAE,IAAW;IAE/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAEhC,IAAI,GAAG,GAAG,GAAG,CAAC,UAAU,CAAa,CAAC;QACtC,IAAI,GAAG;YAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAEjC,IAAI;IACJ,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,sBAAmB,CAAC,IAAI,CAAC,CAAC;IAClD,KAAK;IACL,IAAI,IAAI,GAAG,gBAAa,CAAC,KAAK,CAAC,CAAC;IAEhC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAE1B,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,IAAI,CAAC,OAAO,EAAE,CAAC;IACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AArBD,8BAqBC"}
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../src/Utils.ts"],"names":[],"mappings":";;AAAA,sBAA2E;AAG3E,mBAA0B,IAAY,EAAE,IAAW;IAE/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,GAAG;QAE7B,IAAI,GAAG,GAAG,GAAG,CAAC,UAAU,CAAa,CAAC;QACtC,IAAI,GAAG;YAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAEjC,IAAI;IACA,IAAA,iCAA6C,EAA3C,gBAAK,EAAE,kBAAM,CAA+B;IAClD,KAAK;IACL,IAAI,IAAI,GAAG,gBAAa,CAAC,KAAK,CAAC,CAAC;IAEhC,CAAA,KAAA,IAAI,CAAC,OAAO,CAAA,CAAC,GAAG,WAAI,KAAK,EAAE;IAC3B,CAAA,KAAA,IAAI,CAAC,OAAO,CAAA,CAAC,GAAG,WAAI,MAAM,EAAE;IAC5B,CAAA,KAAA,IAAI,CAAC,OAAO,CAAA,CAAC,GAAG,WAAI,IAAI,EAAE;IAE1B,IAAI,CAAC,WAAW,EAAE,CAAC;IACnB,IAAI,CAAC,OAAO,EAAE,CAAC;IACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;AACnB,CAAC;AArBD,8BAqBC"}

120
dist/Viewer.js vendored
View File

@ -1,33 +1,34 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const THREE = require("three");
const _1 = require(".");
const CameraUpdate_1 = require("./CameraUpdate");
const ColorPalette_1 = require("./ColorPalette");
const GeUtils_1 = require("./GeUtils");
const PlaneExt_1 = require("./PlaneExt");
class Viewer {
var THREE = require("three");
var _1 = require(".");
var CameraUpdate_1 = require("./CameraUpdate");
var ColorPalette_1 = require("./ColorPalette");
var GeUtils_1 = require("./GeUtils");
var PlaneExt_1 = require("./PlaneExt");
var Viewer = /** @class */ (function () {
//构造
constructor(canvasContainer) {
function Viewer(canvasContainer) {
var _this = this;
this.m_Camera = new CameraUpdate_1.CameraUpdate();
this.m_bNeedUpdate = true;
this.m_Scene = new THREE.Scene();
this.OnSize = (width, height) => {
this._Width = width ? width : this.m_DomEl.clientWidth;
this._Height = height ? height : this.m_DomEl.clientHeight;
this.OnSize = function (width, height) {
_this._Width = width ? width : _this.m_DomEl.clientWidth;
_this._Height = height ? height : _this.m_DomEl.clientHeight;
//校验.成为2的倍数 避免外轮廓错误.
if (this._Width % 2 == 1)
this._Width -= 1;
if (this._Height % 2 == 1)
this._Height -= 1;
this.m_Render.setSize(this._Width, this._Height);
this.m_Camera.SetSize(this._Width, this._Height);
if (_this._Width % 2 == 1)
_this._Width -= 1;
if (_this._Height % 2 == 1)
_this._Height -= 1;
_this.m_Render.setSize(_this._Width, _this._Height);
_this.m_Camera.SetSize(_this._Width, _this._Height);
};
this.StartRender = () => {
requestAnimationFrame(this.StartRender);
if (this.m_Scene != null && this.m_bNeedUpdate) {
this.Render();
this.m_bNeedUpdate = false;
this.StartRender = function () {
requestAnimationFrame(_this.StartRender);
if (_this.m_Scene != null && _this.m_bNeedUpdate) {
_this.Render();
_this.m_bNeedUpdate = false;
}
};
this.m_DomEl = canvasContainer;
@ -35,23 +36,23 @@ class Viewer {
this.OnSize();
this.StartRender();
new _1.CameraControls(this);
window.addEventListener("resize", () => {
this.OnSize();
window.addEventListener("resize", function () {
_this.OnSize();
});
let oldMesh;
this.m_Render.domElement.addEventListener("mousemove", (e) => {
let mesh = _1.PointPick(this, e.offsetX, e.offsetY);
var oldMesh;
this.m_Render.domElement.addEventListener("mousemove", function (e) {
var mesh = _1.PointPick(_this, e.offsetX, e.offsetY);
if (oldMesh)
oldMesh.material = _1.boardMaterial;
if (mesh && mesh.material !== ColorPalette_1.ColorMaterial.GetLineMaterial(1)) {
oldMesh = mesh;
mesh.material = _1.selectMaterial;
}
this.m_bNeedUpdate = true;
_this.m_bNeedUpdate = true;
});
}
//初始化render
initRender(canvasContainer) {
Viewer.prototype.initRender = function (canvasContainer) {
this.m_Render = new THREE.WebGLRenderer({
antialias: true,
precision: "highp",
@ -72,69 +73,70 @@ class Viewer {
//设置它的背景色为黑色
this.m_Render.setClearColor(0xffffff, 1);
this.OnSize();
}
Render() {
};
Viewer.prototype.Render = function () {
this.m_Render.render(this.m_Scene, this.m_Camera.Camera);
}
ScreenToWorld(pt, planVec) {
};
Viewer.prototype.ScreenToWorld = function (pt, planVec) {
//变换和求交点
let plan = new PlaneExt_1.PlaneExt(planVec || new THREE.Vector3(0, 0, 1));
let raycaster = new THREE.Raycaster();
var plan = new PlaneExt_1.PlaneExt(planVec || new THREE.Vector3(0, 0, 1));
var raycaster = new THREE.Raycaster();
// 射线从相机射线向屏幕点位置
raycaster.setFromCamera({
x: (pt.x / this._Width) * 2 - 1,
y: -(pt.y / this._Height) * 2 + 1
}, this.m_Camera.Camera);
plan.intersectRay(raycaster.ray, pt, true);
}
WorldToScreen(pt) {
let widthHalf = this._Width * 0.5;
let heightHalf = this._Height * 0.5;
};
Viewer.prototype.WorldToScreen = function (pt) {
var widthHalf = this._Width * 0.5;
var heightHalf = this._Height * 0.5;
pt.project(this.m_Camera.Camera);
pt.x = (pt.x * widthHalf) + widthHalf;
pt.y = -(pt.y * heightHalf) + heightHalf;
}
};
/**
* 更新视角观测目标(物体中心)
*
* @memberof Viewer
*/
UpdateLockTarget() {
let renderList = this.m_Render.renderLists.get(this.m_Scene, this.m_Camera.Camera);
let box = GeUtils_1.GetBoxArr(renderList.opaque.map(o => o.object));
Viewer.prototype.UpdateLockTarget = function () {
var renderList = this.m_Render.renderLists.get(this.m_Scene, this.m_Camera.Camera);
var box = GeUtils_1.GetBoxArr(renderList.opaque.map(function (o) { return o.object; }));
if (box)
this.m_LookTarget = box.getCenter(new THREE.Vector3());
else
this.m_LookTarget = GeUtils_1.cZeroVec;
}
Rotate(mouseMove) {
};
Viewer.prototype.Rotate = function (mouseMove) {
this.m_Camera.Rotate(mouseMove, this.m_LookTarget);
this.m_bNeedUpdate = true;
}
Pan(mouseMove) {
};
Viewer.prototype.Pan = function (mouseMove) {
this.m_Camera.Pan(mouseMove);
this.m_bNeedUpdate = true;
}
Zoom(scale, center) {
};
Viewer.prototype.Zoom = function (scale, center) {
this.m_Camera.Zoom(scale, center);
this.m_bNeedUpdate = true;
}
ZoomAll() {
};
Viewer.prototype.ZoomAll = function () {
this.m_Camera.ZoomExtensBox3(GeUtils_1.GetBox(this.m_Scene, true));
this.m_bNeedUpdate = true;
}
ViewToTop() {
};
Viewer.prototype.ViewToTop = function () {
this.m_Camera.LookAt(new THREE.Vector3(0, 0, -1));
this.m_bNeedUpdate = true;
}
ViewToFront() {
};
Viewer.prototype.ViewToFront = function () {
this.m_Camera.LookAt(new THREE.Vector3(0, 1, 0));
this.m_bNeedUpdate = true;
}
ViewToSwiso() {
};
Viewer.prototype.ViewToSwiso = function () {
this.m_Camera.LookAt(new THREE.Vector3(1, 1, -1));
this.m_bNeedUpdate = true;
}
}
};
return Viewer;
}());
exports.Viewer = Viewer;
//# sourceMappingURL=Viewer.js.map

2
dist/Viewer.js.map vendored
View File

@ -1 +1 @@
{"version":3,"file":"Viewer.js","sourceRoot":"","sources":["../src/Viewer.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"Viewer.js","sourceRoot":"","sources":["../src/Viewer.ts"],"names":[],"mappings":"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"}

135
dist/createBoard.js vendored
View File

@ -1,24 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const THREE = require("three");
const three_1 = require("three");
const ColorPalette_1 = require("./ColorPalette");
const GeUtils_1 = require("./GeUtils");
const Material_1 = require("./Material");
const RotateUV_1 = require("./RotateUV");
const ThreeCSG_1 = require("./ThreeCSG");
var THREE = require("three");
var three_1 = require("three");
var ColorPalette_1 = require("./ColorPalette");
var GeUtils_1 = require("./GeUtils");
var Material_1 = require("./Material");
var RotateUV_1 = require("./RotateUV");
var ThreeCSG_1 = require("./ThreeCSG");
//解析二维圆弧类.
class Arc2d {
constructor(p1, p2, bul) {
var Arc2d = /** @class */ (function () {
function Arc2d(p1, p2, bul) {
this.m_StartPoint = p1.clone();
this.m_EndPoint = p2.clone();
let vec = p2.clone().sub(p1);
let len = vec.length();
let an = vec.angle();
var vec = p2.clone().sub(p1);
var len = vec.length();
var an = vec.angle();
this.m_Radius = len / Math.sin(2 * Math.atan(bul)) / 2;
let allAngle = Math.atan(bul) * 4;
let delDis = bul * len / 2;
let toDis = this.m_Radius - delDis;
var allAngle = Math.atan(bul) * 4;
var delDis = bul * len / 2;
var toDis = this.m_Radius - delDis;
an += Math.PI * 0.5;
this.m_Center = p1.clone().add(p2);
this.m_Center.multiplyScalar(0.5);
@ -31,27 +31,28 @@ class Arc2d {
this.m_EndAn -= Math.PI;
}
}
}
return Arc2d;
}());
exports.Arc2d = Arc2d;
//创建轮廓 通过点表和凸度
function createPath(pts, buls, shapeOut) {
let shape = shapeOut || new three_1.Shape();
var shape = shapeOut || new three_1.Shape();
if (pts.length === 0)
return shape;
let firstPt = pts[0];
var firstPt = pts[0];
shape.moveTo(firstPt.x, firstPt.y);
for (let i = 0; i < pts.length - 1; i++) {
let nextPt = pts[i + 1];
for (var i = 0; i < pts.length - 1; i++) {
var nextPt = pts[i + 1];
if (buls[i] == 0) {
shape.lineTo(nextPt.x, nextPt.y);
}
else {
let pt = pts[i];
var pt = pts[i];
//参考
//http://www.dorodnic.com/blog/tag/three-js/ 绘制一个齿轮
//https://www.kirupa.com/html5/drawing_circles_canvas.htm //html5
let arc2 = new Arc2d(pt, nextPt, buls[i]);
let cen = arc2.m_Center;
var arc2 = new Arc2d(pt, nextPt, buls[i]);
var cen = arc2.m_Center;
shape.absarc(cen.x, cen.y, arc2.m_Radius, arc2.m_StartAn, arc2.m_EndAn, buls[i] < 0);
}
}
@ -64,106 +65,104 @@ function getVec(data) {
exports.getVec = getVec;
//创建板件 暂时这么写
function createBoard(boardData) {
let pts = new Array();
let buls = new Array();
let boardPts = boardData["Pts"];
let boardBuls = boardData["Buls"];
let boardHeight = boardData["H"];
let boardMat = new THREE.Matrix4();
let matInv = new THREE.Matrix4();
var pts = new Array();
var buls = new Array();
var boardPts = boardData["Pts"];
var boardBuls = boardData["Buls"];
var boardHeight = boardData["H"];
var boardMat = new THREE.Matrix4();
var matInv = new THREE.Matrix4();
//InitBoardMat
{
let xD = getVec(boardData["XVec"]);
let yD = getVec(boardData["YVec"]);
let ZD = getVec(boardData["ZVec"]);
let pBase = getVec(boardData["BasePoint"]);
var xD = getVec(boardData["XVec"]);
var yD = getVec(boardData["YVec"]);
var ZD = getVec(boardData["ZVec"]);
var pBase = getVec(boardData["BasePoint"]);
boardMat.makeBasis(xD, yD, ZD);
boardMat.setPosition(pBase);
matInv.getInverse(boardMat, true);
}
if (boardPts && boardPts.length !== 0)
for (let i = 0; i < boardPts.length; i++) {
let pt = getVec(boardPts[i]);
for (var i = 0; i < boardPts.length; i++) {
var pt = getVec(boardPts[i]);
if (boardPts[i].z !== undefined)
pt.applyMatrix4(matInv);
pts.push(new THREE.Vector2(pt.x, pt.y));
buls.push(boardBuls[i]);
}
else {
let length = boardData["L"];
let width = boardData["W"];
let height = boardData["H"];
pts.push(new three_1.Vector2(0, 0), new three_1.Vector2(width, 0), new three_1.Vector2(width, length), new three_1.Vector2(0, length), new three_1.Vector2(0, 0));
var length_1 = boardData["L"];
var width = boardData["W"];
var height = boardData["H"];
pts.push(new three_1.Vector2(0, 0), new three_1.Vector2(width, 0), new three_1.Vector2(width, length_1), new three_1.Vector2(0, length_1), new three_1.Vector2(0, 0));
buls.push(0, 0, 0, 0, 0);
}
let sp = createPath(pts, buls);
let extrudeSettings = {
var sp = createPath(pts, buls);
var extrudeSettings = {
steps: 1,
bevelEnabled: false,
amount: boardHeight
};
let ext = new THREE.ExtrudeGeometry(sp, extrudeSettings);
var ext = new THREE.ExtrudeGeometry(sp, extrudeSettings);
ext.computeBoundingSphere();
ext.computeBoundingBox();
ext.translate(0, 0, -boardHeight);
ext.applyMatrix(boardMat);
//外边.
let edges = [createEdge(ext)];
var edges = [createEdge(ext)];
//差集
if (checkObjectArray(boardData, "SubBoardLocal")
|| checkObjectArray(boardData, "Drillings")) {
let thisCsg = new ThreeCSG_1.ThreeBSP(ext);
var thisCsg = new ThreeCSG_1.ThreeBSP(ext);
if (boardData["SubBoardLocal"]) {
let subBoardList = boardData["SubBoardLocal"].map(d => createBoard(d));
for (let br of subBoardList) {
edges.push(...br.edges);
let subCsg = new ThreeCSG_1.ThreeBSP(br.mesh);
var subBoardList = boardData["SubBoardLocal"].map(function (d) { return createBoard(d); });
for (var _i = 0, subBoardList_1 = subBoardList; _i < subBoardList_1.length; _i++) {
var br = subBoardList_1[_i];
edges.push.apply(edges, br.edges);
var subCsg = new ThreeCSG_1.ThreeBSP(br.mesh);
thisCsg = thisCsg.subtract(subCsg);
}
}
if (boardData["Drillings"]) {
let dris = boardData["Drillings"];
for (let dri of dris) {
let geo = new three_1.CylinderGeometry(dri.r, dri.r, dri.h, 8);
var dris = boardData["Drillings"];
for (var _a = 0, dris_1 = dris; _a < dris_1.length; _a++) {
var dri = dris_1[_a];
var geo = new three_1.CylinderGeometry(dri.r, dri.r, dri.h, 8);
geo.rotateX(Math.PI * 0.5);
if (dri.f === 0) //0正
geo.translate(dri.x, dri.y, -dri.h * 0.5);
else //1反
geo.translate(dri.x, dri.y, dri.h * 0.5 - boardData["H"]);
geo.applyMatrix(boardMat);
let mesh = new three_1.Mesh(geo, ColorPalette_1.ColorMaterial.GetLineMaterial(1));
edges.push(mesh);
// let edge = createEdge(geo);
// edge.material = new LineBasicMaterial({ color: new Color(1, 0, 0) });
// edges.push(edge);
// let subCsg = new ThreeBSP(geo);
// thisCsg = thisCsg.subtract(subCsg);
var mesh_1 = new three_1.Mesh(geo, ColorPalette_1.ColorMaterial.GetLineMaterial(1));
edges.push(mesh_1);
}
}
ext = thisCsg.toGeometry();
}
if (boardData["BoardName"] === "地脚线")
RotateUV_1.RotateUVs(ext);
let mesh = new THREE.Mesh(ext, Material_1.boardMaterial);
return { mesh, edges };
var mesh = new THREE.Mesh(ext, Material_1.boardMaterial);
return { mesh: mesh, edges: edges };
}
exports.createBoard = createBoard;
function checkObjectArray(obj, key) {
return obj[key] && obj[key].length > 0;
}
function createTemplateBoard(brDataList) {
let meshs = [];
let edgesa = [];
for (let d of brDataList) {
let { mesh, edges } = createBoard(d);
var meshs = [];
var edgesa = [];
for (var _i = 0, brDataList_1 = brDataList; _i < brDataList_1.length; _i++) {
var d = brDataList_1[_i];
var _a = createBoard(d), mesh = _a.mesh, edges = _a.edges;
meshs.push(mesh);
edgesa.push(...edges);
edgesa.push.apply(edgesa, edges);
}
return { meshs, edgesa };
return { meshs: meshs, edgesa: edgesa };
}
exports.createTemplateBoard = createTemplateBoard;
function createEdge(geo) {
let edge = new THREE.EdgesGeometry(geo, 1);
var edge = new THREE.EdgesGeometry(geo, 1);
return new three_1.LineSegments(edge, Material_1.edgeMaterial);
}
exports.createEdge = createEdge;

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
{
"name": "cadview",
"version": "1.1.5",
"version": "1.1.6",
"description": "",
"main": "dist/index.js",
"types": "dist/index.d.ts",

View File

@ -4,7 +4,7 @@
"sourceMap": true,
"declaration": true,
"outDir": "./dist",
"target": "esnext",
"target": "es5",
"lib": [
"es2017",
"dom"

File diff suppressed because one or more lines are too long