function makeObject(name, viewInfo, sizes = []) { views = {}; Object.entries(viewInfo).forEach(([key, value]) => { views[key] = { attributes: { height: { name: "Height", power: 1, type: "length", base: value.height } }, image: value.image, name: value.name, rename: value.rename } if (value.mass) { views[key].attributes.mass = { name: "Mass", power: 3, type: "mass", base: value.mass }; } if (value.volume) { views[key].attributes.capacity = { name: "Volume", power: 3, type: "volume", base: value.volume } } if (value.energy) { views[key].attributes.capacity = { name: "Energy", power: 3, type: "energy", base: value.energy } } }); return makeEntity({ name: name }, views, sizes); } function makeHeight(info, category, prefix = "", type = "objects", rename = true) { const views = {}; info.forEach(object => { let src; // this lets us provide our own source if needed // useful for reusing existing art if (object[3]) { src = object[3]; } else { src = "./media/" + type + "/" + category.replace(/ /g, "-").toLowerCase() + "/" + prefix + object[0] + ".svg"; } views[object[0]] = { height: math.unit(object[1], object[2]), image: { source: src }, name: rename ? object[0].replace(/-/g, " ").replace(/\b\w/g, x => x.toUpperCase()).replace(/'[A-Z]/g, x => x.toLowerCase()) : object[0], rename: true } if (object[4] !== undefined) { views[object[0]].volume = object[4] } }); return { name: category, constructor: () => makeObject( category, views ) } } function makeHeightWeight(info, category, prefix = "", type = "objects") { const views = {}; info.forEach(object => { let src; // this lets us provide our own source if needed // useful for reusing existing art if (object[5]) { src = object[5]; } else { src = "./media/" + type + "/" + category.replace(/ /g, "-").toLowerCase() + "/" + prefix + object[0] + ".svg"; } views[object[0]] = { height: math.unit(object[1], object[2]), mass: math.unit(object[3], object[4]), image: { source: src }, name: object[0].replace(/-/g, " ").replace(/\b\w/g, x => x.toUpperCase()), rename: true } }); return { name: category, constructor: () => makeObject( category, views ) } } function makeHeightWeightSphere(info, category, prefix = "", type = "objects") { const views = {}; info.forEach(object => { let src; // this lets us provide our own source if needed // useful for reusing existing art if (object[5]) { src = object[5]; } else { src = "./media/" + type + "/" + category.replace(/ /g, "-").toLowerCase() + "/" + prefix + object[0] + ".svg"; } views[object[0]] = { height: math.unit(object[1], object[2]), mass: math.unit(object[3], object[4]), volume: math.unit(Math.PI * 4 / 3 * Math.pow((object[1]/2), 3), object[2] + "^3"), image: { source: src }, name: object[0].replace(/-/g, " ").replace(/\b\w/g, x => x.toUpperCase()), rename: true } if (object[6]) { views[object[0]].image.extra = object[6] views[object[0]].image.bottom = object[7] } }); return { name: category, constructor: () => makeObject( category, views ) } } function makeModel(data) { const views = {}; const forms = {}; data.forms.forEach(form => { forms[form.name] = { name: form.name, rename: true } form.views.forEach(view => { const viewId = form.name + view.name views[viewId] = { name: view.name, attributes: { height: { name: "Height", power: 1, type: "length", base: math.unit(view.height, "meters") } }, form: form.name } if (view.area) { views[viewId].attributes["area"] = { name: "Area", power: 2, type: "area", base: math.unit(view.area, "m^2") } } if (view.volume) { views[viewId].attributes["volume"] = { name: "Volume", power: 3, type: "volume", base: math.unit(view.volume, "m^3") } } if (view.mass) { views[viewId].attributes["weight"] = { name: "Mass", power: 3, type: "mass", base: math.unit(view.mass, "kg") } } if (view.image) { views[viewId].image = view.image } else { views[viewId].image = { source: "./media/" + data.kind + "/" + data.name + "/" + form.name + "-" + view.name + ".svg" } } if (view.bottom) views[viewId].image.bottom = view.bottom if (view.extra) views[viewId].image.extra = view.extra }) }); return { name: data.name, constructor: () => makeEntity( {name: data.name}, views, [], forms ) } } function makeObjects() { const results = []; results.push({ name: "Soda Can", constructor: () => makeObject( "Soda Can", { front: { height: math.unit(4.83, "inches"), mass: math.unit(15, "grams"), image: { source: "./media/objects/soda-can.svg" }, name: "Side" } } ) }); results.push({ name: "Sewing Pin", constructor: () => makeObject( "Sewing Pin", { side: { height: math.unit(1.5, "inches"), image: { source: "./media/objects/sewing-pin.svg" }, name: "Side" }, top: { height: math.unit(2, "millimeters"), image: { source: "./media/objects/pin-head.svg" }, name: "Head" } } ) }); results.push({ name: "Lamp", constructor: () => makeObject( "Lamp", { lamp: { height: math.unit(30, "inches"), mass: math.unit(10, "lbs"), image: { source: "./media/objects/lamp.svg" }, name: "Lamp" } } ) }); results.push({ name: "Nail Polish", constructor: () => makeObject( "Nail Polish", { bottle: { height: math.unit(3.25, "inches"), mass: math.unit(66, "g"), image: { source: "./media/objects/nail-polish.svg" }, name: "Bottle" } } ) }); results.push({ name: "Shot Glass", constructor: () => makeObject( "Shot Glass", { glass: { height: math.unit(2 + 3 / 8, "inches"), mass: math.unit(75, "g"), image: { source: "./media/objects/shot-glass.svg" }, name: "Bottle" } } ) }); results.push({ name: "Beer Bottle", constructor: () => makeObject( "Beer Bottle", { longneck: { height: math.unit(9, "inches"), mass: math.unit(200, "g"), image: { source: "./media/objects/beer-bottle.svg" }, name: "Longneck Bottle" } } ) }); results.push({ name: "Pencil", constructor: () => makeObject( "Pencil", { pencil: { height: math.unit(7.5, "inches"), mass: math.unit(7, "g"), image: { source: "./media/objects/pencil.svg" }, name: "Pencil" } } ) }); results.push({ name: "Balls", constructor: () => makeObject( "Balls", { football: { height: math.unit("6.7", "inches"), mass: math.unit(415, "grams"), image: { source: "./media/objects/balls/football.svg"}, name: "Football", rename: true }, golf: { height: math.unit(1.62, "inches"), mass: math.unit(45, "g"), image: { source: "./media/objects/circle.svg" }, name: "Golfball", rename: true }, tennis: { height: math.unit(2.6, "inches"), mass: math.unit(57, "g"), image: { source: "./media/objects/circle.svg" }, name: "Tennisball", rename: true }, baseball: { height: math.unit(2.9, "inches"), mass: math.unit(145, "g"), image: { source: "./media/objects/circle.svg" }, name: "Baseball", rename: true }, volleyball: { height: math.unit(8, "inches"), mass: math.unit(270, "g"), image: { source: "./media/objects/circle.svg" }, name: "Volleyball", rename: true } } ) }); results.push({ name: "Paperclip", constructor: () => makeObject( "Paperclip", { paperclip: { height: math.unit(1.834, "inches"), mass: math.unit(1, "g"), image: { source: "./media/objects/paperclip.svg" }, name: "Paperclip" } } ) }); results.push({ name: "Pebbles", constructor: () => makeObject( "Pebbles", { gravelGrain: { height: math.unit(20, "mm"), image: { source: "./media/objects/pebble.svg" }, name: "Grain of gravel", rename: true }, sandGrain: { height: math.unit(0.5, "mm"), image: { source: "./media/objects/pebble.svg" }, name: "Grain of sand", rename: true }, siltGrain: { height: math.unit(0.03, "mm"), image: { source: "./media/objects/pebble.svg" }, name: "Grain of silt", rename: true }, } ) }); results.push({ name: "Molecular", constructor: () => makeObject( "Molecular", { hydrogen: { height: math.unit(1.06e-10, "m"), mass: math.unit(1, "dalton"), image: { source: "./media/objects/circle.svg" }, name: "Hydrogen atom", rename: true }, proton: { height: math.unit(0.877e-15, "m"), mass: math.unit(1, "dalton"), image: { source: "./media/objects/circle.svg" }, name: "Proton", rename: true }, } ) }); results.push({ name: "Flagpole", constructor: () => makeObject( "Flagpole", { residential: { height: math.unit(20, "feet"), image: { source: "./media/objects/flagpole.svg" }, name: "Residential" }, medium: { height: math.unit(50, "feet"), image: { source: "./media/objects/flagpole.svg" }, name: "Medium" }, large: { height: math.unit(100, "feet"), image: { source: "./media/objects/flagpole.svg" }, name: "Large" }, } ) }); results.push({ name: "Vending Machine", constructor: () => makeObject( "Vending Machine", { object: { height: math.unit(183, "cm"), mass: math.unit(347, "kg"), image: { source: "./media/objects/vending-machine.svg" }, name: "Vending Machine" } } ) }) results.push({ name: "International Space Station", constructor: () => makeObject( "International Space Station", { object: { height: math.unit(209, "feet"), mass: math.unit(925300, "lbs"), image: { source: "./media/objects/international-space-station.svg" }, name: "International Space Station" } } ) }) results.push(makeHeight( [ ["king", 4, "inches"], ["queen", 351 / 407 * 4, "inches"], ["bishop", 340 / 407 * 4, "inches"], ["knight", 309 / 407 * 4, "inches"], ["rook", 271 / 407 * 4, "inches"], ["pawn", 197 / 407 * 4, "inches"], ], "Chess Pieces", "chess_" )); results.push({ name: "Strand", constructor: () => { views = {}; viewInfo = { opticalFibre: { name: "Optical Fibre", thickness: math.unit(0.375, "mm") }, hair: { name: "Hair", thickness: math.unit(0.07, "mm") }, spiderSilk: { name: "Spider Silk", thickness: math.unit(0.003, "mm") }, suspensionCables: { name: "Suspension Bridge Cables", thickness: math.unit(3, "feet") }, capillary: { name: "Capillary", thickness: math.unit(7.5, "micrometers") }, vein: { name: "Vein", thickness: math.unit(10, "mm") }, thread: { name: "Thread", thickness: math.unit(0.4, "mm") }, powerCord: { name: "Power Cord", thickness: math.unit(0.25, "inches") }, pianoWireBass: { name: "Piano Wire (Bass)", thickness: math.unit(8.5, "mm") }, pianoWireTreble: { name: "Piano Wire (Treble)", thickness: math.unit(0.85, "mm") }, guitarString: { name: "Guitar String", thickness: math.unit(0.03, "inches") }, powerLineThin: { name: "Power Line (Thin)", thickness: math.unit(0.325, "inches") }, powerLineThick: { name: "Power Line (Thick)", thickness: math.unit(0.720, "inches") }, carbonNanotube: { name: "Carbon Nanotube", thickness: math.unit(4, "nm") } } Object.entries(viewInfo).forEach(([key, value]) => { views[key] = { attributes: { height: { name: "Height", power: 1, type: "length", base: math.multiply(value.thickness, 253.4385 / 5) }, thickness: { name: "Thickness", power: 1, type: "length", base: value.thickness }, }, image: { source: "./media/objects/strand.svg" }, name: value.name, rename: true } if (value.mass) { views[key].attributes.mass = { name: "Mass", power: 3, type: "mass", base: value.mass }; } }); return makeEntity({ name: "Strand" }, views); } }) results.push(makeHeight( [ ["mitochondria", 0.5, "micrometer"], ["bacteria", 0.3, "micrometer"], ["sperm", 4.65, "micrometers"], ["red-blood-cell", 6.5, "micrometer"], ["white-blood-cell", 13, "micrometer"], ["animal-cell", 25, "micrometers"], ["plant-cell", 75, "micrometers"], ["amoeba-proteus", 500, "micrometers"], ["chaos-carolinensis", 1500, "micrometers"], ], "Cells", "cell_" )) results.push(makeHeight( [ ["stop-sign", 36, "inches"], ["yield-sign", 36, "inches"], ["pedestrian-crossing", 30, "inches"], ["highway-exit", 150, "inches"] ], "Signs", "" )) results.push({ name: "Game Consoles", constructor: () => makeVehicleGroup([ { name: "Switch", mass: math.unit(10.48, "ounces"), sides: { "Front": { height: math.unit(4.01, "inches") }, "Top": { height: math.unit(1.13, "inches") }, "Side": { height: math.unit(4.01, "inches") }, } } ], "Game Consoles", "", "objects") }) results.push({ name: "Electromagnetic Waves", constructor: () => { views = {}; viewInfo = [ ["Gamma rays", math.unit(1, "pm")], ["Hard X-rays", math.unit(20, "pm")], ["Soft X-rays", math.unit(1, "nm")], ["Extreme-ultraviolet", math.unit(50, "nm")], ["UVC", math.unit(200, "nm")], ["UVB", math.unit(295, "nm")], ["UVA", math.unit(350, "nm")], ["Violet", math.unit(415, "nm")], ["Blue", math.unit(470, "nm")], ["Cyan", math.unit(490, "nm")], ["Green", math.unit(530, "nm")], ["Yellow", math.unit(580, "nm")], ["Orange", math.unit(610, "nm")], ["Red", math.unit(690, "nm")], ["Near-infrared", math.unit(1.2, "um")], ["Short-wavelength infrared", math.unit(2.2, "um")], ["Mid-wavelength infrared", math.unit(6.5, "um")], ["Long-wavelength infrared", math.unit(12, "um")], ["Far infrared", math.unit(500, "um")], ["D-band microwaves (mm-wave)", math.unit(2, "mm")], ["S-band microwaves (ovens, wifi)", math.unit(11, "cm")], ["L-band microwaves (GPS)", math.unit(22, "cm")], ["UHF", math.unit(50, "cm")], ["FM radio", math.unit(3.5, "m")], ["VHF", math.unit(5, "m")], ["HF", math.unit(50, "m")], ["AM radio", math.unit(250, "m")], ["MF", math.unit(500, "m")], ["LF", math.unit(5, "km")], ["VLF", math.unit(50, "km")], ["ULF", math.unit(500, "km")], ["SLF", math.unit(5000, "km")], ["ELF", math.unit(50000, "km")], ] viewInfo.forEach(([name, length]) => { views[name] = { attributes: { height: { name: "Height", power: 1, type: "length", base: math.multiply(length, 2) } }, image: { source: "./media/objects/sine-wave.svg" }, name: name, rename: true, default: name === "Green" } }); return makeEntity({ name: "Electromagnetic Waves" }, views); } }) results.push(makeHeight( [ [".308 Winchester", 71.374, "mm", "./media/objects/ammunition/.308 Winchester.svg"], [".22 LR", 25.40, "mm", "./media/objects/ammunition/.22 LR.svg"], ["9mm Luger", 29.69, "mm", "./media/objects/ammunition/9mm Luger.svg"], [".223 Remington", 2.260, "inches", "./media/objects/ammunition/.223 Remington.svg"], [".30-06 Springfield", 3.340, "inches", "./media/objects/ammunition/.30-06 Springfield.svg"], ], "Ammunition", "", "objects", false )) results.push(makeHeight( [ ["No. 1 (11 Oz.)", 4, "inches", "./media/objects/tin-cans/No. 1 (11 Oz.).svg"], ["No. 2 (20 Oz.)", 4 + 9/16, "inches", "./media/objects/tin-cans/No. 2 (20 Oz.).svg"], ["No. 3 (52 Oz.)", 7, "inches", "./media/objects/tin-cans/No. 3 (52 Oz.).svg"], ["No. 5 (60 Oz.)", 5 + 5/8, "inches", "./media/objects/tin-cans/No. 5 (60 Oz.).svg"], ["No. 10 (110 Oz.)", 7, "inches", "./media/objects/tin-cans/No. 10 (110 Oz.).svg"], ], "Tin Cans", "" )) results.push(makeHeight( [ ["Garden Hose", 0.875, "inches"], ["1 Inch Fire Hose", 1.25, "inches"], ["1.5 Inch Fire Hose", 1.85, "inches"], ["1.75 Inch Fire Hose", 2.1, "inches"], ["2.5 Inch Fire Hose", 3, "inches"], ["4 Inch Fire Hose", 4.5, "inches"], ["5 Inch Fire Hose", 5.6, "inches"], ], "Hoses", "" )) results.push(makeHeight( [ ["12 Inch Culvert", 14.75, "inches"], ["24 Inch Culvert", 26.75, "inches"], ], "Pipes", "" )) results.push(makeHeight( [ ["000 Capsule", 26.1, "mm"], ["00E Capsule", 25.3, "mm"], ["00 Capsule", 23.4, "mm"], ["0E Capsule", 23.5, "mm"], ["0 Capsule", 21.6, "mm"], ["1 Capsule", 19.4, "mm"], ["2 Capsule", 17.6, "mm"], ["3 Capsule", 15.7, "mm"], ["4 Capsule", 14.3, "mm"], ["5 Capsule", 11.1, "mm"], ], "Pills", "" )); results.push(makeHeight( [ ["10' Container", 8 + 6/12, "feet", "./media/objects/shipping-containers/10-foot.svg", math.unit(536.3, "ft^3")], ["20' Container", 8 + 6/12, "feet", "./media/objects/shipping-containers/20-foot.svg", math.unit(1169, "ft^3")], ["40' Container", 8 + 6/12, "feet", "./media/objects/shipping-containers/40-foot.svg", math.unit(2385, "ft^3")], ["40' High Cube Container", 9 + 6/12, "feet", "./media/objects/shipping-containers/40-foot-high-cube.svg", math.unit(2660, "ft^3")], ["45' High Cube Container", 9 + 6/12, "feet", "./media/objects/shipping-containers/45-foot-high-cube.svg", math.unit(3040, "ft^3")], ["Container Front", 8 + 6/12, "feet", "./media/objects/shipping-containers/front-normal.svg", math.unit(2385, "ft^3")], ["High Cube Container Front", 9 + 6/12, "feet", "./media/objects/shipping-containers/front-high-cube.svg", math.unit(2660, "ft^3")], ], "Shipping Containers", "" )); results.push(makeHeight( [ ["AA", 50, "mm"], ["AAA", 44.1, "mm"] ], "Batteries", "" )); results.push(makeHeight( [ ["Regular", 32, "mm"], ["Micro", 15, "mm"] ], "SD Cards", "" )) results.push(makeModel({"name": "Dice", "kind": "objects", "forms": [{"name": "D6 Dotted", "views": [{"name": "Front", "height": 0.01415012776851654}, {"name": "Side", "height": 0.01415012776851654}, {"name": "Top", "height": 0.01415012776851654}]}, {"name": "D4", "views": [{"name": "Front", "height": 0.01699800044298172}, {"name": "Side", "height": 0.01699800044298172}, {"name": "Top", "height": 0.017878876999020576}]}, {"name": "D8", "views": [{"name": "Front", "height": 0.013862096704542637}, {"name": "Side", "height": 0.013862096704542637}, {"name": "Top", "height": 0.01808309182524681}]}, {"name": "D10", "views": [{"name": "Front", "height": 0.015351179987192154}, {"name": "Side", "height": 0.015351179987192154}, {"name": "Top", "height": 0.016876159235835075}]}, {"name": "D10 Percentile", "views": [{"name": "Front", "height": 0.015358946286141872}, {"name": "Side", "height": 0.015358946286141872}, {"name": "Top", "height": 0.016862813383340836}]}, {"name": "D12", "views": [{"name": "Front", "height": 0.017607660964131355}, {"name": "Side", "height": 0.017607660964131355}, {"name": "Top", "height": 0.02110980451107025}]}, {"name": "D20", "views": [{"name": "Front", "height": 0.01964765228331089}, {"name": "Side", "height": 0.01964765228331089}, {"name": "Top", "height": 0.023235414177179337}]}, {"name": "D6 Numbered", "views": [{"name": "Front", "height": 0.014152487739920616}, {"name": "Side", "height": 0.014152487739920616}, {"name": "Top", "height": 0.014152484014630318}]}]})) results.push(makeModel({"name": "Kitchenware", "kind": "objects", "forms": [{"name": "Fork", "views": [{"name": "Front", "height": 0.2818719744682312}, {"name": "Side", "height": 0.2818719744682312}, {"name": "Top", "height": 0.016759976744651794}]}, {"name": "Knife", "views": [{"name": "Front", "height": 0.3395436704158783}, {"name": "Side", "height": 0.3395436704158783}, {"name": "Top", "height": 0.010758467018604279}]}, {"name": "Spoon", "views": [{"name": "Front", "height": 0.2750821113586426}, {"name": "Side", "height": 0.2750821113586426}, {"name": "Top", "height": 0.019756551831960678}]}, {"name": "Wine Bottle", "views": [{"name": "Front", "height": 0.5660512447357178}, {"name": "Side", "height": 0.5660512447357178}, {"name": "Top", "height": 0.15603119134902954}]}, {"name": "Wooden Spoon", "views": [{"name": "Front", "height": 0.6168732643127441}, {"name": "Side", "height": 0.6168732643127441}, {"name": "Top", "height": 0.0339566171169281}]}, {"name": "Cutting Board", "views": [{"name": "Front", "height": 0.021497011184692383}, {"name": "Side", "height": 0.021497011184692383}, {"name": "Top", "height": 0.7172588109970093}]}, {"name": "Plate", "views": [{"name": "Front", "height": 0.05160319805145264}, {"name": "Side", "height": 0.05160319805145264}, {"name": "Top", "height": 0.40615978837013245}]}, {"name": "Bowl", "views": [{"name": "Front", "height": 0.1036841869354248}, {"name": "Side", "height": 0.1036841869354248}, {"name": "Top", "height": 0.24168895184993744}]}, {"name": "Coffee Cup", "views": [{"name": "Front", "height": 0.12534868717193604}, {"name": "Side", "height": 0.12534868717193604}, {"name": "Top", "height": 0.11728732287883759}]}, {"name": "Tea Cup", "views": [{"name": "Front", "height": 0.08793330192565918}, {"name": "Side", "height": 0.08793330192565918}, {"name": "Top", "height": 0.10884171724319458}]}]})) results.push(makeModel({"name": "Condoms", "kind": "objects", "forms": [{"name": "Narrow", "views": [{"name": "Front", "height": 0.196}]}, {"name": "Standard", "views": [{"name": "Front", "height": 0.208}]}, {"name": "Large", "views": [{"name": "Front", "height": 0.221}]}, {"name": "XL", "views": [{"name": "Front", "height": 0.229}]}]})) results.push(makeModel({ "name": "Flat Shapes", "kind": "objects", "forms": [ { "name": "Circle", "views": [ { "name": "Top", "height": 1, "area": 0.78539816339 } ] }, { "name": "Square", "views": [ { "name": "Top", "height": 1, "area": 1 } ] }, ] })) results.push(makeModel({ "name": "Optical Disc Tracks", "kind": "objects", "forms": [ { "name": "CD", "views": [ { "name": "Top", "height": 3800e-9 } ] }, { "name": "DVD", "views": [ { "name": "Top", "height": 1800e-9 } ] }, { "name": "HD-DVD", "views": [ { "name": "Top", "height": 1400e-9 } ] }, { "name": "Blu-ray", "views": [ { "name": "Top", "height": 1090e-9 } ] }, ] })) /* ***Glassware*** */ results.push(makeModel({"name": "Glassware", "kind": "objects", "forms": [{"name": "Erlenmeyer 250mL", "views": [{"name": "Front", "height": 0.13200001418590546}, {"name": "Side", "height": 0.13200001418590546}, {"name": "Top", "height": 0.0820000022649765}]}, {"name": "Erlenmeyer 50mL", "views": [{"name": "Front", "height": 0.07800000160932541}, {"name": "Side", "height": 0.07800000160932541}, {"name": "Top", "height": 0.050999999046325684}]}, {"name": "Florence 250mL", "views": [{"name": "Front", "height": 0.1444360464811325}, {"name": "Side", "height": 0.1444360464811325}, {"name": "Top", "height": 0.08079908788204193}]}, {"name": "Watch Glass", "views": [{"name": "Front", "height": 0.012000001035630703}, {"name": "Side", "height": 0.012000001035630703}, {"name": "Top", "height": 0.1213480606675148}]}, {"name": "Petri Dish 60mm", "views": [{"name": "Front", "height": 0.012477035634219646}, {"name": "Side", "height": 0.012477035634219646}, {"name": "Top", "height": 0.06493081152439117}]}, {"name": "Petri Dish 100mm", "views": [{"name": "Front", "height": 0.014974183402955532}, {"name": "Side", "height": 0.014974183402955532}, {"name": "Top", "height": 0.10384059697389603}]}]})); /* ***Shapes*** */ results.push(makeModel({"name": "Shapes", "kind": "objects", "forms": [{"name": "Cube", "views": [{"name": "Front", "height": 1.0, "volume": 0.9999999999999999}, {"name": "Side", "height": 1.0, "volume": 0.9999999999999999}, {"name": "Top", "height": 1.0, "volume": 0.9999999999999999}]}, {"name": "Sphere", "views": [{"name": "Front", "height": 1.0, "volume": 0.5242280941679499}, {"name": "Side", "height": 1.0, "volume": 0.5242280941679499}, {"name": "Top", "height": 0.9999998807907104, "volume": 0.5242280941679499}]}, {"name": "Cone", "views": [{"name": "Front", "height": 1.0, "volume": 0.26169426348501956}, {"name": "Side", "height": 1.0, "volume": 0.26169426348501956}, {"name": "Top", "height": 1.0, "volume": 0.26169426348501956}]}, {"name": "Cylinder", "views": [{"name": "Front", "height": 1.0, "volume": 0.7850827506448366}, {"name": "Side", "height": 1.0, "volume": 0.7850827506448366}, {"name": "Top", "height": 0.9999399781227112, "volume": 0.7850827506448366}]}]})); /* ***PO Boxes*** */ results.push(makeModel({"name": "PO Boxes", "kind": "objects", "forms": [{"name": "XS", "views": [{"name": "Front", "height": 0.07620000094175339, "volume": 0.003988201638571948}, {"name": "Side", "height": 0.07620000094175339, "volume": 0.003988201638571948}, {"name": "Top", "height": 0.3746500015258789, "volume": 0.003988201638571948}]}, {"name": "S", "views": [{"name": "Front", "height": 0.12700000405311584, "volume": 0.006647002860937575}, {"name": "Side", "height": 0.12700000405311584, "volume": 0.006647002860937575}, {"name": "Top", "height": 0.3746500015258789, "volume": 0.006647002860937575}]}, {"name": "M", "views": [{"name": "Front", "height": 0.1396999955177307, "volume": 0.014623405358175506}, {"name": "Side", "height": 0.1396999955177307, "volume": 0.014623405358175506}, {"name": "Top", "height": 0.3746500015258789, "volume": 0.014623405358175506}]}, {"name": "L", "views": [{"name": "Front", "height": 0.2793999910354614, "volume": 0.02924681071635101}, {"name": "Side", "height": 0.2793999910354614, "volume": 0.02924681071635101}, {"name": "Top", "height": 0.3746500015258789, "volume": 0.02924681071635101}]}, {"name": "XL", "views": [{"name": "Front", "height": 0.30480000376701355, "volume": 0.06526148383352366}, {"name": "Side", "height": 0.30480000376701355, "volume": 0.06526148383352366}, {"name": "Top", "height": 0.3746500015258789, "volume": 0.06526148383352366}]}]})); /* ***Sex Toys*** */ results.push(makeModel({"name": "Sex Toys", "kind": "objects", "forms": [{"name": "Chance", "views": [{"name": "Front", "height": 0.44450023770332336, "volume": 0.0024940192673095084}, {"name": "Side", "height": 0.44450023770332336, "volume": 0.0024940192673095084}, {"name": "Top", "height": 0.18736252188682556, "volume": 0.0024940192673095084}]}, {"name": "Fenrir", "views": [{"name": "Front", "height": 0.32130947709083557, "volume": 0.0014611460855557515}, {"name": "Side", "height": 0.32130947709083557, "volume": 0.0014611460855557515}, {"name": "Top", "height": 0.11701348423957825, "volume": 0.0014611460855557515}]}]})); /* ***LEGO*** */ results.push(makeModel({"name": "LEGO", "kind": "objects", "forms": [{"name": "1x1", "views": [{"name": "Front", "height": 0.01119999960064888, "volume": 3.3640754098503267e-07}, {"name": "Angled", "height": 0.01119999960064888, "volume": 3.3640754098503267e-07}, {"name": "Side", "height": 0.01119999960064888, "volume": 3.3640754098503267e-07}, {"name": "Top", "height": 0.00800000037997961, "volume": 3.3640754098503267e-07}, {"name": "Bottom", "height": 0.00800000037997961, "volume": 3.3640754098503267e-07}]}, {"name": "1x2", "views": [{"name": "Front", "height": 0.011200000531971455, "volume": 5.669391684500056e-07}, {"name": "Angled", "height": 0.011200000531971455, "volume": 5.669391684500056e-07}, {"name": "Side", "height": 0.011200000531971455, "volume": 5.669391684500056e-07}, {"name": "Top", "height": 0.00800000037997961, "volume": 5.669391684500056e-07}, {"name": "Bottom", "height": 0.00800000037997961, "volume": 5.669391684500056e-07}]}, {"name": "2x2", "views": [{"name": "Front", "height": 0.01119999960064888, "volume": 1.0245981619502385e-06}, {"name": "Angled", "height": 0.01119999960064888, "volume": 1.0245981619502385e-06}, {"name": "Side", "height": 0.01119999960064888, "volume": 1.0245981619502385e-06}, {"name": "Top", "height": 0.01600000075995922, "volume": 1.0245981619502385e-06}, {"name": "Bottom", "height": 0.01600000075995922, "volume": 1.0245981619502385e-06}]}, {"name": "2x4", "views": [{"name": "Front", "height": 0.011200000531971455, "volume": 1.939916458324457e-06}, {"name": "Angled", "height": 0.011200000531971455, "volume": 1.939916458324457e-06}, {"name": "Side", "height": 0.011200000531971455, "volume": 1.939916458324457e-06}, {"name": "Top", "height": 0.01600000075995922, "volume": 1.939916458324457e-06}, {"name": "Bottom", "height": 0.01600000075995922, "volume": 1.939916458324457e-06}]}]})); /* ***Bricks*** */ results.push(makeModel({"name": "Bricks", "kind": "objects", "forms": [{"name": "Cinderblock", "views": [{"name": "Front", "height": 0.1936749964952469, "volume": 0.0072986710396893105}, {"name": "Angled", "height": 0.1936749964952469, "volume": 0.0072986710396893105}, {"name": "Side", "height": 0.1936749964952469, "volume": 0.0072986710396893105}, {"name": "Top", "height": 0.1936749964952469, "volume": 0.0072986710396893105}]}, {"name": "Clay Brick", "views": [{"name": "Front", "height": 0.05714999884366989, "volume": 0.0008421204681292792}, {"name": "Angled", "height": 0.05714999884366989, "volume": 0.0008421204681292792}, {"name": "Side", "height": 0.05714999884366989, "volume": 0.0008421204681292792}, {"name": "Top", "height": 0.10159999877214432, "volume": 0.0008421204681292792}]}]})); /* ***Barrels*** */ results.push(makeModel({"name": "Barrels", "kind": "objects", "forms": [{"name": "55 Gallon Drum", "views": [{"name": "Front", "height": 0.8716663122177124, "volume": 0.20819799602031708}, {"name": "Top", "height": 0.617232084274292, "volume": 0.20819799602031708}]}, {"name": "Sixer Keg", "views": [{"name": "Front", "height": 0.5937249660491943, "volume": 0.02345781959593296}, {"name": "Top", "height": 0.2349499762058258, "volume": 0.02345781959593296}]}, {"name": "Half Barrel Keg", "views": [{"name": "Front", "height": 0.5937249660491943, "volume": 0.07046438753604889}, {"name": "Top", "height": 0.42044833302497864, "volume": 0.07046438753604889}]}]})); /* ***Pipettes*** */ results.push(makeModel({"name": "Pipettes", "kind": "objects", "forms": [{"name": "Transfer Pipette", "views": [{"name": "Front", "height": 0.1491980254650116, "volume": 0.20819799602031708}, {"name": "Top", "height": 0.010719738900661469, "volume": 0.20819799602031708}, {"name": "Bottom", "height": 0.010719738900661469, "volume": 0.20819799602031708}]}]})); /* ***Straws*** */ results.push(makeModel({"name": "Straws", "kind": "objects", "forms": [{"name": "Normal", "views": [{"name": "Front", "height": 0.2159000039100647}, {"name": "Top", "height": 0.006095999851822853}]}, {"name": "Wide", "views": [{"name": "Front", "height": 0.2159000039100647}, {"name": "Top", "height": 0.008127997629344463}]}, {"name": "Smoothie", "views": [{"name": "Front", "height": 0.2159000039100647}, {"name": "Top", "height": 0.00914399977773428}]}, {"name": "Boba", "views": [{"name": "Front", "height": 0.2159000039100647}, {"name": "Top", "height": 0.012191999703645706}]}]})); /* ***Coins*** */ results.push(makeModel({"name": "Coins", "kind": "objects", "forms": [{"name": "U.S. Dollar", "views": [{"name": "Top", "height": 0.026492198929190636, "mass": 0.008100000210106373, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.0020000000949949026, "mass": 0.008100000210106373, "extra": 1.0400310285689658, "bottom": 0.037063637505278635}]}, {"name": "U.S. Half Dollar", "views": [{"name": "Top", "height": 0.03060699999332428, "mass": 0.011339999735355377, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.00215000007301569, "mass": 0.011339999735355377, "extra": 1.0423728813559323, "bottom": 0.0390625}]}, {"name": "U.S. Quarter", "views": [{"name": "Top", "height": 0.024257000535726547, "mass": 0.005669999867677689, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.0017500000540167093, "mass": 0.005669999867677689, "extra": 1.0429166666666667, "bottom": 0.03952417498081355}]}, {"name": "U.S. Dime", "views": [{"name": "Top", "height": 0.017906999215483665, "mass": 0.002268000040203333, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.0013500000350177288, "mass": 0.002268000040203333, "extra": 1.0400310285689658, "bottom": 0.037063637505278635}]}, {"name": "U.S. Nickel", "views": [{"name": "Top", "height": 0.021208999678492546, "mass": 0.004999999888241291, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.0019500000635161996, "mass": 0.004999999888241291, "extra": 1.0324675324675325, "bottom": 0.03048780487804878}]}, {"name": "U.S. Penny", "views": [{"name": "Top", "height": 0.019050000235438347, "mass": 0.0024999999441206455, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.0015200000489130616, "mass": 0.0024999999441206455, "extra": 1.0390151515151516, "bottom": 0.0361911454673226}]}, {"name": "UK \u00a35", "views": [{"name": "Top", "height": 0.028400002047419548, "mass": 0.028279999271035194, "extra": 1.0030011776020675, "bottom": 0.0029832709501544947}, {"name": "Side", "height": 0.0028900043107569218, "mass": 0.028279999271035194, "extra": 1.0295230294117648, "bottom": 0.02787700229446234}]}, {"name": "UK \u00a32", "views": [{"name": "Top", "height": 0.028400002047419548, "mass": 0.012000000104308128, "extra": 1.0030011776020675, "bottom": 0.0029832709501544947}, {"name": "Side", "height": 0.0025000039022415876, "mass": 0.012000000104308128, "extra": 1.0352739726027398, "bottom": 0.032949456174024346}]}, {"name": "UK \u00a31", "views": [{"name": "Top", "height": 0.023430000990629196, "mass": 0.008750000037252903, "extra": 1.0030307842552622, "bottom": 0.0030125236368478067}, {"name": "Side", "height": 0.0028000001329928637, "mass": 0.008750000037252903, "extra": 1.025, "bottom": 0.023809523809523808}]}, {"name": "UK 50p", "views": [{"name": "Top", "height": 0.027300003916025162, "mass": 0.00800000037997961, "extra": 1.0030018608559939, "bottom": 0.0029839460741609334}, {"name": "Side", "height": 0.0017800000496208668, "mass": 0.00800000037997961, "extra": 1.0476851851851852, "bottom": 0.04353338968723577}]}, {"name": "UK 20p", "views": [{"name": "Top", "height": 0.021400000900030136, "mass": 0.004999999888241291, "extra": 1.0030018608559939, "bottom": 0.0029839460741609334}, {"name": "Side", "height": 0.0017000001389533281, "mass": 0.004999999888241291, "extra": 1.0390151515151516, "bottom": 0.0361911454673226}]}, {"name": "UK 10p", "views": [{"name": "Top", "height": 0.024500001221895218, "mass": 0.006500000134110451, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.0018500001169741154, "mass": 0.006500000134110451, "extra": 1.0400310285689658, "bottom": 0.037063637505278635}]}, {"name": "UK 5p", "views": [{"name": "Top", "height": 0.018000001087784767, "mass": 0.0032500000670552254, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.0017000001389533281, "mass": 0.0032500000670552254, "extra": 1.0316455696202531, "bottom": 0.02976190476190476}]}, {"name": "UK 2p", "views": [{"name": "Top", "height": 0.02590000070631504, "mass": 0.007120000198483467, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.00203000009059906, "mass": 0.007120000198483467, "extra": 1.0396153846153846, "bottom": 0.036707056307911656}]}, {"name": "UK 1p", "views": [{"name": "Top", "height": 0.0203000009059906, "mass": 0.0035600000992417336, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.0016500001074746251, "mass": 0.0035600000992417336, "extra": 1.036764705882353, "bottom": 0.03424657534246575}]}, {"name": "Canadian Two Dollar", "views": [{"name": "Top", "height": 0.02800000086426735, "mass": 0.007300000172108412, "extra": 1.0030011776020675, "bottom": 0.0029832709501544947}, {"name": "Side", "height": 0.0018000000854954123, "mass": 0.007300000172108412, "extra": 1.0462962962962963, "bottom": 0.0423728813559322}]}, {"name": "Canadian Dollar", "views": [{"name": "Top", "height": 0.026500001549720764, "mass": 0.0062699997797608376, "extra": 1.0030313886069266, "bottom": 0.003013120727238904}, {"name": "Side", "height": 0.0019500007620081306, "mass": 0.0062699997797608376, "extra": 1.0422131147540985, "bottom": 0.03892668178382468}]}, {"name": "2 Euro", "views": [{"name": "Top", "height": 0.02575000189244747, "mass": 0.008500000461935997, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.0022000002209097147, "mass": 0.008500000461935997, "extra": 1.036267605633803, "bottom": 0.033814839133289594}]}, {"name": "1 Euro", "views": [{"name": "Top", "height": 0.023250000551342964, "mass": 0.007499999832361937, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.0023300000466406345, "mass": 0.007499999832361937, "extra": 1.0297619047619047, "bottom": 0.028089887640449437}]}, {"name": "500 Yen", "views": [{"name": "Top", "height": 0.026500001549720764, "mass": 0.0071000000461936, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.0018100000452250242, "mass": 0.0071000000461936, "extra": 1.0442448684210526, "bottom": 0.04064794267092912}]}, {"name": "50 Yen", "views": [{"name": "Top", "height": 0.021000003442168236, "mass": 0.004000000189989805, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.0015100002055987716, "mass": 0.004000000189989805, "extra": 1.0418242916666667, "bottom": 0.038595807081677744}]}, {"name": "5 Yen", "views": [{"name": "Top", "height": 0.02200000174343586, "mass": 0.0037499999161809683, "extra": 1.0030240564934132, "bottom": 0.003005876612039225}, {"name": "Side", "height": 0.0015100002055987716, "mass": 0.0037499999161809683, "extra": 1.045175438596491, "bottom": 0.041432019308125435}]}]})); /* ***Doors*** */ results.push(makeModel({"name": "Doors", "kind": "objects", "forms": [{"name": "6 Panel Door", "views": [{"name": "Front", "height": 2.0320000648498535, "mass": 11.793399810791016}, {"name": "Angled", "height": 2.0320000648498535, "mass": 11.793399810791016}, {"name": "Side", "height": 2.0320000648498535, "mass": 11.793399810791016}, {"name": "Top", "height": 0.03492499887943268, "mass": 11.793399810791016}]}, {"name": "French Door", "views": [{"name": "Front", "height": 2.0320000648498535, "mass": 31.75149917602539}, {"name": "Angled", "height": 2.0320000648498535, "mass": 31.75149917602539}, {"name": "Side", "height": 2.0320000648498535, "mass": 31.75149917602539}, {"name": "Top", "height": 0.03492499887943268, "mass": 31.75149917602539}]}, {"name": "Fire Door", "views": [{"name": "Front", "height": 2.0320000648498535, "mass": 54.54545593261719}, {"name": "Angled", "height": 2.0320000648498535, "mass": 54.54545593261719}, {"name": "Side", "height": 2.0320000648498535, "mass": 54.54545593261719}, {"name": "Top", "height": 0.10518216341733932, "mass": 54.54545593261719}]}]})); /* ***Cards*** */ results.push(makeModel({"name": "Cards", "kind": "objects", "forms": [{"name": "Credit Card", "views": [{"name": "Front", "height": 0.053975000977516174, "mass": 11.793399810791016, "extra": 1.0047993079868203, "bottom": 0.00475367924528303}, {"name": "Back", "height": 0.053975000977516174, "mass": 11.793399810791016, "extra": 1.0047993079868203, "bottom": 0.00475367924528303}, {"name": "Edge", "height": 0.0015578659949824214, "mass": 11.793399810791016, "extra": 1.1704167, "bottom": 0.127097594675073}]}]})); /* ***Optical Discs*** */ results.push(makeModel({"name": "Optical Discs", "kind": "objects", "forms": [{"name": "Compact Disc", "views": [{"name": "Top", "height": 0.12000000476837158, "extra": 1.0016588562572393, "bottom": 0.0016533708480855258}, {"name": "Edge", "height": 0.0012000000569969416, "extra": 1.16776865625, "bottom": 0.12561884619752997}, {"name": "Bottom", "height": 0.12000000476837158, "extra": 1.0016588562572393, "bottom": 0.0016533708480855258}]}]})); /* ***Staples*** */ results.push(makeModel({"name": "Staples", "kind": "objects", "forms": [{"name": "Standard Staple", "views": [{"name": "Front", "height": 0.00634999992325902}, {"name": "Angled", "height": 0.00634999992325902}, {"name": "Side", "height": 0.00634999992325902}, {"name": "Top", "height": 0.0003969999961555004}]}]})); /* ***Rulers*** */ results.push(makeModel({"name": "Rulers", "kind": "objects", "forms": [{"name": "Wooden Ruler", "views": [{"name": "Top", "height": 0.30797499418258667, "extra": 1.0012004801920769, "bottom": 0.0011976047904191617}, {"name": "Edge", "height": 0.003634304739534855, "extra": 1.0459056530118458, "bottom": 0.04204540909090908}, {"name": "End", "height": 0.003634304739534855, "extra": 1.0054553851294097, "bottom": 0.005396505102040825}]}]})); /* ***INSERT HERE*** */ return results; }