less copy protection, more size visualization
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

178 行
5.0 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: () =>
  23. makeLandmark("Burj Khalifa", math.unit(829.8, "meter"), {
  24. source: "./media/landmarks/burj-khalifa.svg",
  25. }),
  26. });
  27. results.push({
  28. name: "Canton Tower",
  29. constructor: () =>
  30. makeLandmark("Canton Tower", math.unit(604, "meter"), {
  31. source: "./media/landmarks/canton-tower.svg",
  32. }),
  33. });
  34. results.push({
  35. name: "CN Tower",
  36. constructor: () =>
  37. makeLandmark("CN Tower", math.unit(553.3, "meter"), {
  38. source: "./media/landmarks/cn-tower.svg",
  39. }),
  40. });
  41. results.push({
  42. name: "Taipei 101",
  43. constructor: () =>
  44. makeLandmark("Taipei 101", math.unit(509.2, "meter"), {
  45. source: "./media/landmarks/taipei-101.svg",
  46. }),
  47. });
  48. results.push({
  49. name: "Empire State Building",
  50. constructor: () =>
  51. makeLandmark("Empire State Building", math.unit(443.2, "meter"), {
  52. source: "./media/landmarks/empire-state-building.svg",
  53. }),
  54. });
  55. results.push({
  56. name: "Eiffel Tower",
  57. constructor: () =>
  58. makeLandmark("Eiffel Tower", math.unit(324, "meter"), {
  59. source: "./media/landmarks/eiffel-tower.svg",
  60. }),
  61. });
  62. results.push({
  63. name: "Chrysler Building",
  64. constructor: () =>
  65. makeLandmark("Chrysler Building", math.unit(318.9, "meter"), {
  66. source: "./media/landmarks/chrysler-building.svg",
  67. }),
  68. });
  69. results.push({
  70. name: "Gateway Arch",
  71. constructor: () =>
  72. makeLandmark("Gateway Arch", math.unit(630, "feet"), {
  73. source: "./media/landmarks/gateway-arch.svg",
  74. }),
  75. });
  76. results.push({
  77. name: "Washington Monument",
  78. constructor: () =>
  79. makeLandmark(
  80. "Washington Monument",
  81. math.unit(555 + 5 / 12, "feet"),
  82. { source: "./media/landmarks/washington-monument.svg" }
  83. ),
  84. });
  85. results.push({
  86. name: "Great Pyramid of Giza",
  87. constructor: () =>
  88. makeLandmark("Great Pyramid of Giza", math.unit(146, "meters"), {
  89. source: "./media/landmarks/pyramid.svg",
  90. }),
  91. });
  92. results.push({
  93. name: "Statue of Liberty",
  94. constructor: () =>
  95. makeLandmark("Statue of Liberty", math.unit(305.5, "feet"), {
  96. source: "./media/landmarks/statue-of-liberty.svg",
  97. }),
  98. });
  99. results.push({
  100. name: "Leaning Tower of Pisa",
  101. constructor: () =>
  102. makeLandmark("Leaning Tower of Pisa", math.unit(185.93, "feet"), {
  103. source: "./media/landmarks/leaning-tower-of-pisa.svg",
  104. bottom: 84 / 3755,
  105. }),
  106. });
  107. results.push({
  108. name: "Elizabeth Tower",
  109. constructor: () =>
  110. makeLandmark("Elizabeth Tower", math.unit(315, "feet"), {
  111. source: "./media/landmarks/elizabeth-tower.svg",
  112. }),
  113. });
  114. results.push(
  115. makeModel({
  116. name: "Towers",
  117. kind: "landmarks",
  118. forms: [
  119. {
  120. name: "Tokyo Skytree",
  121. views: [{ name: "Front", height: 634 }],
  122. },
  123. {
  124. name: "Canton Tower",
  125. views: [{ name: "Front", height: 604 }],
  126. },
  127. {
  128. name: "CN Tower",
  129. views: [{ name: "Front", height: 553.3 }],
  130. },
  131. {
  132. name: "Ostankino Tower",
  133. views: [{ name: "Front", height: 540.1 }],
  134. },
  135. {
  136. name: "Oriental Pearl Tower",
  137. views: [{ name: "Front", height: 468 }],
  138. },
  139. {
  140. name: "Milad Tower",
  141. views: [{ name: "Front", height: 435 }],
  142. },
  143. {
  144. name: "Kuala Lumpur Tower",
  145. views: [{ name: "Front", height: 421 }],
  146. },
  147. ],
  148. })
  149. );
  150. results.sort((b1, b2) => {
  151. e1 = b1.constructor();
  152. e2 = b2.constructor();
  153. return -math.subtract(
  154. e1.views[e1.defaultView].height,
  155. e2.views[e2.defaultView].height
  156. ).value;
  157. });
  158. return results;
  159. }