1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /**
- * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
- *
- * @author Alexander Rose <alexander.rose@weirdbyte.de>
- */
- import { Vec3 } from 'mol-math/linear-algebra';
- import { Box3D } from 'mol-math/geometry';
- import { MeshBuilder } from '../mesh-builder';
- import { CylinderProps } from '../../../primitive/cylinder';
- import { addCylinder } from './cylinder';
- import { addSphere } from './sphere';
- const tmpStart = Vec3.zero()
- const tmpEnd = Vec3.zero()
- const cylinderProps: CylinderProps = {}
- export function addBoundingBox(state: MeshBuilder.State, box: Box3D, radius: number, detail: number, radialSegments: number) {
- const { min, max } = box
- cylinderProps.radiusTop = radius
- cylinderProps.radiusBottom = radius
- cylinderProps.radialSegments = radialSegments
- Vec3.set(tmpStart, max[0], max[1], max[2])
- addSphere(state, tmpStart, radius, detail)
- Vec3.set(tmpEnd, max[0], max[1], min[2])
- addCylinder(state, tmpStart, tmpEnd, 1, cylinderProps)
- Vec3.set(tmpEnd, max[0], min[1], max[2])
- addCylinder(state, tmpStart, tmpEnd, 1, cylinderProps)
- Vec3.set(tmpEnd, min[0], max[1], max[2])
- addCylinder(state, tmpStart, tmpEnd, 1, cylinderProps)
- Vec3.set(tmpStart, min[0], min[1], min[2])
- addSphere(state, tmpStart, radius, detail)
- Vec3.set(tmpEnd, min[0], min[1], max[2])
- addCylinder(state, tmpStart, tmpEnd, 1, cylinderProps)
- Vec3.set(tmpEnd, min[0], max[1], min[2])
- addCylinder(state, tmpStart, tmpEnd, 1, cylinderProps)
- Vec3.set(tmpEnd, max[0], min[1], min[2])
- addCylinder(state, tmpStart, tmpEnd, 1, cylinderProps)
- Vec3.set(tmpStart, max[0], min[1], min[2])
- addSphere(state, tmpStart, radius, detail)
- Vec3.set(tmpEnd, max[0], min[1], max[2])
- addCylinder(state, tmpStart, tmpEnd, 1, cylinderProps)
- Vec3.set(tmpEnd, max[0], max[1], min[2])
- addCylinder(state, tmpStart, tmpEnd, 1, cylinderProps)
- Vec3.set(tmpStart, min[0], min[1], max[2])
- addSphere(state, tmpStart, radius, detail)
- Vec3.set(tmpEnd, min[0], max[1], max[2])
- addCylinder(state, tmpStart, tmpEnd, 1, cylinderProps)
- Vec3.set(tmpEnd, max[0], min[1], max[2])
- addCylinder(state, tmpStart, tmpEnd, 1, cylinderProps)
- Vec3.set(tmpStart, min[0], max[1], min[2])
- addSphere(state, tmpStart, radius, detail)
- Vec3.set(tmpEnd, max[0], max[1], min[2])
- addSphere(state, tmpEnd, radius, detail)
- addCylinder(state, tmpStart, tmpEnd, 1, cylinderProps)
- Vec3.set(tmpEnd, min[0], max[1], max[2])
- addSphere(state, tmpEnd, radius, detail)
- addCylinder(state, tmpStart, tmpEnd, 1, cylinderProps)
- }
|