less copy protection, more size visualization
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 

830 lignes
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. }