{ "code": "export class MatrixTransform {\r\n static WorldToScreen2(camera, point) {\r\n var pointA = this.InverseTransformPoint(camera.transform, point);\r\n var distance = pointA.z;\r\n var out = new Laya.Vector3();\r\n camera.viewport.project(point, camera.projectionViewMatrix, out);\r\n var value = new Laya.Vector3(out.x / Laya.stage.clientScaleX, out.y / Laya.stage.clientScaleY, distance);\r\n return value;\r\n }\r\n static ScreenToWorld(camera, point) {\r\n var halfFOV = (camera.fieldOfView * 0.5) * Math.PI / 180;\r\n let height = point.z * Math.tan(halfFOV);\r\n let width = height * camera.aspectRatio;\r\n let lowerLeft = this.GetLowerLeft(camera.transform, point.z, width, height);\r\n let v = this.GetScreenScale(width, height);\r\n var value = new Laya.Vector3();\r\n var lowerLeftA = this.InverseTransformPoint(camera.transform, lowerLeft);\r\n value = new Laya.Vector3(-point.x / v.x, point.y / v.y, 0);\r\n Laya.Vector3.add(lowerLeftA, value, value);\r\n value = this.TransformPoint(camera.transform, value);\r\n return value;\r\n }\r\n static GetScreenScale(width, height) {\r\n var v = new Laya.Vector3();\r\n v.x = Laya.stage.width / width / 2;\r\n v.y = Laya.stage.height / height / 2;\r\n return v;\r\n }\r\n static GetLowerLeft(transform, distance, width, height) {\r\n var lowerLeft = new Laya.Vector3();\r\n var right = new Laya.Vector3();\r\n transform.getRight(right);\r\n Laya.Vector3.normalize(right, right);\r\n var xx = new Laya.Vector3(right.x * width, right.y * width, right.z * width);\r\n Laya.Vector3.add(transform.position, xx, lowerLeft);\r\n var up = new Laya.Vector3();\r\n transform.getUp(up);\r\n Laya.Vector3.normalize(up, up);\r\n var yy = new Laya.Vector3(up.x * height, up.y * height, up.z * height);\r\n Laya.Vector3.subtract(lowerLeft, yy, lowerLeft);\r\n var forward = new Laya.Vector3();\r\n transform.getForward(forward);\r\n Laya.Vector3.normalize(forward, forward);\r\n var zz = new Laya.Vector3(forward.x * distance, forward.y * distance, forward.z * distance);\r\n Laya.Vector3.subtract(lowerLeft, zz, lowerLeft);\r\n return lowerLeft;\r\n }\r\n static InverseTransformPoint(origin, point) {\r\n var xx = new Laya.Vector3();\r\n origin.getRight(xx);\r\n var yy = new Laya.Vector3();\r\n origin.getUp(yy);\r\n var zz = new Laya.Vector3();\r\n origin.getForward(zz);\r\n var zz1 = new Laya.Vector3(-zz.x, -zz.y, -zz.z);\r\n var x = this.ProjectDistance(point, origin.position, xx);\r\n var y = this.ProjectDistance(point, origin.position, yy);\r\n var z = this.ProjectDistance(point, origin.position, zz1);\r\n var value = new Laya.Vector3(x, y, z);\r\n return value;\r\n }\r\n static TransformPoint(origin, point) {\r\n var value = new Laya.Vector3();\r\n Laya.Vector3.transformQuat(point, origin.rotation, value);\r\n Laya.Vector3.add(value, origin.position, value);\r\n return value;\r\n }\r\n static ProjectDistance(A, C, B) {\r\n var CA = new Laya.Vector3();\r\n Laya.Vector3.subtract(A, C, CA);\r\n var angle = this.Angle2(CA, B) * Math.PI / 180;\r\n var distance = Laya.Vector3.distance(A, C);\r\n distance *= Math.cos(angle);\r\n return distance;\r\n }\r\n static Angle2(ma, mb) {\r\n var v1 = (ma.x * mb.x) + (ma.y * mb.y) + (ma.z * mb.z);\r\n var ma_val = Math.sqrt(ma.x * ma.x + ma.y * ma.y + ma.z * ma.z);\r\n var mb_val = Math.sqrt(mb.x * mb.x + mb.y * mb.y + mb.z * mb.z);\r\n var cosM = v1 / (ma_val * mb_val);\r\n if (cosM < -1)\r\n cosM = -1;\r\n if (cosM > 1)\r\n cosM = 1;\r\n var angleAMB = Math.acos(cosM) * 180 / Math.PI;\r\n return angleAMB;\r\n }\r\n}\r\n//# sourceMappingURL=MatrixTransform.js.map", "references": [], "map": "{\"version\":3,\"file\":\"MatrixTransform.js\",\"sourceRoot\":\"\",\"sources\":[\"../../../src/Util/MatrixTransform.ts\"],\"names\":[],\"mappings\":\"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\"}" }