less copy protection, more size visualization
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 

915 строки
44 KiB

  1. function makeObject(name, viewInfo, sizes = []) {
  2. views = {};
  3. Object.entries(viewInfo).forEach(([key, value]) => {
  4. views[key] = {
  5. attributes: {
  6. height: {
  7. name: "Height",
  8. power: 1,
  9. type: "length",
  10. base: value.height
  11. }
  12. },
  13. image: value.image,
  14. name: value.name,
  15. rename: value.rename
  16. }
  17. if (value.mass) {
  18. views[key].attributes.mass = {
  19. name: "Mass",
  20. power: 3,
  21. type: "mass",
  22. base: value.mass
  23. };
  24. }
  25. if (value.volume) {
  26. views[key].attributes.capacity = {
  27. name: "Volume",
  28. power: 3,
  29. type: "volume",
  30. base: value.volume
  31. }
  32. }
  33. if (value.energy) {
  34. views[key].attributes.capacity = {
  35. name: "Energy",
  36. power: 3,
  37. type: "energy",
  38. base: value.energy
  39. }
  40. }
  41. });
  42. return makeEntity({ name: name }, views, sizes);
  43. }
  44. function makeHeight(info, category, prefix = "", type = "objects", rename = true) {
  45. const views = {};
  46. info.forEach(object => {
  47. let src;
  48. // this lets us provide our own source if needed
  49. // useful for reusing existing art
  50. if (object[3]) {
  51. src = object[3];
  52. } else {
  53. src = "./media/" + type + "/" + category.replace(/ /g, "-").toLowerCase() + "/" + prefix + object[0] + ".svg";
  54. }
  55. views[object[0]] = {
  56. height: math.unit(object[1], object[2]),
  57. image: { source: src },
  58. name: rename ? object[0].replace(/-/g, " ").replace(/\b\w/g, x => x.toUpperCase()).replace(/'[A-Z]/g, x => x.toLowerCase()) : object[0],
  59. rename: true
  60. }
  61. if (object[4] !== undefined) {
  62. views[object[0]].volume = object[4]
  63. }
  64. });
  65. return {
  66. name: category,
  67. constructor: () => makeObject(
  68. category,
  69. views
  70. )
  71. }
  72. }
  73. function makeHeightWeight(info, category, prefix = "", type = "objects") {
  74. const views = {};
  75. info.forEach(object => {
  76. let src;
  77. // this lets us provide our own source if needed
  78. // useful for reusing existing art
  79. if (object[5]) {
  80. src = object[5];
  81. } else {
  82. src = "./media/" + type + "/" + category.replace(/ /g, "-").toLowerCase() + "/" + prefix + object[0] + ".svg";
  83. }
  84. views[object[0]] = {
  85. height: math.unit(object[1], object[2]),
  86. mass: math.unit(object[3], object[4]),
  87. image: { source: src },
  88. name: object[0].replace(/-/g, " ").replace(/\b\w/g, x => x.toUpperCase()),
  89. rename: true
  90. }
  91. });
  92. return {
  93. name: category,
  94. constructor: () => makeObject(
  95. category,
  96. views
  97. )
  98. }
  99. }
  100. function makeHeightWeightSphere(info, category, prefix = "", type = "objects") {
  101. const views = {};
  102. info.forEach(object => {
  103. let src;
  104. // this lets us provide our own source if needed
  105. // useful for reusing existing art
  106. if (object[5]) {
  107. src = object[5];
  108. } else {
  109. src = "./media/" + type + "/" + category.replace(/ /g, "-").toLowerCase() + "/" + prefix + object[0] + ".svg";
  110. }
  111. views[object[0]] = {
  112. height: math.unit(object[1], object[2]),
  113. mass: math.unit(object[3], object[4]),
  114. volume: math.unit(Math.PI * 4 / 3 * Math.pow((object[1]/2), 3), object[2] + "^3"),
  115. image: { source: src },
  116. name: object[0].replace(/-/g, " ").replace(/\b\w/g, x => x.toUpperCase()),
  117. rename: true
  118. }
  119. if (object[6]) {
  120. views[object[0]].image.extra = object[6]
  121. views[object[0]].image.bottom = object[7]
  122. }
  123. });
  124. return {
  125. name: category,
  126. constructor: () => makeObject(
  127. category,
  128. views
  129. )
  130. }
  131. }
  132. function makeModel(data) {
  133. const views = {};
  134. const forms = {};
  135. data.forms.forEach(form => {
  136. forms[form.name] = { name: form.name, rename: true }
  137. form.views.forEach(view => {
  138. const viewId = form.name + view.name
  139. views[viewId] = {
  140. name: view.name,
  141. attributes: {
  142. height: {
  143. name: "Height",
  144. power: 1,
  145. type: "length",
  146. base: math.unit(view.height, "meters")
  147. }
  148. },
  149. form: form.name
  150. }
  151. if (view.area) {
  152. views[viewId].attributes["area"] = {
  153. name: "Area",
  154. power: 2,
  155. type: "area",
  156. base: math.unit(view.area, "m^2")
  157. }
  158. }
  159. if (view.volume) {
  160. views[viewId].attributes["volume"] = {
  161. name: "Volume",
  162. power: 3,
  163. type: "volume",
  164. base: math.unit(view.volume, "m^3")
  165. }
  166. }
  167. if (view.image) {
  168. views[viewId].image = view.image
  169. } else {
  170. views[viewId].image = {
  171. source: "./media/" + data.kind + "/" + data.name + "/" + form.name + "-" + view.name + ".svg"
  172. }
  173. }
  174. })
  175. });
  176. return {
  177. name: data.name,
  178. constructor: () => makeEntity(
  179. {name: data.name},
  180. views,
  181. [],
  182. forms
  183. )
  184. }
  185. }
  186. function makeObjects() {
  187. const results = [];
  188. results.push({
  189. name: "Soda Can",
  190. constructor: () => makeObject(
  191. "Soda Can",
  192. {
  193. front: {
  194. height: math.unit(4.83, "inches"),
  195. mass: math.unit(15, "grams"),
  196. image: { source: "./media/objects/soda-can.svg" },
  197. name: "Side"
  198. }
  199. }
  200. )
  201. });
  202. results.push({
  203. name: "Sewing Pin",
  204. constructor: () => makeObject(
  205. "Sewing Pin",
  206. {
  207. side: {
  208. height: math.unit(1.5, "inches"),
  209. image: { source: "./media/objects/sewing-pin.svg" },
  210. name: "Side"
  211. },
  212. top: {
  213. height: math.unit(2, "millimeters"),
  214. image: { source: "./media/objects/pin-head.svg" },
  215. name: "Head"
  216. }
  217. }
  218. )
  219. });
  220. results.push({
  221. name: "Lamp",
  222. constructor: () => makeObject(
  223. "Lamp",
  224. {
  225. lamp: {
  226. height: math.unit(30, "inches"),
  227. mass: math.unit(10, "lbs"),
  228. image: { source: "./media/objects/lamp.svg" },
  229. name: "Lamp"
  230. }
  231. }
  232. )
  233. });
  234. results.push({
  235. name: "Nail Polish",
  236. constructor: () => makeObject(
  237. "Nail Polish",
  238. {
  239. bottle: {
  240. height: math.unit(3.25, "inches"),
  241. mass: math.unit(66, "g"),
  242. image: { source: "./media/objects/nail-polish.svg" },
  243. name: "Bottle"
  244. }
  245. }
  246. )
  247. });
  248. results.push({
  249. name: "Shot Glass",
  250. constructor: () => makeObject(
  251. "Shot Glass",
  252. {
  253. glass: {
  254. height: math.unit(2 + 3 / 8, "inches"),
  255. mass: math.unit(75, "g"),
  256. image: { source: "./media/objects/shot-glass.svg" },
  257. name: "Bottle"
  258. }
  259. }
  260. )
  261. });
  262. results.push({
  263. name: "Beer Bottle",
  264. constructor: () => makeObject(
  265. "Beer Bottle",
  266. {
  267. longneck: {
  268. height: math.unit(9, "inches"),
  269. mass: math.unit(200, "g"),
  270. image: { source: "./media/objects/beer-bottle.svg" },
  271. name: "Longneck Bottle"
  272. }
  273. }
  274. )
  275. });
  276. results.push({
  277. name: "Pencil",
  278. constructor: () => makeObject(
  279. "Pencil",
  280. {
  281. pencil: {
  282. height: math.unit(7.5, "inches"),
  283. mass: math.unit(7, "g"),
  284. image: { source: "./media/objects/pencil.svg" },
  285. name: "Pencil"
  286. }
  287. }
  288. )
  289. });
  290. results.push({
  291. name: "Balls",
  292. constructor: () => makeObject(
  293. "Balls",
  294. {
  295. football: {
  296. height: math.unit("6.7", "inches"),
  297. mass: math.unit(415, "grams"),
  298. image: { source: "./media/objects/balls/football.svg"},
  299. name: "Football",
  300. rename: true
  301. },
  302. golf: {
  303. height: math.unit(1.62, "inches"),
  304. mass: math.unit(45, "g"),
  305. image: { source: "./media/objects/circle.svg" },
  306. name: "Golfball",
  307. rename: true
  308. },
  309. tennis: {
  310. height: math.unit(2.6, "inches"),
  311. mass: math.unit(57, "g"),
  312. image: { source: "./media/objects/circle.svg" },
  313. name: "Tennisball",
  314. rename: true
  315. },
  316. baseball: {
  317. height: math.unit(2.9, "inches"),
  318. mass: math.unit(145, "g"),
  319. image: { source: "./media/objects/circle.svg" },
  320. name: "Baseball",
  321. rename: true
  322. },
  323. volleyball: {
  324. height: math.unit(8, "inches"),
  325. mass: math.unit(270, "g"),
  326. image: { source: "./media/objects/circle.svg" },
  327. name: "Volleyball",
  328. rename: true
  329. }
  330. }
  331. )
  332. });
  333. results.push({
  334. name: "Paperclip",
  335. constructor: () => makeObject(
  336. "Paperclip",
  337. {
  338. paperclip: {
  339. height: math.unit(1.834, "inches"),
  340. mass: math.unit(1, "g"),
  341. image: { source: "./media/objects/paperclip.svg" },
  342. name: "Paperclip"
  343. }
  344. }
  345. )
  346. });
  347. results.push({
  348. name: "Pebbles",
  349. constructor: () => makeObject(
  350. "Pebbles",
  351. {
  352. gravelGrain: {
  353. height: math.unit(20, "mm"),
  354. image: { source: "./media/objects/pebble.svg" },
  355. name: "Grain of gravel",
  356. rename: true
  357. },
  358. sandGrain: {
  359. height: math.unit(0.5, "mm"),
  360. image: { source: "./media/objects/pebble.svg" },
  361. name: "Grain of sand",
  362. rename: true
  363. },
  364. siltGrain: {
  365. height: math.unit(0.03, "mm"),
  366. image: { source: "./media/objects/pebble.svg" },
  367. name: "Grain of silt",
  368. rename: true
  369. },
  370. }
  371. )
  372. });
  373. results.push({
  374. name: "Credit Card",
  375. constructor: () => makeObject(
  376. "Credit Card",
  377. {
  378. creditCard: {
  379. height: math.unit(53.98, "mm"),
  380. image: { source: "./media/objects/credit-card.svg" },
  381. name: "Credit card",
  382. },
  383. creditCardVertical: {
  384. height: math.unit(85.60, "mm"),
  385. image: { source: "./media/objects/credit-card-vertical.svg" },
  386. name: "Credit card (vertical)",
  387. },
  388. }
  389. )
  390. });
  391. results.push({
  392. name: "Molecular",
  393. constructor: () => makeObject(
  394. "Molecular",
  395. {
  396. hydrogen: {
  397. height: math.unit(1.06e-10, "m"),
  398. mass: math.unit(1, "dalton"),
  399. image: { source: "./media/objects/circle.svg" },
  400. name: "Hydrogen atom",
  401. rename: true
  402. },
  403. proton: {
  404. height: math.unit(0.877e-15, "m"),
  405. mass: math.unit(1, "dalton"),
  406. image: { source: "./media/objects/circle.svg" },
  407. name: "Proton",
  408. rename: true
  409. },
  410. }
  411. )
  412. });
  413. results.push({
  414. name: "Flagpole",
  415. constructor: () => makeObject(
  416. "Flagpole",
  417. {
  418. residential: {
  419. height: math.unit(20, "feet"),
  420. image: { source: "./media/objects/flagpole.svg" },
  421. name: "Residential"
  422. },
  423. medium: {
  424. height: math.unit(50, "feet"),
  425. image: { source: "./media/objects/flagpole.svg" },
  426. name: "Medium"
  427. },
  428. large: {
  429. height: math.unit(100, "feet"),
  430. image: { source: "./media/objects/flagpole.svg" },
  431. name: "Large"
  432. },
  433. }
  434. )
  435. });
  436. results.push({
  437. name: "Vending Machine",
  438. constructor: () => makeObject(
  439. "Vending Machine",
  440. {
  441. object: {
  442. height: math.unit(183, "cm"),
  443. mass: math.unit(347, "kg"),
  444. image: { source: "./media/objects/vending-machine.svg" },
  445. name: "Vending Machine"
  446. }
  447. }
  448. )
  449. })
  450. results.push({
  451. name: "International Space Station",
  452. constructor: () => makeObject(
  453. "International Space Station",
  454. {
  455. object: {
  456. height: math.unit(209, "feet"),
  457. mass: math.unit(925300, "lbs"),
  458. image: { source: "./media/objects/international-space-station.svg" },
  459. name: "International Space Station"
  460. }
  461. }
  462. )
  463. })
  464. results.push(makeHeight(
  465. [
  466. ["king", 4, "inches"],
  467. ["queen", 351 / 407 * 4, "inches"],
  468. ["bishop", 340 / 407 * 4, "inches"],
  469. ["knight", 309 / 407 * 4, "inches"],
  470. ["rook", 271 / 407 * 4, "inches"],
  471. ["pawn", 197 / 407 * 4, "inches"],
  472. ],
  473. "Chess Pieces",
  474. "chess_"
  475. ));
  476. results.push({
  477. name: "Strand",
  478. constructor: () => {
  479. views = {};
  480. viewInfo = {
  481. opticalFibre: {
  482. name: "Optical Fibre",
  483. thickness: math.unit(0.375, "mm")
  484. },
  485. hair: {
  486. name: "Hair",
  487. thickness: math.unit(0.07, "mm")
  488. },
  489. spiderSilk: {
  490. name: "Spider Silk",
  491. thickness: math.unit(0.003, "mm")
  492. },
  493. suspensionCables: {
  494. name: "Suspension Bridge Cables",
  495. thickness: math.unit(3, "feet")
  496. },
  497. capillary: {
  498. name: "Capillary",
  499. thickness: math.unit(7.5, "micrometers")
  500. },
  501. vein: {
  502. name: "Vein",
  503. thickness: math.unit(10, "mm")
  504. },
  505. thread: {
  506. name: "Thread",
  507. thickness: math.unit(0.4, "mm")
  508. },
  509. powerCord: {
  510. name: "Power Cord",
  511. thickness: math.unit(0.25, "inches")
  512. },
  513. pianoWireBass: {
  514. name: "Piano Wire (Bass)",
  515. thickness: math.unit(8.5, "mm")
  516. },
  517. pianoWireTreble: {
  518. name: "Piano Wire (Treble)",
  519. thickness: math.unit(0.85, "mm")
  520. },
  521. guitarString: {
  522. name: "Guitar String",
  523. thickness: math.unit(0.03, "inches")
  524. },
  525. powerLineThin: {
  526. name: "Power Line (Thin)",
  527. thickness: math.unit(0.325, "inches")
  528. },
  529. powerLineThick: {
  530. name: "Power Line (Thick)",
  531. thickness: math.unit(0.720, "inches")
  532. },
  533. carbonNanotube: {
  534. name: "Carbon Nanotube",
  535. thickness: math.unit(4, "nm")
  536. }
  537. }
  538. Object.entries(viewInfo).forEach(([key, value]) => {
  539. views[key] = {
  540. attributes: {
  541. height: {
  542. name: "Height",
  543. power: 1,
  544. type: "length",
  545. base: math.multiply(value.thickness, 253.4385 / 5)
  546. },
  547. thickness: {
  548. name: "Thickness",
  549. power: 1,
  550. type: "length",
  551. base: value.thickness
  552. },
  553. },
  554. image: {
  555. source: "./media/objects/strand.svg"
  556. },
  557. name: value.name,
  558. rename: true
  559. }
  560. if (value.mass) {
  561. views[key].attributes.mass = {
  562. name: "Mass",
  563. power: 3,
  564. type: "mass",
  565. base: value.mass
  566. };
  567. }
  568. });
  569. return makeEntity({ name: "Strand" }, views);
  570. }
  571. })
  572. results.push(makeHeight(
  573. [
  574. ["mitochondria", 0.5, "micrometer"],
  575. ["bacteria", 0.3, "micrometer"],
  576. ["sperm", 4.65, "micrometers"],
  577. ["red-blood-cell", 6.5, "micrometer"],
  578. ["white-blood-cell", 13, "micrometer"],
  579. ["animal-cell", 25, "micrometers"],
  580. ["plant-cell", 75, "micrometers"],
  581. ["amoeba-proteus", 500, "micrometers"],
  582. ["chaos-carolinensis", 1500, "micrometers"],
  583. ],
  584. "Cells",
  585. "cell_"
  586. ))
  587. results.push(makeHeight(
  588. [
  589. ["stop-sign", 36, "inches"],
  590. ["yield-sign", 36, "inches"],
  591. ["pedestrian-crossing", 30, "inches"],
  592. ["highway-exit", 150, "inches"]
  593. ],
  594. "Signs",
  595. ""
  596. ))
  597. results.push({
  598. name: "Game Consoles",
  599. constructor: () => makeVehicleGroup([
  600. {
  601. name: "Switch",
  602. mass: math.unit(10.48, "ounces"),
  603. sides: {
  604. "Front": { height: math.unit(4.01, "inches") },
  605. "Top": { height: math.unit(1.13, "inches") },
  606. "Side": { height: math.unit(4.01, "inches") },
  607. }
  608. }
  609. ],
  610. "Game Consoles",
  611. "",
  612. "objects")
  613. })
  614. results.push({
  615. name: "Electromagnetic Waves",
  616. constructor: () => {
  617. views = {};
  618. viewInfo = [
  619. ["Gamma rays", math.unit(1, "pm")],
  620. ["Hard X-rays", math.unit(20, "pm")],
  621. ["Soft X-rays", math.unit(1, "nm")],
  622. ["Extreme-ultraviolet", math.unit(50, "nm")],
  623. ["UVC", math.unit(200, "nm")],
  624. ["UVB", math.unit(295, "nm")],
  625. ["UVA", math.unit(350, "nm")],
  626. ["Violet", math.unit(415, "nm")],
  627. ["Blue", math.unit(470, "nm")],
  628. ["Cyan", math.unit(490, "nm")],
  629. ["Green", math.unit(530, "nm")],
  630. ["Yellow", math.unit(580, "nm")],
  631. ["Orange", math.unit(610, "nm")],
  632. ["Red", math.unit(690, "nm")],
  633. ["Near-infrared", math.unit(1.2, "um")],
  634. ["Short-wavelength infrared", math.unit(2.2, "um")],
  635. ["Mid-wavelength infrared", math.unit(6.5, "um")],
  636. ["Long-wavelength infrared", math.unit(12, "um")],
  637. ["Far infrared", math.unit(500, "um")],
  638. ["D-band microwaves (mm-wave)", math.unit(2, "mm")],
  639. ["S-band microwaves (ovens, wifi)", math.unit(11, "cm")],
  640. ["L-band microwaves (GPS)", math.unit(22, "cm")],
  641. ["UHF", math.unit(50, "cm")],
  642. ["FM radio", math.unit(3.5, "m")],
  643. ["VHF", math.unit(5, "m")],
  644. ["HF", math.unit(50, "m")],
  645. ["AM radio", math.unit(250, "m")],
  646. ["MF", math.unit(500, "m")],
  647. ["LF", math.unit(5, "km")],
  648. ["VLF", math.unit(50, "km")],
  649. ["ULF", math.unit(500, "km")],
  650. ["SLF", math.unit(5000, "km")],
  651. ["ELF", math.unit(50000, "km")],
  652. ]
  653. viewInfo.forEach(([name, length]) => {
  654. views[name] = {
  655. attributes: {
  656. height: {
  657. name: "Height",
  658. power: 1,
  659. type: "length",
  660. base: math.multiply(length, 2)
  661. }
  662. },
  663. image: {
  664. source: "./media/objects/sine-wave.svg"
  665. },
  666. name: name,
  667. rename: true,
  668. default: name === "Green"
  669. }
  670. });
  671. return makeEntity({ name: "Electromagnetic Waves" }, views);
  672. }
  673. })
  674. results.push(makeHeight(
  675. [
  676. [".308 Winchester", 71.374, "mm", "./media/objects/ammunition/.308 Winchester.svg"],
  677. [".22 LR", 25.40, "mm", "./media/objects/ammunition/.22 LR.svg"],
  678. ["9mm Luger", 29.69, "mm", "./media/objects/ammunition/9mm Luger.svg"],
  679. [".223 Remington", 2.260, "inches", "./media/objects/ammunition/.223 Remington.svg"],
  680. [".30-06 Springfield", 3.340, "inches", "./media/objects/ammunition/.30-06 Springfield.svg"],
  681. ],
  682. "Ammunition",
  683. "",
  684. "objects",
  685. false
  686. ))
  687. results.push(makeHeight(
  688. [
  689. ["No. 1 (11 Oz.)", 4, "inches", "./media/objects/tin-cans/No. 1 (11 Oz.).svg"],
  690. ["No. 2 (20 Oz.)", 4 + 9/16, "inches", "./media/objects/tin-cans/No. 2 (20 Oz.).svg"],
  691. ["No. 3 (52 Oz.)", 7, "inches", "./media/objects/tin-cans/No. 3 (52 Oz.).svg"],
  692. ["No. 5 (60 Oz.)", 5 + 5/8, "inches", "./media/objects/tin-cans/No. 5 (60 Oz.).svg"],
  693. ["No. 10 (110 Oz.)", 7, "inches", "./media/objects/tin-cans/No. 10 (110 Oz.).svg"],
  694. ],
  695. "Tin Cans",
  696. ""
  697. ))
  698. results.push(makeHeight(
  699. [
  700. ["Garden Hose", 0.875, "inches"],
  701. ["1 Inch Fire Hose", 1.25, "inches"],
  702. ["1.5 Inch Fire Hose", 1.85, "inches"],
  703. ["1.75 Inch Fire Hose", 2.1, "inches"],
  704. ["2.5 Inch Fire Hose", 3, "inches"],
  705. ["4 Inch Fire Hose", 4.5, "inches"],
  706. ["5 Inch Fire Hose", 5.6, "inches"],
  707. ],
  708. "Hoses",
  709. ""
  710. ))
  711. results.push(makeHeight(
  712. [
  713. ["12 Inch Culvert", 14.75, "inches"],
  714. ["24 Inch Culvert", 26.75, "inches"],
  715. ],
  716. "Pipes",
  717. ""
  718. ))
  719. results.push(makeHeight(
  720. [
  721. ["000 Capsule", 26.1, "mm"],
  722. ["00E Capsule", 25.3, "mm"],
  723. ["00 Capsule", 23.4, "mm"],
  724. ["0E Capsule", 23.5, "mm"],
  725. ["0 Capsule", 21.6, "mm"],
  726. ["1 Capsule", 19.4, "mm"],
  727. ["2 Capsule", 17.6, "mm"],
  728. ["3 Capsule", 15.7, "mm"],
  729. ["4 Capsule", 14.3, "mm"],
  730. ["5 Capsule", 11.1, "mm"],
  731. ],
  732. "Pills",
  733. ""
  734. ));
  735. results.push(makeHeight(
  736. [
  737. ["10' Container", 8 + 6/12, "feet", "./media/objects/shipping-containers/10-foot.svg", math.unit(536.3, "ft^3")],
  738. ["20' Container", 8 + 6/12, "feet", "./media/objects/shipping-containers/20-foot.svg", math.unit(1169, "ft^3")],
  739. ["40' Container", 8 + 6/12, "feet", "./media/objects/shipping-containers/40-foot.svg", math.unit(2385, "ft^3")],
  740. ["40' High Cube Container", 9 + 6/12, "feet", "./media/objects/shipping-containers/40-foot-high-cube.svg", math.unit(2660, "ft^3")],
  741. ["45' High Cube Container", 9 + 6/12, "feet", "./media/objects/shipping-containers/45-foot-high-cube.svg", math.unit(3040, "ft^3")],
  742. ["Container Front", 8 + 6/12, "feet", "./media/objects/shipping-containers/front-normal.svg", math.unit(2385, "ft^3")],
  743. ["High Cube Container Front", 9 + 6/12, "feet", "./media/objects/shipping-containers/front-high-cube.svg", math.unit(2660, "ft^3")],
  744. ],
  745. "Shipping Containers",
  746. ""
  747. ));
  748. results.push(makeHeight(
  749. [
  750. ["AA", 50, "mm"],
  751. ["AAA", 44.1, "mm"]
  752. ],
  753. "Batteries",
  754. ""
  755. ));
  756. results.push(makeHeight(
  757. [
  758. ["Regular", 32, "mm"],
  759. ["Micro", 15, "mm"]
  760. ],
  761. "SD Cards",
  762. ""
  763. ))
  764. 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}]}]}))
  765. 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}]}]}))
  766. 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}]}]}))
  767. results.push(makeModel({
  768. "name": "Flat Shapes",
  769. "kind": "objects",
  770. "forms": [
  771. {
  772. "name": "Circle",
  773. "views": [
  774. {
  775. "name": "Top",
  776. "height": 1,
  777. "area": 0.78539816339
  778. }
  779. ]
  780. },
  781. {
  782. "name": "Square",
  783. "views": [
  784. {
  785. "name": "Top",
  786. "height": 1,
  787. "area": 1
  788. }
  789. ]
  790. },
  791. ]
  792. }))
  793. results.push(makeModel({
  794. "name": "Optical Disc Tracks",
  795. "kind": "objects",
  796. "forms": [
  797. {
  798. "name": "CD",
  799. "views": [
  800. {
  801. "name": "Top",
  802. "height": 3800e-9
  803. }
  804. ]
  805. },
  806. {
  807. "name": "DVD",
  808. "views": [
  809. {
  810. "name": "Top",
  811. "height": 1800e-9
  812. }
  813. ]
  814. },
  815. {
  816. "name": "HD-DVD",
  817. "views": [
  818. {
  819. "name": "Top",
  820. "height": 1400e-9
  821. }
  822. ]
  823. },
  824. {
  825. "name": "Blu-ray",
  826. "views": [
  827. {
  828. "name": "Top",
  829. "height": 1090e-9
  830. }
  831. ]
  832. },
  833. ]
  834. }))
  835. /* ***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}]}]}));
  836. /* ***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}]}]}));
  837. /* ***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}]}]}));
  838. /* ***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}]}]}));
  839. /* ***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}]}]}));
  840. /* ***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}]}]}));
  841. /* ***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}]}]}));
  842. /* ***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}]}]}));
  843. /* ***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}]}]}));
  844. /* ***Coins*** */ results.push(makeModel({"name": "Coins", "kind": "objects", "forms": [{"name": "U.S. Dollar", "views": [{"name": "Top", "height": 0.026492198929190636, "mass": 0.008100000210106373}, {"name": "Side", "height": 0.0020000000949949026, "mass": 0.008100000210106373}]}, {"name": "U.S. Half Dollar", "views": [{"name": "Top", "height": 0.03060699999332428, "mass": 0.011339999735355377}, {"name": "Side", "height": 0.00215000007301569, "mass": 0.011339999735355377}]}, {"name": "U.S. Quarter", "views": [{"name": "Top", "height": 0.024257000535726547, "mass": 0.005669999867677689}, {"name": "Side", "height": 0.0017500000540167093, "mass": 0.005669999867677689}]}, {"name": "U.S. Dime", "views": [{"name": "Top", "height": 0.017906999215483665, "mass": 0.002268000040203333}, {"name": "Side", "height": 0.0013500000350177288, "mass": 0.002268000040203333}]}, {"name": "U.S. Nickel", "views": [{"name": "Top", "height": 0.021208999678492546, "mass": 0.004999999888241291}, {"name": "Side", "height": 0.0019500000635161996, "mass": 0.004999999888241291}]}, {"name": "U.S. Penny", "views": [{"name": "Top", "height": 0.019050000235438347, "mass": 0.0024999999441206455}, {"name": "Side", "height": 0.0015200000489130616, "mass": 0.0024999999441206455}]}, {"name": "UK \u00a35", "views": [{"name": "Top", "height": 0.028400002047419548, "mass": 0.028279999271035194}, {"name": "Side", "height": 0.0028900043107569218, "mass": 0.028279999271035194}]}, {"name": "UK \u00a32", "views": [{"name": "Top", "height": 0.028400002047419548, "mass": 0.012000000104308128}, {"name": "Side", "height": 0.0025000039022415876, "mass": 0.012000000104308128}]}, {"name": "UK \u00a31", "views": [{"name": "Top", "height": 0.023430000990629196, "mass": 0.008750000037252903}, {"name": "Side", "height": 0.0028000001329928637, "mass": 0.008750000037252903}]}, {"name": "UK 50p", "views": [{"name": "Top", "height": 0.027300003916025162, "mass": 0.00800000037997961}, {"name": "Side", "height": 0.0017800000496208668, "mass": 0.00800000037997961}]}, {"name": "UK 20p", "views": [{"name": "Top", "height": 0.021400000900030136, "mass": 0.004999999888241291}, {"name": "Side", "height": 0.0017000001389533281, "mass": 0.004999999888241291}]}, {"name": "UK 10p", "views": [{"name": "Top", "height": 0.024500001221895218, "mass": 0.006500000134110451}, {"name": "Side", "height": 0.0018500001169741154, "mass": 0.006500000134110451}]}, {"name": "UK 5p", "views": [{"name": "Top", "height": 0.018000001087784767, "mass": 0.0032500000670552254}, {"name": "Side", "height": 0.0017000001389533281, "mass": 0.0032500000670552254}]}, {"name": "UK 2p", "views": [{"name": "Top", "height": 0.02590000070631504, "mass": 0.007120000198483467}, {"name": "Side", "height": 0.00203000009059906, "mass": 0.007120000198483467}]}, {"name": "UK 1p", "views": [{"name": "Top", "height": 0.0203000009059906, "mass": 0.0035600000992417336}, {"name": "Side", "height": 0.0016500001074746251, "mass": 0.0035600000992417336}]}, {"name": "Canadian Two Dollar", "views": [{"name": "Top", "height": 0.02800000086426735, "mass": 0.007300000172108412}, {"name": "Side", "height": 0.0018000000854954123, "mass": 0.007300000172108412}]}, {"name": "Canadian Dollar", "views": [{"name": "Top", "height": 0.026500001549720764, "mass": 0.0062699997797608376}, {"name": "Side", "height": 0.0019500007620081306, "mass": 0.0062699997797608376}]}, {"name": "2 Euro", "views": [{"name": "Top", "height": 0.02575000189244747, "mass": 0.008500000461935997}, {"name": "Side", "height": 0.0022000002209097147, "mass": 0.008500000461935997}]}, {"name": "1 Euro", "views": [{"name": "Top", "height": 0.023250000551342964, "mass": 0.007499999832361937}, {"name": "Side", "height": 0.0023300000466406345, "mass": 0.007499999832361937}]}, {"name": "500 Yen", "views": [{"name": "Top", "height": 0.026500001549720764, "mass": 0.0071000000461936}, {"name": "Side", "height": 0.0018100000452250242, "mass": 0.0071000000461936}]}, {"name": "50 Yen", "views": [{"name": "Top", "height": 0.021000003442168236, "mass": 0.004000000189989805}, {"name": "Side", "height": 0.0015100002055987716, "mass": 0.004000000189989805}]}, {"name": "5 Yen", "views": [{"name": "Top", "height": 0.02200000174343586, "mass": 0.0037499999161809683}, {"name": "Side", "height": 0.0015100002055987716, "mass": 0.0037499999161809683}]}]}));
  845. /* ***INSERT HERE*** */
  846. return results;
  847. }