diff --git a/media/attribution.js b/media/attribution.js
index 961bef5a..36c9bc23 100644
--- a/media/attribution.js
+++ b/media/attribution.js
@@ -21205,6 +21205,18 @@ const attributionData = {
"ofuscado"
]
},
+ {
+ prefix: "./media/landmarks/Towers/",
+ all: "https://commons.wikimedia.org/wiki/File:Tallest_towers_in_the_world.svg",
+ authors: [
+ "timsdad",
+ "chrkl",
+ "tokyoship"
+ ],
+ citations: [
+ "https://en.wikipedia.org/wiki/List_of_tallest_towers"
+ ]
+ },
{
prefix: "./media/naturals/",
files: [
@@ -29188,6 +29200,18 @@ const attributionData = {
"name": "Serpentus",
"url": "https://www.furaffinity.net/user/serpentus/"
},
+ "timsdad": {
+ "name": "timsdad",
+ "url": "https://en.wikipedia.org/wiki/User:Timsdad"
+ },
+ "chrkl": {
+ "name": "Chrkl",
+ "url": "https://commons.wikimedia.org/wiki/User:Chrkl"
+ },
+ "tokyoship": {
+ "name": "Tokyoship",
+ "url": "https://commons.wikimedia.org/wiki/User:Tokyoship"
+ },
}
}
diff --git a/media/landmarks/Towers/CN Tower-Front.svg b/media/landmarks/Towers/CN Tower-Front.svg
new file mode 100644
index 00000000..9600ebad
--- /dev/null
+++ b/media/landmarks/Towers/CN Tower-Front.svg
@@ -0,0 +1,21 @@
+
+
+
diff --git a/media/landmarks/Towers/Canton Tower-Front.svg b/media/landmarks/Towers/Canton Tower-Front.svg
new file mode 100644
index 00000000..52260216
--- /dev/null
+++ b/media/landmarks/Towers/Canton Tower-Front.svg
@@ -0,0 +1,21 @@
+
+
+
diff --git a/media/landmarks/Towers/Kuala Lumpur Tower-Front.svg b/media/landmarks/Towers/Kuala Lumpur Tower-Front.svg
new file mode 100644
index 00000000..3dd75fe3
--- /dev/null
+++ b/media/landmarks/Towers/Kuala Lumpur Tower-Front.svg
@@ -0,0 +1,17 @@
+
+
+
diff --git a/media/landmarks/Towers/Milad Tower-Front.svg b/media/landmarks/Towers/Milad Tower-Front.svg
new file mode 100644
index 00000000..b0596cd8
--- /dev/null
+++ b/media/landmarks/Towers/Milad Tower-Front.svg
@@ -0,0 +1,22 @@
+
+
+
diff --git a/media/landmarks/Towers/Oriental Pearl Tower-Front.svg b/media/landmarks/Towers/Oriental Pearl Tower-Front.svg
new file mode 100644
index 00000000..d7574609
--- /dev/null
+++ b/media/landmarks/Towers/Oriental Pearl Tower-Front.svg
@@ -0,0 +1,35 @@
+
+
+
diff --git a/media/landmarks/Towers/Ostankino Tower-Front.svg b/media/landmarks/Towers/Ostankino Tower-Front.svg
new file mode 100644
index 00000000..4b3a1646
--- /dev/null
+++ b/media/landmarks/Towers/Ostankino Tower-Front.svg
@@ -0,0 +1,30 @@
+
+
+
diff --git a/media/landmarks/Towers/Tokyo Skytree-Front.svg b/media/landmarks/Towers/Tokyo Skytree-Front.svg
new file mode 100644
index 00000000..81d41bd6
--- /dev/null
+++ b/media/landmarks/Towers/Tokyo Skytree-Front.svg
@@ -0,0 +1,1418 @@
+
+
+
diff --git a/presets/landmarks.js b/presets/landmarks.js
index 57616452..f138f67a 100644
--- a/presets/landmarks.js
+++ b/presets/landmarks.js
@@ -6,11 +6,11 @@ function makeLandmark(name, height, image) {
name: "Height",
power: 1,
type: "length",
- base: height
- }
+ base: height,
+ },
},
image: image,
- name: "building"
+ name: "building",
},
};
@@ -22,125 +22,155 @@ function makeLandmarks() {
results.push({
name: "Burj Khalifa",
- constructor: () => makeLandmark(
- "Burj Khalifa",
- math.unit(829.8, "meter"),
- { source: "./media/landmarks/burj-khalifa.svg" }
- )
+ constructor: () =>
+ makeLandmark("Burj Khalifa", math.unit(829.8, "meter"), {
+ source: "./media/landmarks/burj-khalifa.svg",
+ }),
});
results.push({
name: "Canton Tower",
- constructor: () => makeLandmark(
- "Canton Tower",
- math.unit(604, "meter"),
- { source: "./media/landmarks/canton-tower.svg" }
- )
+ constructor: () =>
+ makeLandmark("Canton Tower", math.unit(604, "meter"), {
+ source: "./media/landmarks/canton-tower.svg",
+ }),
});
results.push({
name: "CN Tower",
- constructor: () => makeLandmark(
- "CN Tower",
- math.unit(553.3, "meter"),
- { source: "./media/landmarks/cn-tower.svg" }
- )
+ constructor: () =>
+ makeLandmark("CN Tower", math.unit(553.3, "meter"), {
+ source: "./media/landmarks/cn-tower.svg",
+ }),
});
results.push({
name: "Taipei 101",
- constructor: () => makeLandmark(
- "Taipei 101",
- math.unit(509.2, "meter"),
- { source: "./media/landmarks/taipei-101.svg" }
- )
+ constructor: () =>
+ makeLandmark("Taipei 101", math.unit(509.2, "meter"), {
+ source: "./media/landmarks/taipei-101.svg",
+ }),
});
results.push({
name: "Empire State Building",
- constructor: () => makeLandmark(
- "Empire State Building",
- math.unit(443.2, "meter"),
- { source: "./media/landmarks/empire-state-building.svg" }
- )
+ constructor: () =>
+ makeLandmark("Empire State Building", math.unit(443.2, "meter"), {
+ source: "./media/landmarks/empire-state-building.svg",
+ }),
});
results.push({
name: "Eiffel Tower",
- constructor: () => makeLandmark(
- "Eiffel Tower",
- math.unit(324, "meter"),
- { source: "./media/landmarks/eiffel-tower.svg" }
- )
+ constructor: () =>
+ makeLandmark("Eiffel Tower", math.unit(324, "meter"), {
+ source: "./media/landmarks/eiffel-tower.svg",
+ }),
});
results.push({
name: "Chrysler Building",
- constructor: () => makeLandmark(
- "Chrysler Building",
- math.unit(318.9, "meter"),
- { source: "./media/landmarks/chrysler-building.svg" }
- )
+ constructor: () =>
+ makeLandmark("Chrysler Building", math.unit(318.9, "meter"), {
+ source: "./media/landmarks/chrysler-building.svg",
+ }),
});
results.push({
name: "Gateway Arch",
- constructor: () => makeLandmark(
- "Gateway Arch",
- math.unit(630, "feet"),
- { source: "./media/landmarks/gateway-arch.svg" }
- )
+ constructor: () =>
+ makeLandmark("Gateway Arch", math.unit(630, "feet"), {
+ source: "./media/landmarks/gateway-arch.svg",
+ }),
});
results.push({
name: "Washington Monument",
- constructor: () => makeLandmark(
- "Washington Monument",
- math.unit(555 + 5 / 12, "feet"),
- { source: "./media/landmarks/washington-monument.svg" }
- )
+ constructor: () =>
+ makeLandmark(
+ "Washington Monument",
+ math.unit(555 + 5 / 12, "feet"),
+ { source: "./media/landmarks/washington-monument.svg" }
+ ),
});
results.push({
name: "Great Pyramid of Giza",
- constructor: () => makeLandmark(
- "Great Pyramid of Giza",
- math.unit(146, "meters"),
- { source: "./media/landmarks/pyramid.svg" }
- )
+ constructor: () =>
+ makeLandmark("Great Pyramid of Giza", math.unit(146, "meters"), {
+ source: "./media/landmarks/pyramid.svg",
+ }),
});
results.push({
name: "Statue of Liberty",
- constructor: () => makeLandmark(
- "Statue of Liberty",
- math.unit(305.5, "feet"),
- { source: "./media/landmarks/statue-of-liberty.svg" }
- )
+ constructor: () =>
+ makeLandmark("Statue of Liberty", math.unit(305.5, "feet"), {
+ source: "./media/landmarks/statue-of-liberty.svg",
+ }),
});
results.push({
name: "Leaning Tower of Pisa",
- constructor: () => makeLandmark(
- "Leaning Tower of Pisa",
- math.unit(185.93, "feet"),
- { source: "./media/landmarks/leaning-tower-of-pisa.svg", bottom: 84 / 3755 }
- )
+ constructor: () =>
+ makeLandmark("Leaning Tower of Pisa", math.unit(185.93, "feet"), {
+ source: "./media/landmarks/leaning-tower-of-pisa.svg",
+ bottom: 84 / 3755,
+ }),
});
results.push({
name: "Elizabeth Tower",
- constructor: () => makeLandmark(
- "Elizabeth Tower",
- math.unit(315, "feet"),
- { source: "./media/landmarks/elizabeth-tower.svg" }
- )
+ constructor: () =>
+ makeLandmark("Elizabeth Tower", math.unit(315, "feet"), {
+ source: "./media/landmarks/elizabeth-tower.svg",
+ }),
});
+ results.push(
+ makeModel({
+ name: "Towers",
+ kind: "landmarks",
+ forms: [
+ {
+ name: "Tokyo Skytree",
+ views: [{ name: "Front", height: 634 }],
+ },
+ {
+ name: "Canton Tower",
+ views: [{ name: "Front", height: 604 }],
+ },
+ {
+ name: "CN Tower",
+ views: [{ name: "Front", height: 553.3 }],
+ },
+ {
+ name: "Ostankino Tower",
+ views: [{ name: "Front", height: 540.1 }],
+ },
+ {
+ name: "Oriental Pearl Tower",
+ views: [{ name: "Front", height: 468 }],
+ },
+ {
+ name: "Milad Tower",
+ views: [{ name: "Front", height: 435 }],
+ },
+ {
+ name: "Kuala Lumpur Tower",
+ views: [{ name: "Front", height: 421 }],
+ },
+ ],
+ })
+ );
+
results.sort((b1, b2) => {
e1 = b1.constructor();
e2 = b2.constructor();
- return -math.subtract(e1.views[e1.defaultView].height, e2.views[e2.defaultView].height).value;
+ return -math.subtract(
+ e1.views[e1.defaultView].height,
+ e2.views[e2.defaultView].height
+ ).value;
});
return results;