less copy protection, more size visualization
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 

148 рядки
3.8 KiB

  1. function makeLandmark(name, height, image) {
  2. views = {
  3. building: {
  4. attributes: {
  5. height: {
  6. name: "Height",
  7. power: 1,
  8. type: "length",
  9. base: height
  10. }
  11. },
  12. image: image,
  13. name: "building"
  14. },
  15. };
  16. return makeEntity({ name: name }, views);
  17. }
  18. function makeLandmarks() {
  19. const results = [];
  20. results.push({
  21. name: "Burj Khalifa",
  22. constructor: () => makeLandmark(
  23. "Burj Khalifa",
  24. math.unit(829.8, "meter"),
  25. { source: "./media/landmarks/burj-khalifa.svg" }
  26. )
  27. });
  28. results.push({
  29. name: "Canton Tower",
  30. constructor: () => makeLandmark(
  31. "Canton Tower",
  32. math.unit(604, "meter"),
  33. { source: "./media/landmarks/canton-tower.svg" }
  34. )
  35. });
  36. results.push({
  37. name: "CN Tower",
  38. constructor: () => makeLandmark(
  39. "CN Tower",
  40. math.unit(553.3, "meter"),
  41. { source: "./media/landmarks/cn-tower.svg" }
  42. )
  43. });
  44. results.push({
  45. name: "Taipei 101",
  46. constructor: () => makeLandmark(
  47. "Taipei 101",
  48. math.unit(509.2, "meter"),
  49. { source: "./media/landmarks/taipei-101.svg" }
  50. )
  51. });
  52. results.push({
  53. name: "Empire State Building",
  54. constructor: () => makeLandmark(
  55. "Empire State Building",
  56. math.unit(443.2, "meter"),
  57. { source: "./media/landmarks/empire-state-building.svg" }
  58. )
  59. });
  60. results.push({
  61. name: "Eiffel Tower",
  62. constructor: () => makeLandmark(
  63. "Eiffel Tower",
  64. math.unit(324, "meter"),
  65. { source: "./media/landmarks/eiffel-tower.svg" }
  66. )
  67. });
  68. results.push({
  69. name: "Chrysler Building",
  70. constructor: () => makeLandmark(
  71. "Chrysler Building",
  72. math.unit(318.9, "meter"),
  73. { source: "./media/landmarks/chrysler-building.svg" }
  74. )
  75. });
  76. results.push({
  77. name: "Gateway Arch",
  78. constructor: () => makeLandmark(
  79. "Gateway Arch",
  80. math.unit(630, "feet"),
  81. { source: "./media/landmarks/gateway-arch.svg" }
  82. )
  83. });
  84. results.push({
  85. name: "Washington Monument",
  86. constructor: () => makeLandmark(
  87. "Washington Monument",
  88. math.unit(555 + 5 / 12, "feet"),
  89. { source: "./media/landmarks/washington-monument.svg" }
  90. )
  91. });
  92. results.push({
  93. name: "Great Pyramid of Giza",
  94. constructor: () => makeLandmark(
  95. "Great Pyramid of Giza",
  96. math.unit(146, "meters"),
  97. { source: "./media/landmarks/pyramid.svg" }
  98. )
  99. });
  100. results.push({
  101. name: "Statue of Liberty",
  102. constructor: () => makeLandmark(
  103. "Statue of Liberty",
  104. math.unit(305.5, "feet"),
  105. { source: "./media/landmarks/statue-of-liberty.svg" }
  106. )
  107. });
  108. results.push({
  109. name: "Leaning Tower of Pisa",
  110. constructor: () => makeLandmark(
  111. "Leaning Tower of Pisa",
  112. math.unit(185.93, "feet"),
  113. { source: "./media/landmarks/leaning-tower-of-pisa.svg", bottom: 84 / 3755 }
  114. )
  115. });
  116. results.push({
  117. name: "Elizabeth Tower",
  118. constructor: () => makeLandmark(
  119. "Elizabeth Tower",
  120. math.unit(315, "feet"),
  121. { source: "./media/landmarks/elizabeth-tower.svg" }
  122. )
  123. });
  124. results.sort((b1, b2) => {
  125. e1 = b1.constructor();
  126. e2 = b2.constructor();
  127. return -math.subtract(e1.views[e1.defaultView].height, e2.views[e2.defaultView].height).value;
  128. });
  129. return results;
  130. }