less copy protection, more size visualization
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 

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