| // Copyright (c) 2015, Google Inc. Please see the AUTHORS file for details. |
| // All rights reserved. Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| library vector_math.mesh_generator; |
| |
| import 'dart:convert'; |
| import 'package:vector_math/vector_math_geometry.dart'; |
| |
| typedef MeshGeometry GenerateFunction(List<String> args); |
| |
| MeshGeometry generateCube(List<String> args) { |
| if (args.length != 3) { |
| return null; |
| } |
| final double width = double.parse(args[0]); |
| final double height = double.parse(args[1]); |
| final double depth = double.parse(args[2]); |
| final CubeGenerator generator = new CubeGenerator(); |
| return generator.createCube(width, height, depth); |
| } |
| |
| MeshGeometry generateSphere(List<String> args) { |
| if (args.length != 1) { |
| return null; |
| } |
| final double radius = double.parse(args[0]); |
| final SphereGenerator generator = new SphereGenerator(); |
| return generator.createSphere(radius); |
| } |
| |
| MeshGeometry generateCircle(List<String> args) { |
| if (args.length != 1) { |
| return null; |
| } |
| final double radius = double.parse(args[0]); |
| final CircleGenerator generator = new CircleGenerator(); |
| return generator.createCircle(radius); |
| } |
| |
| MeshGeometry generateCylinder(List<String> args) { |
| if (args.length != 3) { |
| return null; |
| } |
| final double topRadius = double.parse(args[0]); |
| final double bottomRadius = double.parse(args[1]); |
| final double height = double.parse(args[2]); |
| final CylinderGenerator generator = new CylinderGenerator(); |
| return generator.createCylinder(topRadius, bottomRadius, height); |
| } |
| |
| MeshGeometry generateRing(List<String> args) { |
| if (args.length != 2) { |
| return null; |
| } |
| final double innerRadius = double.parse(args[0]); |
| final double outerRadius = double.parse(args[1]); |
| final RingGenerator generator = new RingGenerator(); |
| return generator.createRing(innerRadius, outerRadius); |
| } |
| |
| Map<String, GenerateFunction> generators = <String, GenerateFunction>{ |
| 'cube': generateCube, |
| 'sphere': generateSphere, |
| 'circle': generateCircle, |
| 'cylinder': generateCylinder, |
| 'ring': generateRing |
| }; |
| |
| void main(List<String> args_) { |
| final List<String> args = new List<String>.from(args_, growable: true); |
| |
| if (args.isEmpty) { |
| print('mesh_generator.dart <type> [<arg0> ... <argN>]'); |
| print(''); |
| print('<type> = cube, sphere, cylinder'); |
| print('mesh_generator.dart cube width height depth'); |
| print('mesh_generator.dart sphere radius'); |
| print('mesh_generator.dart circle radius'); |
| print('mesh_generator.dart cylinder topRadius bottomRadius height'); |
| print('mesh_generator.dart ring innerRadius outerRadius'); |
| print(''); |
| return; |
| } |
| final String type = args.removeAt(0); |
| final GenerateFunction generator = generators[type]; |
| if (generator == null) { |
| print('Could not find generator for $type'); |
| return; |
| } |
| final MeshGeometry geometry = generator(args); |
| if (geometry == null) { |
| print('Error generating geometry for $type'); |
| return; |
| } |
| print(JSON.encode(geometry)); |
| } |