less copy protection, more size visualization
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 

165 wiersze
6.0 KiB

  1. function makeState(views, name, height, width, area) {
  2. views[name] = {
  3. attributes: {
  4. height: {
  5. name: "Height",
  6. power: 1,
  7. type: "length",
  8. base: height
  9. },
  10. width: {
  11. name: "Width",
  12. power: 1,
  13. type: "length",
  14. base: width
  15. },
  16. area: {
  17. name: "Area",
  18. power: 2,
  19. type: "area",
  20. base: area
  21. },
  22. },
  23. name: name,
  24. image: {
  25. source: "./media/naturals/states/" + name.toLowerCase().replace(" ", "-") + ".svg"
  26. }
  27. }
  28. }
  29. function makePlanet(name, diameter, mass, image) {
  30. return {
  31. name: name,
  32. constructor: () => makeObject(
  33. name,
  34. {
  35. body: {
  36. height: diameter,
  37. mass: mass,
  38. image: (image === undefined ? {
  39. source: "./media/naturals/planet-generic.svg"
  40. } : image),
  41. name: "Body"
  42. }
  43. }
  44. )
  45. };
  46. }
  47. function makeMountains() {
  48. const views = {};
  49. [
  50. ["Everest", 29029],
  51. ["K2", 28251],
  52. ["Kilimanjaro", 19341],
  53. ["Rainier", 14409],
  54. ["Pikes Peak", 14114],
  55. ["Fuji", 12388],
  56. ["Olympus", 9573],
  57. ].forEach(mountain => {
  58. views[mountain[0]] = {
  59. height: math.unit(mountain[1], "feet"),
  60. image: { source: "./media/naturals/mountain.svg" },
  61. name: mountain[0],
  62. rename: true
  63. }
  64. });
  65. return {
  66. name: "Mountains",
  67. constructor: () => makeObject(
  68. "Mountains",
  69. views
  70. )
  71. };
  72. }
  73. function makeStates() {
  74. const stateViews = {};
  75. makeState(stateViews, "Alaska", math.unit(2071.44, "km"), math.unit(2483.83, "km"), math.unit(1723337, "km^2"));
  76. makeState(stateViews, "California", math.unit(1048.82, "km"), math.unit(852.02, "km"), math.unit(423967, "km^2"));
  77. makeState(stateViews, "Colorado", math.unit(442.44, "km"), math.unit(604.47, "km"), math.unit(269601, "km^2"));
  78. makeState(stateViews, "Florida", math.unit(716.79, "km"), math.unit(723.97, "km"), math.unit(170312, "km^2"));
  79. makeState(stateViews, "Maine", math.unit(505.94, "km"), math.unit(330.98, "km"), math.unit(91633, "km^2"));
  80. makeState(stateViews, "Montana", math.unit(497.99, "km"), math.unit(983.98, "km"), math.unit(380831, "km^2"));
  81. makeState(stateViews, "New York", math.unit(494.92, "km"), math.unit(536.63, "km"), math.unit(141297, "km^2"));
  82. makeState(stateViews, "Texas", math.unit(1183.33, "km"), math.unit(1226.69, "km"), math.unit(695662, "km^2"));
  83. return makeEntity( {name: "States" }, stateViews);
  84. }
  85. function makeNaturals() {
  86. const results = [];
  87. results.push(makeHeightWeight(
  88. [
  89. ["Mercury", 4879, "km", 0.330e24, "kg", "./media/naturals/planet-generic.svg"],
  90. ["Venus", 12104, "km", 4.87e24, "kg", "./media/naturals/planet-generic.svg"],
  91. ["Earth", 12756, "km", 5.97e24, "kg", "./media/naturals/planet-generic.svg"],
  92. ["Moon", 3475, "km", 0.073e24, "kg", "./media/naturals/planet-generic.svg"],
  93. ["Mars", 6792, "km", 0.642e24, "kg", "./media/naturals/planet-generic.svg"],
  94. ["Jupiter", 142984, "km", 1898e24, "kg", "./media/naturals/planet-generic.svg"],
  95. ["Saturn", 120536, "km", 568e24, "kg", "./media/naturals/saturn.svg"],
  96. ["Uranus", 51118, "km", 86.8e24, "kg", "./media/naturals/planet-generic.svg"],
  97. ["Neptune", 49528, "km", 102e24, "kg", "./media/naturals/planet-generic.svg"],
  98. ["Pluto", 2370, "km", 0.0146e24, "kg", "./media/naturals/planet-generic.svg"]
  99. ],
  100. "Planets",
  101. "",
  102. ""
  103. ));
  104. results.push(makeHeight(
  105. [
  106. ["orbit-of-mercury", 0.387 * 2, "AU", "./media/naturals/orbit.svg"],
  107. ["orbit-of-venus", 0.723 * 2, "AU", "./media/naturals/orbit.svg"],
  108. ["orbit-of-earth", 1 * 2, "AU", "./media/naturals/orbit.svg"],
  109. ["orbit-of-mars", 1.524 * 2, "AU", "./media/naturals/orbit.svg"],
  110. ["orbit-of-jupiter", 5.2044 * 2, "AU", "./media/naturals/orbit.svg"],
  111. ["orbit-of-saturn", 9.5826 * 2, "AU", "./media/naturals/orbit.svg"],
  112. ["orbit-of-uranus", 19.21840 * 2, "AU", "./media/naturals/orbit.svg"],
  113. ["orbit-of-neptune", 30.11 * 2, "AU", "./media/naturals/orbit.svg"],
  114. ["orbit-of-pluto", 39.482 * 2, "AU", "./media/naturals/orbit.svg"],
  115. ],
  116. "Orbits",
  117. "",
  118. ""
  119. ));
  120. results.push(makeHeightWeight(
  121. [
  122. ["Sun", 2*1, "solarradii", 1, "solarmasses", "./media/naturals/planet-generic.svg"],
  123. ["White Dwarf", 14000, "km", 1e30, "kg", "./media/naturals/planet-generic.svg"],
  124. ["Polaris", 2*37.5, "solarradii", 5.4, "solarmasses", "./media/naturals/planet-generic.svg"],
  125. ["Sun (Red Giant)", 2*256, "solarradii", 1, "solarmasses", "./media/naturals/planet-generic.svg"],
  126. ["Betelgeuse", 2*887, "solarradii", 11.6, "solarmasses", "./media/naturals/planet-generic.svg"],
  127. ["VY Canis Majoris", 2*1420, "solarradii", 17, "solarmasses", "./media/naturals/planet-generic.svg"],
  128. ],
  129. "Stars",
  130. "",
  131. ""
  132. ));
  133. results.push(makePlanet("Milky Way", math.unit(105700, "lightyears"), math.unit(3e+39, "kg"), { source: "./media/naturals/milky-way.svg" }));
  134. results.push(makePlanet("Observable Universe", math.unit(1, "universe"), math.unit(10e53, "kg")));
  135. results.push(makePlanet("Multiverse", math.unit(1e30, "lightyears"), math.unit(1e100, "kg")));
  136. results.push({
  137. name: "States",
  138. constructor: makeStates
  139. });
  140. results.push(makeMountains());
  141. results.sort((b1, b2) => {
  142. e1 = b1.constructor();
  143. e2 = b2.constructor();
  144. return -math.subtract(e1.views[e1.defaultView].height, e2.views[e2.defaultView].height).value;
  145. });
  146. return results;
  147. }