less copy protection, more size visualization
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

830 lines
26 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 makeObjects() {
  133. const results = [];
  134. results.push({
  135. name: "Soda Can",
  136. constructor: () => makeObject(
  137. "Soda Can",
  138. {
  139. front: {
  140. height: math.unit(4.83, "inches"),
  141. mass: math.unit(15, "grams"),
  142. image: { source: "./media/objects/soda-can.svg" },
  143. name: "Side"
  144. }
  145. }
  146. )
  147. });
  148. results.push({
  149. name: "Sewing Pin",
  150. constructor: () => makeObject(
  151. "Sewing Pin",
  152. {
  153. side: {
  154. height: math.unit(1.5, "inches"),
  155. image: { source: "./media/objects/sewing-pin.svg" },
  156. name: "Side"
  157. },
  158. top: {
  159. height: math.unit(2, "millimeters"),
  160. image: { source: "./media/objects/pin-head.svg" },
  161. name: "Head"
  162. }
  163. }
  164. )
  165. });
  166. results.push({
  167. name: "Lamp",
  168. constructor: () => makeObject(
  169. "Lamp",
  170. {
  171. lamp: {
  172. height: math.unit(30, "inches"),
  173. mass: math.unit(10, "lbs"),
  174. image: { source: "./media/objects/lamp.svg" },
  175. name: "Lamp"
  176. }
  177. }
  178. )
  179. });
  180. results.push({
  181. name: "Nail Polish",
  182. constructor: () => makeObject(
  183. "Nail Polish",
  184. {
  185. bottle: {
  186. height: math.unit(3.25, "inches"),
  187. mass: math.unit(66, "g"),
  188. image: { source: "./media/objects/nail-polish.svg" },
  189. name: "Bottle"
  190. }
  191. }
  192. )
  193. });
  194. results.push({
  195. name: "Shot Glass",
  196. constructor: () => makeObject(
  197. "Shot Glass",
  198. {
  199. glass: {
  200. height: math.unit(2 + 3 / 8, "inches"),
  201. mass: math.unit(75, "g"),
  202. image: { source: "./media/objects/shot-glass.svg" },
  203. name: "Bottle"
  204. }
  205. }
  206. )
  207. });
  208. results.push({
  209. name: "Beer Bottle",
  210. constructor: () => makeObject(
  211. "Beer Bottle",
  212. {
  213. longneck: {
  214. height: math.unit(9, "inches"),
  215. mass: math.unit(200, "g"),
  216. image: { source: "./media/objects/beer-bottle.svg" },
  217. name: "Longneck Bottle"
  218. }
  219. }
  220. )
  221. });
  222. results.push({
  223. name: "Coin",
  224. constructor: () => makeObject(
  225. "Coin",
  226. {
  227. penny: {
  228. height: math.unit(0.75, "inches"),
  229. mass: math.unit(2.5, "g"),
  230. image: { source: "./media/objects/circle.svg" },
  231. name: "Penny",
  232. rename: true
  233. },
  234. nickel: {
  235. height: math.unit(0.835, "inches"),
  236. mass: math.unit(5, "g"),
  237. image: { source: "./media/objects/circle.svg" },
  238. name: "Nickel",
  239. rename: true
  240. },
  241. dime: {
  242. height: math.unit(0.705, "inches"),
  243. mass: math.unit(2.268, "g"),
  244. image: { source: "./media/objects/circle.svg" },
  245. name: "Dime",
  246. rename: true
  247. },
  248. quarter: {
  249. height: math.unit(0.955, "inches"),
  250. mass: math.unit(5.67, "g"),
  251. image: { source: "./media/objects/circle.svg" },
  252. name: "Quarter",
  253. rename: true
  254. },
  255. dollar: {
  256. height: math.unit(1.043, "inches"),
  257. mass: math.unit(8.1, "g"),
  258. image: { source: "./media/objects/circle.svg" },
  259. name: "Dollar Coin",
  260. rename: true
  261. },
  262. }
  263. )
  264. });
  265. results.push({
  266. name: "Pencil",
  267. constructor: () => makeObject(
  268. "Pencil",
  269. {
  270. pencil: {
  271. height: math.unit(7.5, "inches"),
  272. mass: math.unit(7, "g"),
  273. image: { source: "./media/objects/pencil.svg" },
  274. name: "Pencil"
  275. }
  276. }
  277. )
  278. });
  279. results.push({
  280. name: "Balls",
  281. constructor: () => makeObject(
  282. "Balls",
  283. {
  284. football: {
  285. height: math.unit("6.7", "inches"),
  286. mass: math.unit(415, "grams"),
  287. image: { source: "./media/objects/balls/football.svg"},
  288. name: "Football",
  289. rename: true
  290. },
  291. golf: {
  292. height: math.unit(1.62, "inches"),
  293. mass: math.unit(45, "g"),
  294. image: { source: "./media/objects/circle.svg" },
  295. name: "Golfball",
  296. rename: true
  297. },
  298. tennis: {
  299. height: math.unit(2.6, "inches"),
  300. mass: math.unit(57, "g"),
  301. image: { source: "./media/objects/circle.svg" },
  302. name: "Tennisball",
  303. rename: true
  304. },
  305. baseball: {
  306. height: math.unit(2.9, "inches"),
  307. mass: math.unit(145, "g"),
  308. image: { source: "./media/objects/circle.svg" },
  309. name: "Baseball",
  310. rename: true
  311. },
  312. volleyball: {
  313. height: math.unit(8, "inches"),
  314. mass: math.unit(270, "g"),
  315. image: { source: "./media/objects/circle.svg" },
  316. name: "Volleyball",
  317. rename: true
  318. }
  319. }
  320. )
  321. });
  322. results.push({
  323. name: "Paperclip",
  324. constructor: () => makeObject(
  325. "Paperclip",
  326. {
  327. paperclip: {
  328. height: math.unit(1.834, "inches"),
  329. mass: math.unit(1, "g"),
  330. image: { source: "./media/objects/paperclip.svg" },
  331. name: "Paperclip"
  332. }
  333. }
  334. )
  335. });
  336. results.push({
  337. name: "Pebbles",
  338. constructor: () => makeObject(
  339. "Pebbles",
  340. {
  341. gravelGrain: {
  342. height: math.unit(20, "mm"),
  343. image: { source: "./media/objects/pebble.svg" },
  344. name: "Grain of gravel",
  345. rename: true
  346. },
  347. sandGrain: {
  348. height: math.unit(0.5, "mm"),
  349. image: { source: "./media/objects/pebble.svg" },
  350. name: "Grain of sand",
  351. rename: true
  352. },
  353. siltGrain: {
  354. height: math.unit(0.03, "mm"),
  355. image: { source: "./media/objects/pebble.svg" },
  356. name: "Grain of silt",
  357. rename: true
  358. },
  359. }
  360. )
  361. });
  362. results.push({
  363. name: "Credit Card",
  364. constructor: () => makeObject(
  365. "Credit Card",
  366. {
  367. creditCard: {
  368. height: math.unit(53.98, "mm"),
  369. image: { source: "./media/objects/credit-card.svg" },
  370. name: "Credit card",
  371. },
  372. creditCardVertical: {
  373. height: math.unit(85.60, "mm"),
  374. image: { source: "./media/objects/credit-card-vertical.svg" },
  375. name: "Credit card (vertical)",
  376. },
  377. }
  378. )
  379. });
  380. results.push({
  381. name: "Molecular",
  382. constructor: () => makeObject(
  383. "Molecular",
  384. {
  385. hydrogen: {
  386. height: math.unit(1.06e-10, "m"),
  387. mass: math.unit(1, "dalton"),
  388. image: { source: "./media/objects/circle.svg" },
  389. name: "Hydrogen atom",
  390. rename: true
  391. },
  392. proton: {
  393. height: math.unit(0.877e-15, "m"),
  394. mass: math.unit(1, "dalton"),
  395. image: { source: "./media/objects/circle.svg" },
  396. name: "Proton",
  397. rename: true
  398. },
  399. }
  400. )
  401. });
  402. results.push({
  403. name: "Flagpole",
  404. constructor: () => makeObject(
  405. "Flagpole",
  406. {
  407. residential: {
  408. height: math.unit(20, "feet"),
  409. image: { source: "./media/objects/flagpole.svg" },
  410. name: "Residential"
  411. },
  412. medium: {
  413. height: math.unit(50, "feet"),
  414. image: { source: "./media/objects/flagpole.svg" },
  415. name: "Medium"
  416. },
  417. large: {
  418. height: math.unit(100, "feet"),
  419. image: { source: "./media/objects/flagpole.svg" },
  420. name: "Large"
  421. },
  422. }
  423. )
  424. });
  425. results.push({
  426. name: "Vending Machine",
  427. constructor: () => makeObject(
  428. "Vending Machine",
  429. {
  430. object: {
  431. height: math.unit(183, "cm"),
  432. mass: math.unit(347, "kg"),
  433. image: { source: "./media/objects/vending-machine.svg" },
  434. name: "Vending Machine"
  435. }
  436. }
  437. )
  438. })
  439. results.push({
  440. name: "International Space Station",
  441. constructor: () => makeObject(
  442. "International Space Station",
  443. {
  444. object: {
  445. height: math.unit(209, "feet"),
  446. mass: math.unit(925300, "lbs"),
  447. image: { source: "./media/objects/international-space-station.svg" },
  448. name: "International Space Station"
  449. }
  450. }
  451. )
  452. })
  453. results.push(makeHeight(
  454. [
  455. ["king", 4, "inches"],
  456. ["queen", 351 / 407 * 4, "inches"],
  457. ["bishop", 340 / 407 * 4, "inches"],
  458. ["knight", 309 / 407 * 4, "inches"],
  459. ["rook", 271 / 407 * 4, "inches"],
  460. ["pawn", 197 / 407 * 4, "inches"],
  461. ],
  462. "Chess Pieces",
  463. "chess_"
  464. ));
  465. results.push({
  466. name: "Strand",
  467. constructor: () => {
  468. views = {};
  469. viewInfo = {
  470. opticalFibre: {
  471. name: "Optical Fibre",
  472. thickness: math.unit(0.375, "mm")
  473. },
  474. hair: {
  475. name: "Hair",
  476. thickness: math.unit(0.07, "mm")
  477. },
  478. spiderSilk: {
  479. name: "Spider Silk",
  480. thickness: math.unit(0.003, "mm")
  481. },
  482. suspensionCables: {
  483. name: "Suspension Bridge Cables",
  484. thickness: math.unit(3, "feet")
  485. },
  486. capillary: {
  487. name: "Capillary",
  488. thickness: math.unit(7.5, "micrometers")
  489. },
  490. vein: {
  491. name: "Vein",
  492. thickness: math.unit(10, "mm")
  493. },
  494. thread: {
  495. name: "Thread",
  496. thickness: math.unit(0.4, "mm")
  497. },
  498. powerCord: {
  499. name: "Power Cord",
  500. thickness: math.unit(0.25, "inches")
  501. },
  502. pianoWireBass: {
  503. name: "Piano Wire (Bass)",
  504. thickness: math.unit(8.5, "mm")
  505. },
  506. pianoWireTreble: {
  507. name: "Piano Wire (Treble)",
  508. thickness: math.unit(0.85, "mm")
  509. },
  510. guitarString: {
  511. name: "Guitar String",
  512. thickness: math.unit(0.03, "inches")
  513. },
  514. powerLineThin: {
  515. name: "Power Line (Thin)",
  516. thickness: math.unit(0.325, "inches")
  517. },
  518. powerLineThick: {
  519. name: "Power Line (Thick)",
  520. thickness: math.unit(0.720, "inches")
  521. },
  522. carbonNanotube: {
  523. name: "Carbon Nanotube",
  524. thickness: math.unit(4, "nm")
  525. }
  526. }
  527. Object.entries(viewInfo).forEach(([key, value]) => {
  528. views[key] = {
  529. attributes: {
  530. height: {
  531. name: "Height",
  532. power: 1,
  533. type: "length",
  534. base: math.multiply(value.thickness, 253.4385 / 5)
  535. },
  536. thickness: {
  537. name: "Thickness",
  538. power: 1,
  539. type: "length",
  540. base: value.thickness
  541. },
  542. },
  543. image: {
  544. source: "./media/objects/strand.svg"
  545. },
  546. name: value.name,
  547. rename: true
  548. }
  549. if (value.mass) {
  550. views[key].attributes.mass = {
  551. name: "Mass",
  552. power: 3,
  553. type: "mass",
  554. base: value.mass
  555. };
  556. }
  557. });
  558. return makeEntity({ name: "Strand" }, views);
  559. }
  560. })
  561. results.push(makeHeight(
  562. [
  563. ["mitochondria", 0.5, "micrometer"],
  564. ["bacteria", 0.3, "micrometer"],
  565. ["sperm", 4.65, "micrometers"],
  566. ["red-blood-cell", 6.5, "micrometer"],
  567. ["white-blood-cell", 13, "micrometer"],
  568. ["animal-cell", 25, "micrometers"],
  569. ["plant-cell", 75, "micrometers"],
  570. ["amoeba-proteus", 500, "micrometers"],
  571. ["chaos-carolinensis", 1500, "micrometers"],
  572. ],
  573. "Cells",
  574. "cell_"
  575. ))
  576. results.push(makeHeight(
  577. [
  578. ["stop-sign", 36, "inches"],
  579. ["yield-sign", 36, "inches"],
  580. ["pedestrian-crossing", 30, "inches"],
  581. ["highway-exit", 150, "inches"]
  582. ],
  583. "Signs",
  584. ""
  585. ))
  586. results.push({
  587. name: "Game Consoles",
  588. constructor: () => makeVehicleGroup([
  589. {
  590. name: "Switch",
  591. mass: math.unit(10.48, "ounces"),
  592. sides: {
  593. "Front": { height: math.unit(4.01, "inches") },
  594. "Top": { height: math.unit(1.13, "inches") },
  595. "Side": { height: math.unit(4.01, "inches") },
  596. }
  597. }
  598. ],
  599. "Game Consoles",
  600. "",
  601. "objects")
  602. })
  603. results.push({
  604. name: "Electromagnetic Waves",
  605. constructor: () => {
  606. views = {};
  607. viewInfo = [
  608. ["Gamma rays", math.unit(1, "pm")],
  609. ["Hard X-rays", math.unit(20, "pm")],
  610. ["Soft X-rays", math.unit(1, "nm")],
  611. ["Extreme-ultraviolet", math.unit(50, "nm")],
  612. ["UVC", math.unit(200, "nm")],
  613. ["UVB", math.unit(295, "nm")],
  614. ["UVA", math.unit(350, "nm")],
  615. ["Violet", math.unit(415, "nm")],
  616. ["Blue", math.unit(470, "nm")],
  617. ["Cyan", math.unit(490, "nm")],
  618. ["Green", math.unit(530, "nm")],
  619. ["Yellow", math.unit(580, "nm")],
  620. ["Orange", math.unit(610, "nm")],
  621. ["Red", math.unit(690, "nm")],
  622. ["Near-infrared", math.unit(1.2, "um")],
  623. ["Short-wavelength infrared", math.unit(2.2, "um")],
  624. ["Mid-wavelength infrared", math.unit(6.5, "um")],
  625. ["Long-wavelength infrared", math.unit(12, "um")],
  626. ["Far infrared", math.unit(500, "um")],
  627. ["D-band microwaves (mm-wave)", math.unit(2, "mm")],
  628. ["S-band microwaves (ovens, wifi)", math.unit(11, "cm")],
  629. ["L-band microwaves (GPS)", math.unit(22, "cm")],
  630. ["UHF", math.unit(50, "cm")],
  631. ["FM radio", math.unit(3.5, "m")],
  632. ["VHF", math.unit(5, "m")],
  633. ["HF", math.unit(50, "m")],
  634. ["AM radio", math.unit(250, "m")],
  635. ["MF", math.unit(500, "m")],
  636. ["LF", math.unit(5, "km")],
  637. ["VLF", math.unit(50, "km")],
  638. ["ULF", math.unit(500, "km")],
  639. ["SLF", math.unit(5000, "km")],
  640. ["ELF", math.unit(50000, "km")],
  641. ]
  642. viewInfo.forEach(([name, length]) => {
  643. views[name] = {
  644. attributes: {
  645. height: {
  646. name: "Height",
  647. power: 1,
  648. type: "length",
  649. base: math.multiply(length, 2)
  650. }
  651. },
  652. image: {
  653. source: "./media/objects/sine-wave.svg"
  654. },
  655. name: name,
  656. rename: true,
  657. default: name === "Green"
  658. }
  659. });
  660. return makeEntity({ name: "Electromagnetic Waves" }, views);
  661. }
  662. })
  663. results.push(makeHeight(
  664. [
  665. [".308 Winchester", 71.374, "mm", "./media/objects/ammunition/.308 Winchester.svg"],
  666. [".22 LR", 25.40, "mm", "./media/objects/ammunition/.22 LR.svg"],
  667. ["9mm Luger", 29.69, "mm", "./media/objects/ammunition/9mm Luger.svg"],
  668. [".223 Remington", 2.260, "inches", "./media/objects/ammunition/.223 Remington.svg"],
  669. [".30-06 Springfield", 3.340, "inches", "./media/objects/ammunition/.30-06 Springfield.svg"],
  670. ],
  671. "Ammunition",
  672. "",
  673. "objects",
  674. false
  675. ))
  676. results.push(makeHeight(
  677. [
  678. ["No. 1 (11 Oz.)", 4, "inches", "./media/objects/tin-cans/No. 1 (11 Oz.).svg"],
  679. ["No. 2 (20 Oz.)", 4 + 9/16, "inches", "./media/objects/tin-cans/No. 2 (20 Oz.).svg"],
  680. ["No. 3 (52 Oz.)", 7, "inches", "./media/objects/tin-cans/No. 3 (52 Oz.).svg"],
  681. ["No. 5 (60 Oz.)", 5 + 5/8, "inches", "./media/objects/tin-cans/No. 5 (60 Oz.).svg"],
  682. ["No. 10 (110 Oz.)", 7, "inches", "./media/objects/tin-cans/No. 10 (110 Oz.).svg"],
  683. ],
  684. "Tin Cans",
  685. ""
  686. ))
  687. results.push(makeHeight(
  688. [
  689. ["Garden Hose", 0.875, "inches"],
  690. ["1 Inch Fire Hose", 1.25, "inches"],
  691. ["1.5 Inch Fire Hose", 1.85, "inches"],
  692. ["1.75 Inch Fire Hose", 2.1, "inches"],
  693. ["2.5 Inch Fire Hose", 3, "inches"],
  694. ["4 Inch Fire Hose", 4.5, "inches"],
  695. ["5 Inch Fire Hose", 5.6, "inches"],
  696. ],
  697. "Hoses",
  698. ""
  699. ))
  700. results.push(makeHeight(
  701. [
  702. ["12 Inch Culvert", 14.75, "inches"],
  703. ["24 Inch Culvert", 26.75, "inches"],
  704. ],
  705. "Pipes",
  706. ""
  707. ))
  708. results.push(makeHeight(
  709. [
  710. ["000 Capsule", 26.1, "mm"],
  711. ["00E Capsule", 25.3, "mm"],
  712. ["00 Capsule", 23.4, "mm"],
  713. ["0E Capsule", 23.5, "mm"],
  714. ["0 Capsule", 21.6, "mm"],
  715. ["1 Capsule", 19.4, "mm"],
  716. ["2 Capsule", 17.6, "mm"],
  717. ["3 Capsule", 15.7, "mm"],
  718. ["4 Capsule", 14.3, "mm"],
  719. ["5 Capsule", 11.1, "mm"],
  720. ],
  721. "Pills",
  722. ""
  723. ));
  724. results.push(makeHeight(
  725. [
  726. ["000 Capsule", 26.1, "mm"],
  727. ["00E Capsule", 25.3, "mm"],
  728. ["00 Capsule", 23.4, "mm"],
  729. ["0E Capsule", 23.5, "mm"],
  730. ["0 Capsule", 21.6, "mm"],
  731. ["1 Capsule", 19.4, "mm"],
  732. ["2 Capsule", 17.6, "mm"],
  733. ["3 Capsule", 15.7, "mm"],
  734. ["4 Capsule", 14.3, "mm"],
  735. ["5 Capsule", 11.1, "mm"],
  736. ],
  737. "Pills",
  738. ""
  739. ));
  740. results.push(makeHeight(
  741. [
  742. ["10' Container", 8 + 6/12, "feet", "./media/objects/shipping-containers/10-foot.svg", math.unit(536.3, "ft^3")],
  743. ["20' Container", 8 + 6/12, "feet", "./media/objects/shipping-containers/20-foot.svg", math.unit(1169, "ft^3")],
  744. ["40' Container", 8 + 6/12, "feet", "./media/objects/shipping-containers/40-foot.svg", math.unit(2385, "ft^3")],
  745. ["40' High Cube Container", 9 + 6/12, "feet", "./media/objects/shipping-containers/40-foot-high-cube.svg", math.unit(2660, "ft^3")],
  746. ["45' High Cube Container", 9 + 6/12, "feet", "./media/objects/shipping-containers/45-foot-high-cube.svg", math.unit(3040, "ft^3")],
  747. ["Container Front", 8 + 6/12, "feet", "./media/objects/shipping-containers/front-normal.svg", math.unit(2385, "ft^3")],
  748. ["High Cube Container Front", 9 + 6/12, "feet", "./media/objects/shipping-containers/front-high-cube.svg", math.unit(2660, "ft^3")],
  749. ],
  750. "Shipping Containers",
  751. ""
  752. ));
  753. results.push(makeHeight(
  754. [
  755. ["AA", 50, "mm"],
  756. ["AAA", 44.1, "mm"]
  757. ],
  758. "Batteries",
  759. ""
  760. ));
  761. results.push(makeHeight(
  762. [
  763. ["Regular", 32, "mm"],
  764. ["Micro", 15, "mm"]
  765. ],
  766. "SD Cards",
  767. ""
  768. ))
  769. return results;
  770. }