Browse Source

嘉兴测试

jx-test
yuliang 5 months ago
parent
commit
1d059d41b4
  1. 176
      src/modules/amr/cc/cc5/CC53DGraphics.ts

176
src/modules/amr/cc/cc5/CC53DGraphics.ts

@ -1,42 +1,37 @@
import * as THREE from "three"; import * as THREE from "three";
import {CSG} from "three-csg-ts"; import {CSG} from "three-csg-ts";
//@ts-ignore //@ts-ignore
import { mergeGeometries } from 'three/addons/utils/BufferGeometryUtils.js' import {mergeGeometries} from 'three/addons/utils/BufferGeometryUtils.js'
export default class CC53DGraphics { export default class CC53DGraphics {
// 创建cc5的底座 // 创建cc5的底座
static createCC5Pedestal(): THREE.BufferGeometry { static createCC5Pedestal(): THREE.BufferGeometry {
const width = 1.65 const width = 2.15
const depth = 1.65 const lw = 0.2
const rw = width - lw
const depth = 1.5
const dd = 0.05 const dd = 0.05
const bd = 0.175 const bd = 0.15
const shape = new THREE.Shape() const shape = new THREE.Shape()
shape.moveTo(-width / 2, -depth / 2 + bd)
shape.lineTo(-width / 2 + bd, -depth / 2) shape.moveTo(-lw, -depth / 2)
shape.lineTo(width / 2 - bd, -depth / 2) shape.lineTo(rw - bd, -depth / 2)
shape.lineTo(width / 2, -depth / 2 + bd)
shape.moveTo(rw - bd, -depth / 2 + bd) // 起点在圆心
shape.lineTo(width / 2, -0.285) shape.absarc(rw - bd, -depth / 2 + bd, bd, Math.PI / 2 * 3, Math.PI * 2, false)
shape.lineTo(-0.475, -0.285) shape.moveTo(rw, -depth / 2 + bd)
shape.lineTo(-0.475, -0.125) shape.lineTo(rw, depth / 2 - bd)
shape.lineTo(width / 2, -0.125) shape.moveTo(rw - bd, depth / 2 - bd) // 起点在圆心
shape.lineTo(width / 2, 0.125) shape.absarc(rw - bd, depth / 2 - bd, bd, 0, Math.PI / 2, false) // 从0到π绘制半圆
shape.lineTo(-0.475, 0.125) shape.lineTo(-lw, depth / 2)
shape.lineTo(-0.475, 0.285)
shape.lineTo(width / 2, 0.285)
shape.lineTo(width / 2, depth / 2 - bd)
shape.lineTo(width / 2 - bd, depth / 2)
shape.lineTo(-width / 2 + bd, depth / 2)
shape.lineTo(-width / 2, depth / 2 - bd)
shape.closePath() // 闭合路径 shape.closePath() // 闭合路径
// 拉伸轨迹线 // 拉伸轨迹线
const curve = new THREE.CatmullRomCurve3( const curve = new THREE.CatmullRomCurve3(
[new THREE.Vector3(0, 0.02, 0), new THREE.Vector3(0, 0.22, 0)], [new THREE.Vector3(0, 0.04, 0), new THREE.Vector3(0, 0.43, 0)],
false, // 闭合曲线 false, // 闭合曲线
'catmullrom', 'catmullrom',
0 0
@ -76,15 +71,15 @@ export default class CC53DGraphics {
const positionDs: THREE.Vector3[] = [ const positionDs: THREE.Vector3[] = [
new THREE.Vector3(-width / 2, 0.20, -depth / 2 + bd), new THREE.Vector3(-lw, 0.20, -depth / 2 + bd),
new THREE.Vector3(-width / 2 + bd, 0.20, -depth / 2), new THREE.Vector3(-lw + bd, 0.20, -depth / 2),
new THREE.Vector3(width / 2 - bd, 0.20, -depth / 2), new THREE.Vector3(rw - bd, 0.20, -depth / 2),
new THREE.Vector3(width / 2, 0.20, -depth / 2 + bd), new THREE.Vector3(rw, 0.20, -depth / 2 + bd),
new THREE.Vector3(width / 2, 0.20, depth / 2 - bd), new THREE.Vector3(rw, 0.20, depth / 2 - bd),
new THREE.Vector3(width / 2 - bd, 0.20, depth / 2), new THREE.Vector3(rw - bd, 0.20, depth / 2),
new THREE.Vector3(-width / 2 + bd, 0.20, depth / 2), new THREE.Vector3(-lw + bd, 0.20, depth / 2),
new THREE.Vector3(-width / 2, 0.20, depth / 2 - bd), new THREE.Vector3(-lw, 0.20, depth / 2 - bd),
new THREE.Vector3(-width / 2, 0.20, -depth / 2 + bd) new THREE.Vector3(-lw, 0.20, -depth / 2 + bd)
] ]
let result: THREE.Mesh = mesh let result: THREE.Mesh = mesh
@ -112,36 +107,37 @@ export default class CC53DGraphics {
meshD.updateMatrix() meshD.updateMatrix()
result = CSG.subtract(result, meshD) result = CSG.subtract(result, meshD)
} }
result.geometry.rotateY(-Math.PI / 2)
return result.geometry return result.geometry
} }
// 创建cc5的立柱 // 创建cc5的立柱
static createCC5Pillar(): THREE.BufferGeometry { static createCC5Pillar(): THREE.BufferGeometry {
// 606.5 // 606.5
const width = 0.3 const width = 0.46
const depth = 1.188 const depth = 1.45
const dd = 0.05 const dd = 0.05
const shape = new THREE.Shape() const shape = new THREE.Shape()
shape.moveTo(-0.744, -0.594 + dd) shape.moveTo(-0.04, -depth / 2 + dd)
shape.lineTo(-0.744 + dd, -0.594) shape.lineTo(-0.04 + dd, -depth / 2)
shape.lineTo(-0.744 + width - dd, -0.594) shape.lineTo(-0.04 + width - dd, -depth / 2)
shape.lineTo(-0.744 + width, -0.594 + dd) shape.lineTo(-0.04 + width, -depth / 2 + dd)
shape.lineTo(-0.744 + width, -0.4) shape.lineTo(-0.04 + width, -0.4)
shape.lineTo(-0.744 + width - 0.08, -0.4) shape.lineTo(-0.04 + width - 0.08, -0.4)
shape.lineTo(-0.744 + width - 0.08, 0.4) shape.lineTo(-0.04 + width - 0.08, 0.4)
shape.lineTo(-0.744 + width, 0.4) shape.lineTo(-0.04 + width, 0.4)
shape.lineTo(-0.744 + width, -0.594 + depth - dd) shape.lineTo(-0.04 + width, -depth / 2 + depth - dd)
shape.lineTo(-0.744 + width - dd, -0.594 + depth) shape.lineTo(-0.04 + width - dd, -depth / 2 + depth)
shape.lineTo(-0.744 + dd, -0.594 + depth) shape.lineTo(-0.04 + dd, -depth / 2 + depth)
shape.lineTo(-0.744, -0.594 + depth - dd) shape.lineTo(-0.04, -depth / 2 + depth - dd)
// shape.lineTo(-0.728, -0.594 + dd); // shape.lineTo(-0.728, -depth / 2 + dd);
// shape.closePath() // shape.closePath()
// 拉伸轨迹线 // 拉伸轨迹线
const curve = new THREE.CatmullRomCurve3( const curve = new THREE.CatmullRomCurve3(
[new THREE.Vector3(0, 0.22, 0), new THREE.Vector3(0, 3.357, 0)], [new THREE.Vector3(0, 0.43, 0), new THREE.Vector3(0, 4.922, 0)],
false, // 闭合曲线 false, // 闭合曲线
'catmullrom', 'catmullrom',
0 0
@ -157,42 +153,46 @@ export default class CC53DGraphics {
// 创建挤出几何体 // 创建挤出几何体
// const material = new THREE.MeshBasicMaterial({color: 0xffdddbca}); // const material = new THREE.MeshBasicMaterial({color: 0xffdddbca});
// const mesh = new THREE.Mesh(geometry, material); // const mesh = new THREE.Mesh(geometry, material);
return new THREE.ExtrudeGeometry(shape, options) const geometry = new THREE.ExtrudeGeometry(shape, options)
geometry.rotateY(-Math.PI / 2)
return geometry
} }
// 创建cc5的叉 // 创建cc5的叉
static createCC5Fork(): THREE.BufferGeometry { static createCC5Fork(): THREE.BufferGeometry {
// 606.5 // 606.5
const width = 0.3 const width = 0.46
const depth = 1.188 const depth = 1.45
const dd = 0.05 const dd = 0.05
const fdx = 0.06 const fdx = 0.06
const fdy = 0.03 const fdy = 0.03
const shape = new THREE.Shape() const shape = new THREE.Shape()
shape.moveTo(-0.744 + width - 0.08, -0.4) const dx = 1.24
shape.lineTo(-0.744 + width + 0.02, -0.4)
shape.lineTo(-0.744 + width + 0.02, -0.275) shape.moveTo(-0.04 + width - 0.08, -0.4)
shape.lineTo(-0.744 + width + 0.02 + 1.24 - fdx, -0.275) shape.lineTo(-0.04 + width + 0.02, -0.4)
shape.lineTo(-0.744 + width + 0.02 + 1.24, -0.275 + fdy) shape.lineTo(-0.04 + width + 0.02, -0.275)
shape.lineTo(-0.744 + width + 0.02 + 1.24, -0.135 - fdy) shape.lineTo(-0.04 + width + 0.02 + 1.24 - fdx, -0.275)
shape.lineTo(-0.744 + width + 0.02 + 1.24 - fdx, -0.135) shape.lineTo(-0.04 + width + 0.02 + 1.24, -0.275 + fdy)
shape.lineTo(-0.744 + width + 0.02, -0.135) shape.lineTo(-0.04 + width + 0.02 + 1.24, -0.135 - fdy)
shape.lineTo(-0.744 + width + 0.02, 0.135) shape.lineTo(-0.04 + width + 0.02 + 1.24 - fdx, -0.135)
shape.lineTo(-0.744 + width + 0.02 + 1.24 - fdx, 0.135) shape.lineTo(-0.04 + width + 0.02, -0.135)
shape.lineTo(-0.744 + width + 0.02 + 1.24, 0.135 + fdy) shape.lineTo(-0.04 + width + 0.02, 0.135)
shape.lineTo(-0.744 + width + 0.02 + 1.24, 0.275 - fdy) shape.lineTo(-0.04 + width + 0.02 + 1.24 - fdx, 0.135)
shape.lineTo(-0.744 + width + 0.02 + 1.24 - fdx, 0.275) shape.lineTo(-0.04 + width + 0.02 + 1.24, 0.135 + fdy)
shape.lineTo(-0.744 + width + 0.02, 0.275) shape.lineTo(-0.04 + width + 0.02 + 1.24, 0.275 - fdy)
shape.lineTo(-0.744 + width + 0.02, 0.4) shape.lineTo(-0.04 + width + 0.02 + 1.24 - fdx, 0.275)
shape.lineTo(-0.744 + width - 0.08, 0.4) shape.lineTo(-0.04 + width + 0.02, 0.275)
shape.lineTo(-0.04 + width + 0.02, 0.4)
shape.lineTo(-0.04 + width - 0.08, 0.4)
shape.closePath() shape.closePath()
// 拉伸轨迹线 // 拉伸轨迹线
const curve = new THREE.CatmullRomCurve3( const curve = new THREE.CatmullRomCurve3(
[new THREE.Vector3(0, 0.02, 0), new THREE.Vector3(0, 1.287, 0)], [new THREE.Vector3(dx, 0.45, 0), new THREE.Vector3(dx, 1.287, 0)],
false, // 闭合曲线 false, // 闭合曲线
'catmullrom', 'catmullrom',
0 0
@ -214,15 +214,15 @@ export default class CC53DGraphics {
const shapeD = new THREE.Shape() const shapeD = new THREE.Shape()
shapeD.moveTo(-0.744 + width + 0.02, -0.3) shapeD.moveTo(-0.04 + width + 0.02, -0.3)
shapeD.lineTo(-0.744 + width + 0.02 + 1.3, -0.3) shapeD.lineTo(-0.04 + width + 0.02 + 1.3, -0.3)
shapeD.lineTo(-0.744 + width + 0.02 + 1.3, 0.3) shapeD.lineTo(-0.04 + width + 0.02 + 1.3, 0.3)
shapeD.lineTo(-0.744 + width + 0.02, 0.3) shapeD.lineTo(-0.04 + width + 0.02, 0.3)
shape.closePath() shape.closePath()
// 拉伸轨迹线 // 拉伸轨迹线
const curveD = new THREE.CatmullRomCurve3( const curveD = new THREE.CatmullRomCurve3(
[new THREE.Vector3(0, 0.07, 0), new THREE.Vector3(0, 1.3, 0)], [new THREE.Vector3(dx, 0.5, 0), new THREE.Vector3(dx, 1.3, 0)],
false, // 闭合曲线 false, // 闭合曲线
'catmullrom', 'catmullrom',
0 0
@ -252,6 +252,7 @@ export default class CC53DGraphics {
const width = 0.08 const width = 0.08
const depth = 0.9 const depth = 0.9
const dd = 0.02 const dd = 0.02
const dx = 1.24
const shape = new THREE.Shape() const shape = new THREE.Shape()
shape.moveTo(-width / 2, -depth / 2 + dd) shape.moveTo(-width / 2, -depth / 2 + dd)
shape.lineTo(-width / 2 + dd, -depth / 2) shape.lineTo(-width / 2 + dd, -depth / 2)
@ -271,25 +272,25 @@ export default class CC53DGraphics {
const geometries: THREE.BufferGeometry[] = [] const geometries: THREE.BufferGeometry[] = []
const curveL1 = new THREE.CatmullRomCurve3( const curveL1 = new THREE.CatmullRomCurve3(
[new THREE.Vector3(-0.35 + (isLeft ? 0.05 : 0), 0, 0), new THREE.Vector3(-0.30 + (isLeft ? 0.05 : 0), 0, 0)], [new THREE.Vector3(-0.35 + (isLeft ? 0.05 : 0) + dx, 0, 0), new THREE.Vector3(-0.30 + (isLeft ? 0.05 : 0) + dx, 0, 0)],
false, // 闭合曲线 false, // 闭合曲线
'catmullrom', 'catmullrom',
0 0
) )
const curveL2 = new THREE.CatmullRomCurve3( const curveL2 = new THREE.CatmullRomCurve3(
[new THREE.Vector3(-0.15 + (isLeft ? 0.05 : 0), 0, 0), new THREE.Vector3(-0.1 + (isLeft ? 0.05 : 0), 0, 0)], [new THREE.Vector3(-0.15 + (isLeft ? 0.05 : 0) + dx, 0, 0), new THREE.Vector3(-0.1 + (isLeft ? 0.05 : 0) + dx, 0, 0)],
false, // 闭合曲线 false, // 闭合曲线
'catmullrom', 'catmullrom',
0 0
) )
const curveL3 = new THREE.CatmullRomCurve3( const curveL3 = new THREE.CatmullRomCurve3(
[new THREE.Vector3(0.15 - (isLeft ? 0.05 : 0), 0, 0), new THREE.Vector3(0.1 - (isLeft ? 0.05 : 0), 0, 0)], [new THREE.Vector3(0.15 - (isLeft ? 0.05 : 0) + dx, 0, 0), new THREE.Vector3(0.1 - (isLeft ? 0.05 : 0) + dx, 0, 0)],
false, // 闭合曲线 false, // 闭合曲线
'catmullrom', 'catmullrom',
0 0
) )
const curveL4 = new THREE.CatmullRomCurve3( const curveL4 = new THREE.CatmullRomCurve3(
[new THREE.Vector3(0.30 - (isLeft ? 0.05 : 0), 0, 0), new THREE.Vector3(0.35 - (isLeft ? 0.05 : 0), 0, 0)], [new THREE.Vector3(0.30 - (isLeft ? 0.05 : 0) + dx, 0, 0), new THREE.Vector3(0.35 - (isLeft ? 0.05 : 0) + dx, 0, 0)],
false, // 闭合曲线 false, // 闭合曲线
'catmullrom', 'catmullrom',
0 0
@ -297,19 +298,19 @@ export default class CC53DGraphics {
if (!isLeft) { if (!isLeft) {
const curveBar1 = new THREE.CatmullRomCurve3( const curveBar1 = new THREE.CatmullRomCurve3(
[new THREE.Vector3(-0.36, -0.4, 0), new THREE.Vector3(0.36, -0.4, 0)], [new THREE.Vector3(-0.36 + dx, -0.4, 0), new THREE.Vector3(0.36 + dx, -0.4, 0)],
false, // 闭合曲线 false, // 闭合曲线
'catmullrom', 'catmullrom',
0 0
) )
const curveBar2 = new THREE.CatmullRomCurve3( const curveBar2 = new THREE.CatmullRomCurve3(
[new THREE.Vector3(-0.36, 0, 0), new THREE.Vector3(0.36, 0, 0)], [new THREE.Vector3(-0.36 + dx, 0, 0), new THREE.Vector3(0.36 + dx, 0, 0)],
false, // 闭合曲线 false, // 闭合曲线
'catmullrom', 'catmullrom',
0 0
) )
const curveBar3 = new THREE.CatmullRomCurve3( const curveBar3 = new THREE.CatmullRomCurve3(
[new THREE.Vector3(-0.36, 0.4, 0), new THREE.Vector3(0.36, 0.4, 0)], [new THREE.Vector3(-0.36 + dx, 0.4, 0), new THREE.Vector3(0.36 + dx, 0.4, 0)],
false, // 闭合曲线 false, // 闭合曲线
'catmullrom', 'catmullrom',
0 0
@ -368,16 +369,17 @@ export default class CC53DGraphics {
const dd = 0.05 const dd = 0.05
const fdx = 0.06 const fdx = 0.06
const fdy = 0.03 const fdy = 0.03
const dx = 1.24
const shape = new THREE.Shape(); const shape = new THREE.Shape();
shape.moveTo(-0.744 + 0.1, -0.5); shape.moveTo(-0.04 + 0.1, -0.5);
shape.lineTo(-0.744 + 0.1, 0.5); shape.lineTo(-0.04 + 0.1, 0.5);
shape.lineTo(-0.744 + 0.2, 0.5); shape.lineTo(-0.04 + 0.2, 0.5);
shape.lineTo(-0.744 + 0.2, -0.5); shape.lineTo(-0.04 + 0.2, -0.5);
shape.closePath() shape.closePath()
const curve = new THREE.CatmullRomCurve3( const curve = new THREE.CatmullRomCurve3(
[new THREE.Vector3(0, -1.5/*0.02*/, 0), new THREE.Vector3(0, 1.287, 0)], [new THREE.Vector3(dx, -1.5/*0.02*/, 0), new THREE.Vector3(dx, 1.287, 0)],
false, // 闭合曲线 false, // 闭合曲线
'catmullrom', 'catmullrom',
0 0

Loading…
Cancel
Save