less copy protection, more size visualization
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 

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