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

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