@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
32 lines (27 loc) • 1.05 kB
text/typescript
import {BufferGeometry} from 'three';
import {TetGeometry} from '../TetGeometry';
import {BaseSopOperation} from '../../../../../engine/operations/sop/_Base';
import {ObjectType} from '../../../Constant';
import {TetTesselationParams} from '../TetCommon';
import {SphereBuilder} from '../../../builders/SphereBuilder';
import {CoreGeometryBuilderMerge} from '../../three/builders/Merge';
export function tetToSphere(tetGeometry: TetGeometry, tesselationParams: TetTesselationParams) {
const {tetrahedrons} = tetGeometry;
const geometries: BufferGeometry[] = [];
tetrahedrons.forEach((tet) => {
const {radius, center} = tet.sphere;
const geometry = SphereBuilder.create({
radius: radius,
widthSegments: 32,
heightSegments: 32,
asLines: true,
open: false,
});
geometry.translate(center.x, center.y, center.z);
geometries.push(geometry);
});
const mergedGeometry = CoreGeometryBuilderMerge.merge(geometries);
if (mergedGeometry) {
return BaseSopOperation.createObject(mergedGeometry, ObjectType.LINE_SEGMENTS);
}
}