diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..1069bcebe --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "cSpell.words": [ + "Phong", + "sunmap" + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6f1743e95..5da6e43ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "threejs-first-proj", + "name": "DordorPortfolio", "lockfileVersion": 2, "requires": true, "packages": { @@ -14,6 +14,7 @@ "css-loader": "^5.1.0", "dat.gui": "^0.7.7", "file-loader": "^6.2.0", + "gsap": "^3.6.1", "html-loader": "^2.1.1", "html-webpack-plugin": "^5.2.0", "mini-css-extract-plugin": "^1.3.9", @@ -1925,6 +1926,7 @@ "anymatch": "^2.0.0", "async-each": "^1.0.1", "braces": "^2.3.2", + "fsevents": "^1.2.7", "glob-parent": "^3.1.0", "inherits": "^2.0.3", "is-binary-path": "^1.0.0", @@ -3604,6 +3606,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" }, + "node_modules/gsap": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.6.1.tgz", + "integrity": "sha512-hCkjk7UVbeEmlpFbiy7lIsh742bwVlMhdCnnQ1CvVOAdURyPX8hXjFZGh/0YzUyAcWPyJPE0/paMhSYtLhGlfA==" + }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -4799,9 +4806,9 @@ "optional": true }, "node_modules/nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -5291,16 +5298,20 @@ } }, "node_modules/postcss": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.6.tgz", - "integrity": "sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.0.tgz", + "integrity": "sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ==", "dependencies": { - "colorette": "^1.2.1", - "nanoid": "^3.1.20", - "source-map": "^0.6.1" + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" }, "engines": { "node": "^10 || ^12 || >=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-modules-extract-imports": { @@ -5365,14 +5376,6 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" }, - "node_modules/postcss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pretty-error": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", @@ -6349,6 +6352,14 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-resolve": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", @@ -10644,6 +10655,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" }, + "gsap": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.6.1.tgz", + "integrity": "sha512-hCkjk7UVbeEmlpFbiy7lIsh742bwVlMhdCnnQ1CvVOAdURyPX8hXjFZGh/0YzUyAcWPyJPE0/paMhSYtLhGlfA==" + }, "handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", @@ -11595,9 +11611,9 @@ "optional": true }, "nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==" + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==" }, "nanomatch": { "version": "1.2.13", @@ -11974,20 +11990,13 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.6.tgz", - "integrity": "sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.0.tgz", + "integrity": "sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ==", "requires": { - "colorette": "^1.2.1", - "nanoid": "^3.1.20", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" } }, "postcss-modules-extract-imports": { @@ -12862,6 +12871,11 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" + }, "source-map-resolve": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", diff --git a/package.json b/package.json index 9d0c52015..93f970e93 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "css-loader": "^5.1.0", "dat.gui": "^0.7.7", "file-loader": "^6.2.0", + "gsap": "^3.6.1", "html-loader": "^2.1.1", "html-webpack-plugin": "^5.2.0", "mini-css-extract-plugin": "^1.3.9", diff --git a/src/data/earth_data.json b/src/data/earth_data.json new file mode 100644 index 000000000..e56307bd0 --- /dev/null +++ b/src/data/earth_data.json @@ -0,0 +1,1982 @@ +[ + { + "Country":"Afghanistan", + "Languages":"Pashto, Dari", + "latitude":33.93911, + "longitude":67.709953, + "Region":"ASIA (EX. NEAR EAST)", + "Population":31056997, + "Area_sq_mi":647500, + "GPD_per_capita":700.0, + "Climate":"1" + }, + { + "Country":"Albania", + "Languages":"Albanian", + "latitude":41.153332, + "longitude":20.168331, + "Region":"EASTERN EUROPE", + "Population":3581655, + "Area_sq_mi":28748, + "GPD_per_capita":4500.0, + "Climate":"3" + }, + { + "Country":"Algeria", + "Languages":"Arabic, Tamazight", + "latitude":28.033886, + "longitude":1.659626, + "Region":"NORTHERN AFRICA", + "Population":32930091, + "Area_sq_mi":2381740, + "GPD_per_capita":6000.0, + "Climate":"1" + }, + { + "Country":"Andorra", + "Languages":"Catalan", + "latitude":42.546245, + "longitude":1.601554, + "Region":"WESTERN EUROPE", + "Population":71201, + "Area_sq_mi":468, + "GPD_per_capita":19000.0, + "Climate":"3" + }, + { + "Country":"Angola", + "Languages":"Portuguese", + "latitude":-11.202692, + "longitude":17.873887, + "Region":"SUB-SAHARAN AFRICA", + "Population":12127071, + "Area_sq_mi":1246700, + "GPD_per_capita":1900.0, + "Climate":"" + }, + { + "Country":"Antigua & Barbuda", + "Languages":"English ", + "latitude":17.060816, + "longitude":-61.796428, + "Region":"LATIN AMER. & CARIB", + "Population":69108, + "Area_sq_mi":443, + "GPD_per_capita":11000.0, + "Climate":"2" + }, + { + "Country":"Argentina", + "Languages":"Spanish ", + "latitude":-38.416097, + "longitude":-63.616672, + "Region":"LATIN AMER. & CARIB", + "Population":39921833, + "Area_sq_mi":2766890, + "GPD_per_capita":11200.0, + "Climate":"3" + }, + { + "Country":"Armenia", + "Languages":"Armenian", + "latitude":40.069099, + "longitude":45.038189, + "Region":"C.W. OF IND. STATES", + "Population":2976372, + "Area_sq_mi":29800, + "GPD_per_capita":3500.0, + "Climate":"4" + }, + { + "Country":"Australia", + "Languages":"English ", + "latitude":-25.274398, + "longitude":133.775136, + "Region":"OCEANIA", + "Population":20264082, + "Area_sq_mi":7686850, + "GPD_per_capita":29000.0, + "Climate":"1" + }, + { + "Country":"Austria", + "Languages":"German", + "latitude":47.516231, + "longitude":14.550072, + "Region":"WESTERN EUROPE", + "Population":8192880, + "Area_sq_mi":83870, + "GPD_per_capita":30000.0, + "Climate":"3" + }, + { + "Country":"Azerbaijan", + "Languages":"Azerbaijani", + "latitude":40.143105, + "longitude":47.576927, + "Region":"C.W. OF IND. STATES", + "Population":7961619, + "Area_sq_mi":86600, + "GPD_per_capita":3400.0, + "Climate":"1" + }, + { + "Country":"Bahrain", + "Languages":"Arabic", + "latitude":25.930414, + "longitude":50.637772, + "Region":"NEAR EAST", + "Population":698585, + "Area_sq_mi":665, + "GPD_per_capita":16900.0, + "Climate":"1" + }, + { + "Country":"Bangladesh", + "Languages":"Bengali", + "latitude":23.684994, + "longitude":90.356331, + "Region":"ASIA (EX. NEAR EAST)", + "Population":147365352, + "Area_sq_mi":144000, + "GPD_per_capita":1900.0, + "Climate":"2" + }, + { + "Country":"Barbados", + "Languages":"English", + "latitude":13.193887, + "longitude":-59.543198, + "Region":"LATIN AMER. & CARIB", + "Population":279912, + "Area_sq_mi":431, + "GPD_per_capita":15700.0, + "Climate":"2" + }, + { + "Country":"Belarus", + "Languages":"Belarusian, Russian", + "latitude":53.709807, + "longitude":27.953389, + "Region":"C.W. OF IND. STATES", + "Population":10293011, + "Area_sq_mi":207600, + "GPD_per_capita":6100.0, + "Climate":"4" + }, + { + "Country":"Belgium", + "Languages":"Dutch, French, German", + "latitude":50.503887, + "longitude":4.469936, + "Region":"WESTERN EUROPE", + "Population":10379067, + "Area_sq_mi":30528, + "GPD_per_capita":29100.0, + "Climate":"3" + }, + { + "Country":"Belize", + "Languages":"English", + "latitude":17.189877, + "longitude":-88.49765, + "Region":"LATIN AMER. & CARIB", + "Population":287730, + "Area_sq_mi":22966, + "GPD_per_capita":4900.0, + "Climate":"2" + }, + { + "Country":"Benin", + "Languages":"French", + "latitude":9.30769, + "longitude":2.315834, + "Region":"SUB-SAHARAN AFRICA", + "Population":7862944, + "Area_sq_mi":112620, + "GPD_per_capita":1100.0, + "Climate":"2" + }, + { + "Country":"Bhutan", + "Languages":"Dzongkha", + "latitude":27.514162, + "longitude":90.433601, + "Region":"ASIA (EX. NEAR EAST)", + "Population":2279723, + "Area_sq_mi":47000, + "GPD_per_capita":1300.0, + "Climate":"2" + }, + { + "Country":"Bolivia", + "Languages":"Castilian, ", + "latitude":-16.290154, + "longitude":-63.588653, + "Region":"LATIN AMER. & CARIB", + "Population":8989046, + "Area_sq_mi":1098580, + "GPD_per_capita":2400.0, + "Climate":"1,5" + }, + { + "Country":"Bosnia & Herzegovina", + "Languages":"Bosnian ", + "latitude":43.915886, + "longitude":17.679076, + "Region":"EASTERN EUROPE", + "Population":4498976, + "Area_sq_mi":51129, + "GPD_per_capita":6100.0, + "Climate":"4" + }, + { + "Country":"Botswana", + "Languages":"English, Tswana", + "latitude":-22.328474, + "longitude":24.684866, + "Region":"SUB-SAHARAN AFRICA", + "Population":1639833, + "Area_sq_mi":600370, + "GPD_per_capita":9000.0, + "Climate":"1" + }, + { + "Country":"Brazil", + "Languages":"Portuguese", + "latitude":-14.235004, + "longitude":-51.92528, + "Region":"LATIN AMER. & CARIB", + "Population":188078227, + "Area_sq_mi":8511965, + "GPD_per_capita":7600.0, + "Climate":"2" + }, + { + "Country":"Brunei", + "Languages":"Malay, English", + "latitude":4.535277, + "longitude":114.727669, + "Region":"ASIA (EX. NEAR EAST)", + "Population":379444, + "Area_sq_mi":5770, + "GPD_per_capita":18600.0, + "Climate":"2" + }, + { + "Country":"Bulgaria", + "Languages":"Bulgarian", + "latitude":42.733883, + "longitude":25.48583, + "Region":"EASTERN EUROPE", + "Population":7385367, + "Area_sq_mi":110910, + "GPD_per_capita":7600.0, + "Climate":"3" + }, + { + "Country":"Burkina Faso", + "Languages":"French", + "latitude":12.238333, + "longitude":-1.561593, + "Region":"SUB-SAHARAN AFRICA", + "Population":13902972, + "Area_sq_mi":274200, + "GPD_per_capita":1100.0, + "Climate":"2" + }, + { + "Country":"Burundi", + "Languages":"French, Kirundi, English", + "latitude":-3.373056, + "longitude":29.918886, + "Region":"SUB-SAHARAN AFRICA", + "Population":8090068, + "Area_sq_mi":27830, + "GPD_per_capita":600.0, + "Climate":"2" + }, + { + "Country":"Cambodia", + "Languages":"Khmer", + "latitude":12.565679, + "longitude":104.990963, + "Region":"ASIA (EX. NEAR EAST)", + "Population":13881427, + "Area_sq_mi":181040, + "GPD_per_capita":1900.0, + "Climate":"2" + }, + { + "Country":"Cameroon", + "Languages":"English, French", + "latitude":7.369722, + "longitude":12.354722, + "Region":"SUB-SAHARAN AFRICA", + "Population":17340702, + "Area_sq_mi":475440, + "GPD_per_capita":1800.0, + "Climate":"1,5" + }, + { + "Country":"Canada", + "Languages":"English ", + "latitude":56.130366, + "longitude":-106.346771, + "Region":"NORTHERN AMERICA", + "Population":33098932, + "Area_sq_mi":9984670, + "GPD_per_capita":29800.0, + "Climate":"" + }, + { + "Country":"Cape Verde", + "Languages":"Portuguese", + "latitude":16.002082, + "longitude":-24.013197, + "Region":"SUB-SAHARAN AFRICA", + "Population":420979, + "Area_sq_mi":4033, + "GPD_per_capita":1400.0, + "Climate":"3" + }, + { + "Country":"Chad", + "Languages":"Arabic, French", + "latitude":15.454166, + "longitude":18.732207, + "Region":"SUB-SAHARAN AFRICA", + "Population":9944201, + "Area_sq_mi":1284000, + "GPD_per_capita":1200.0, + "Climate":"2" + }, + { + "Country":"Chile", + "Languages":"Spanish ", + "latitude":-35.675147, + "longitude":-71.542969, + "Region":"LATIN AMER. & CARIB", + "Population":16134219, + "Area_sq_mi":756950, + "GPD_per_capita":9900.0, + "Climate":"3" + }, + { + "Country":"China", + "Languages":"Mandarin", + "latitude":35.86166, + "longitude":104.195397, + "Region":"ASIA (EX. NEAR EAST)", + "Population":1313973713, + "Area_sq_mi":9596960, + "GPD_per_capita":5000.0, + "Climate":"1,5" + }, + { + "Country":"Colombia", + "Languages":"Spanish", + "latitude":4.570868, + "longitude":-74.297333, + "Region":"LATIN AMER. & CARIB", + "Population":43593035, + "Area_sq_mi":1138910, + "GPD_per_capita":6300.0, + "Climate":"2" + }, + { + "Country":"Comoros", + "Languages":"Arabic, Comorian, French", + "latitude":-11.875001, + "longitude":43.872219, + "Region":"SUB-SAHARAN AFRICA", + "Population":690948, + "Area_sq_mi":2170, + "GPD_per_capita":700.0, + "Climate":"2" + }, + { + "Country":"Costa Rica", + "Languages":"Spanish", + "latitude":9.748917, + "longitude":-83.753428, + "Region":"LATIN AMER. & CARIB", + "Population":4075261, + "Area_sq_mi":51100, + "GPD_per_capita":9100.0, + "Climate":"2" + }, + { + "Country":"Croatia", + "Languages":"Croatian", + "latitude":45.1, + "longitude":15.2, + "Region":"EASTERN EUROPE", + "Population":4494749, + "Area_sq_mi":56542, + "GPD_per_capita":10600.0, + "Climate":"" + }, + { + "Country":"Cuba", + "Languages":"Spanish", + "latitude":21.521757, + "longitude":-77.781167, + "Region":"LATIN AMER. & CARIB", + "Population":11382820, + "Area_sq_mi":110860, + "GPD_per_capita":2900.0, + "Climate":"2" + }, + { + "Country":"Cyprus", + "Languages":"Greek, Turkish", + "latitude":35.126413, + "longitude":33.429859, + "Region":"NEAR EAST", + "Population":784301, + "Area_sq_mi":9250, + "GPD_per_capita":19200.0, + "Climate":"3" + }, + { + "Country":"Czech Republic", + "Languages":"Czech, Slovak", + "latitude":49.817492, + "longitude":15.472962, + "Region":"EASTERN EUROPE", + "Population":10235455, + "Area_sq_mi":78866, + "GPD_per_capita":15700.0, + "Climate":"3" + }, + { + "Country":"Denmark", + "Languages":"Danish", + "latitude":56.26392, + "longitude":9.501785, + "Region":"WESTERN EUROPE", + "Population":5450661, + "Area_sq_mi":43094, + "GPD_per_capita":31100.0, + "Climate":"3" + }, + { + "Country":"Djibouti", + "Languages":"Arabic, French", + "latitude":11.825138, + "longitude":42.590275, + "Region":"SUB-SAHARAN AFRICA", + "Population":486530, + "Area_sq_mi":23000, + "GPD_per_capita":1300.0, + "Climate":"1" + }, + { + "Country":"Dominica", + "Languages":"English", + "latitude":15.414999, + "longitude":-61.370976, + "Region":"LATIN AMER. & CARIB", + "Population":68910, + "Area_sq_mi":754, + "GPD_per_capita":5400.0, + "Climate":"2" + }, + { + "Country":"Dominican Republic", + "Languages":"Spanish", + "latitude":18.735693, + "longitude":-70.162651, + "Region":"LATIN AMER. & CARIB", + "Population":9183984, + "Area_sq_mi":48730, + "GPD_per_capita":6000.0, + "Climate":"2" + }, + { + "Country":"Ecuador", + "Languages":"Spanish, Quechua ", + "latitude":-1.831239, + "longitude":-78.183406, + "Region":"LATIN AMER. & CARIB", + "Population":13547510, + "Area_sq_mi":283560, + "GPD_per_capita":3300.0, + "Climate":"2" + }, + { + "Country":"Egypt", + "Languages":"Arabic", + "latitude":26.820553, + "longitude":30.802498, + "Region":"NORTHERN AFRICA", + "Population":78887007, + "Area_sq_mi":1001450, + "GPD_per_capita":4000.0, + "Climate":"1" + }, + { + "Country":"El Salvador", + "Languages":"Spanish", + "latitude":13.794185, + "longitude":-88.89653, + "Region":"LATIN AMER. & CARIB", + "Population":6822378, + "Area_sq_mi":21040, + "GPD_per_capita":4800.0, + "Climate":"2" + }, + { + "Country":"Equatorial Guinea", + "Languages":"French, Portuguese, Spanish", + "latitude":1.650801, + "longitude":10.267895, + "Region":"SUB-SAHARAN AFRICA", + "Population":540109, + "Area_sq_mi":28051, + "GPD_per_capita":2700.0, + "Climate":"2" + }, + { + "Country":"Eritrea", + "Languages":"Tigrinya", + "latitude":15.179384, + "longitude":39.782334, + "Region":"SUB-SAHARAN AFRICA", + "Population":4786994, + "Area_sq_mi":121320, + "GPD_per_capita":700.0, + "Climate":"1,5" + }, + { + "Country":"Estonia", + "Languages":"Estonian", + "latitude":58.595272, + "longitude":25.013607, + "Region":"BALTICS", + "Population":1324333, + "Area_sq_mi":45226, + "GPD_per_capita":12300.0, + "Climate":"3" + }, + { + "Country":"Ethiopia", + "Languages":"Amharic", + "latitude":9.145, + "longitude":40.489673, + "Region":"SUB-SAHARAN AFRICA", + "Population":74777981, + "Area_sq_mi":1127127, + "GPD_per_capita":700.0, + "Climate":"2" + }, + { + "Country":"Fiji", + "Languages":"English, Fijian, Fiji Hindi", + "latitude":-16.578193, + "longitude":179.414413, + "Region":"OCEANIA", + "Population":905949, + "Area_sq_mi":18270, + "GPD_per_capita":5800.0, + "Climate":"2" + }, + { + "Country":"Finland", + "Languages":"Finnish, Swedish", + "latitude":61.92411, + "longitude":25.748151, + "Region":"WESTERN EUROPE", + "Population":5231372, + "Area_sq_mi":338145, + "GPD_per_capita":27400.0, + "Climate":"3" + }, + { + "Country":"France", + "Languages":"French", + "latitude":46.227638, + "longitude":2.213749, + "Region":"WESTERN EUROPE", + "Population":60876136, + "Area_sq_mi":547030, + "GPD_per_capita":27600.0, + "Climate":"4" + }, + { + "Country":"Gabon", + "Languages":"French", + "latitude":-0.803689, + "longitude":11.609444, + "Region":"SUB-SAHARAN AFRICA", + "Population":1424906, + "Area_sq_mi":267667, + "GPD_per_capita":5500.0, + "Climate":"2" + }, + { + "Country":"Gambia, The", + "Languages":"English", + "latitude":13.443182, + "longitude":-15.310139, + "Region":"SUB-SAHARAN AFRICA", + "Population":1641564, + "Area_sq_mi":11300, + "GPD_per_capita":1700.0, + "Climate":"2" + }, + { + "Country":"Georgia", + "Languages":"Georgian", + "latitude":42.315407, + "longitude":43.356892, + "Region":"C.W. OF IND. STATES", + "Population":4661473, + "Area_sq_mi":69700, + "GPD_per_capita":2500.0, + "Climate":"3" + }, + { + "Country":"Germany", + "Languages":"German", + "latitude":51.165691, + "longitude":10.451526, + "Region":"WESTERN EUROPE", + "Population":82422299, + "Area_sq_mi":357021, + "GPD_per_capita":27600.0, + "Climate":"3" + }, + { + "Country":"Ghana", + "Languages":"English", + "latitude":7.946527, + "longitude":-1.023194, + "Region":"SUB-SAHARAN AFRICA", + "Population":22409572, + "Area_sq_mi":239460, + "GPD_per_capita":2200.0, + "Climate":"2" + }, + { + "Country":"Greece", + "Languages":"Greek", + "latitude":39.074208, + "longitude":21.824312, + "Region":"WESTERN EUROPE", + "Population":10688058, + "Area_sq_mi":131940, + "GPD_per_capita":20000.0, + "Climate":"3" + }, + { + "Country":"Grenada", + "Languages":"English", + "latitude":12.262776, + "longitude":-61.604171, + "Region":"LATIN AMER. & CARIB", + "Population":89703, + "Area_sq_mi":344, + "GPD_per_capita":5000.0, + "Climate":"2" + }, + { + "Country":"Guatemala", + "Languages":"Spanish", + "latitude":15.783471, + "longitude":-90.230759, + "Region":"LATIN AMER. & CARIB", + "Population":12293545, + "Area_sq_mi":108890, + "GPD_per_capita":4100.0, + "Climate":"2" + }, + { + "Country":"Guinea", + "Languages":"French", + "latitude":9.945587, + "longitude":-9.696645, + "Region":"SUB-SAHARAN AFRICA", + "Population":9690222, + "Area_sq_mi":245857, + "GPD_per_capita":2100.0, + "Climate":"2" + }, + { + "Country":"Guinea-Bissau", + "Languages":"Portuguese", + "latitude":11.803749, + "longitude":-15.180413, + "Region":"SUB-SAHARAN AFRICA", + "Population":1442029, + "Area_sq_mi":36120, + "GPD_per_capita":800.0, + "Climate":"2" + }, + { + "Country":"Guyana", + "Languages":"English", + "latitude":4.860416, + "longitude":-58.93018, + "Region":"LATIN AMER. & CARIB", + "Population":767245, + "Area_sq_mi":214970, + "GPD_per_capita":4000.0, + "Climate":"2" + }, + { + "Country":"Haiti", + "Languages":"French, Haitian Creole", + "latitude":18.971187, + "longitude":-72.285215, + "Region":"LATIN AMER. & CARIB", + "Population":8308504, + "Area_sq_mi":27750, + "GPD_per_capita":1600.0, + "Climate":"2" + }, + { + "Country":"Honduras", + "Languages":"Spanish", + "latitude":15.199999, + "longitude":-86.241905, + "Region":"LATIN AMER. & CARIB", + "Population":7326496, + "Area_sq_mi":112090, + "GPD_per_capita":2600.0, + "Climate":"2" + }, + { + "Country":"Hong Kong", + "Languages":"Cantonese , English", + "latitude":22.396428, + "longitude":114.109497, + "Region":"ASIA (EX. NEAR EAST)", + "Population":6940432, + "Area_sq_mi":1092, + "GPD_per_capita":28800.0, + "Climate":"2" + }, + { + "Country":"Hungary", + "Languages":"Hungarian", + "latitude":47.162494, + "longitude":19.503304, + "Region":"EASTERN EUROPE", + "Population":9981334, + "Area_sq_mi":93030, + "GPD_per_capita":13900.0, + "Climate":"3" + }, + { + "Country":"Iceland", + "Languages":"Icelandic, Icelandic Sign Language", + "latitude":64.963051, + "longitude":-19.020835, + "Region":"WESTERN EUROPE", + "Population":299388, + "Area_sq_mi":103000, + "GPD_per_capita":30900.0, + "Climate":"3" + }, + { + "Country":"India", + "Languages":"Hindi, English", + "latitude":20.593684, + "longitude":78.96288, + "Region":"ASIA (EX. NEAR EAST)", + "Population":1095351995, + "Area_sq_mi":3287590, + "GPD_per_capita":2900.0, + "Climate":"2,5" + }, + { + "Country":"Indonesia", + "Languages":"Indonesian", + "latitude":-0.789275, + "longitude":113.921327, + "Region":"ASIA (EX. NEAR EAST)", + "Population":245452739, + "Area_sq_mi":1919440, + "GPD_per_capita":3200.0, + "Climate":"2" + }, + { + "Country":"Iran", + "Languages":"Persian", + "latitude":32.427908, + "longitude":53.688046, + "Region":"ASIA (EX. NEAR EAST)", + "Population":68688433, + "Area_sq_mi":1648000, + "GPD_per_capita":7000.0, + "Climate":"1" + }, + { + "Country":"Iraq", + "Languages":"Arabic", + "latitude":33.223191, + "longitude":43.679291, + "Region":"NEAR EAST", + "Population":26783383, + "Area_sq_mi":437072, + "GPD_per_capita":1500.0, + "Climate":"1" + }, + { + "Country":"Ireland", + "Languages":"English, Irish", + "latitude":53.41291, + "longitude":-8.24389, + "Region":"WESTERN EUROPE", + "Population":4062235, + "Area_sq_mi":70280, + "GPD_per_capita":29600.0, + "Climate":"3" + }, + { + "Country":"Israel", + "Languages":"Hebrew", + "latitude":31.046051, + "longitude":34.851612, + "Region":"NEAR EAST", + "Population":6352117, + "Area_sq_mi":20770, + "GPD_per_capita":19800.0, + "Climate":"3" + }, + { + "Country":"Italy", + "Languages":"Italian", + "latitude":41.87194, + "longitude":12.56738, + "Region":"WESTERN EUROPE", + "Population":58133509, + "Area_sq_mi":301230, + "GPD_per_capita":26700.0, + "Climate":"" + }, + { + "Country":"Jamaica", + "Languages":"English", + "latitude":18.109581, + "longitude":-77.297508, + "Region":"LATIN AMER. & CARIB", + "Population":2758124, + "Area_sq_mi":10991, + "GPD_per_capita":3900.0, + "Climate":"2" + }, + { + "Country":"Japan", + "Languages":"Japanese", + "latitude":36.204824, + "longitude":138.252924, + "Region":"ASIA (EX. NEAR EAST)", + "Population":127463611, + "Area_sq_mi":377835, + "GPD_per_capita":28200.0, + "Climate":"3" + }, + { + "Country":"Jordan", + "Languages":"Arabic", + "latitude":30.585164, + "longitude":36.238414, + "Region":"NEAR EAST", + "Population":5906760, + "Area_sq_mi":92300, + "GPD_per_capita":4300.0, + "Climate":"1" + }, + { + "Country":"Kazakhstan", + "Languages":"Kazakh, Russian", + "latitude":48.019573, + "longitude":66.923684, + "Region":"C.W. OF IND. STATES", + "Population":15233244, + "Area_sq_mi":2717300, + "GPD_per_capita":6300.0, + "Climate":"4" + }, + { + "Country":"Kenya", + "Languages":"English", + "latitude":-0.023559, + "longitude":37.906193, + "Region":"SUB-SAHARAN AFRICA", + "Population":34707817, + "Area_sq_mi":582650, + "GPD_per_capita":1000.0, + "Climate":"1,5" + }, + { + "Country":"Kiribati", + "Languages":"English", + "latitude":-3.370417, + "longitude":-168.734039, + "Region":"OCEANIA", + "Population":105432, + "Area_sq_mi":811, + "GPD_per_capita":800.0, + "Climate":"2" + }, + { + "Country":"Kuwait", + "Languages":"Standard Arabic", + "latitude":29.31166, + "longitude":47.481766, + "Region":"NEAR EAST", + "Population":2418393, + "Area_sq_mi":17820, + "GPD_per_capita":19000.0, + "Climate":"1" + }, + { + "Country":"Kyrgyzstan", + "Languages":"Kyrgyz, Russian", + "latitude":41.20438, + "longitude":74.766098, + "Region":"C.W. OF IND. STATES", + "Population":5213898, + "Area_sq_mi":198500, + "GPD_per_capita":1600.0, + "Climate":"2,5" + }, + { + "Country":"Laos", + "Languages":"Lao", + "latitude":19.85627, + "longitude":102.495496, + "Region":"ASIA (EX. NEAR EAST)", + "Population":6368481, + "Area_sq_mi":236800, + "GPD_per_capita":1700.0, + "Climate":"2" + }, + { + "Country":"Latvia", + "Languages":"Latvian", + "latitude":56.879635, + "longitude":24.603189, + "Region":"BALTICS", + "Population":2274735, + "Area_sq_mi":64589, + "GPD_per_capita":10200.0, + "Climate":"3" + }, + { + "Country":"Lebanon", + "Languages":"Arabic", + "latitude":33.854721, + "longitude":35.862285, + "Region":"NEAR EAST", + "Population":3874050, + "Area_sq_mi":10400, + "GPD_per_capita":4800.0, + "Climate":"" + }, + { + "Country":"Lesotho", + "Languages":"Sotho, English", + "latitude":-29.609988, + "longitude":28.233608, + "Region":"SUB-SAHARAN AFRICA", + "Population":2022331, + "Area_sq_mi":30355, + "GPD_per_capita":3000.0, + "Climate":"3" + }, + { + "Country":"Liberia", + "Languages":"English", + "latitude":6.428055, + "longitude":-9.429499, + "Region":"SUB-SAHARAN AFRICA", + "Population":3042004, + "Area_sq_mi":111370, + "GPD_per_capita":1000.0, + "Climate":"2" + }, + { + "Country":"Libya", + "Languages":"Arabic", + "latitude":26.3351, + "longitude":17.228331, + "Region":"NORTHERN AFRICA", + "Population":5900754, + "Area_sq_mi":1759540, + "GPD_per_capita":6400.0, + "Climate":"" + }, + { + "Country":"Liechtenstein", + "Languages":"German", + "latitude":47.166, + "longitude":9.555373, + "Region":"WESTERN EUROPE", + "Population":33987, + "Area_sq_mi":160, + "GPD_per_capita":25000.0, + "Climate":"4" + }, + { + "Country":"Lithuania", + "Languages":"Lithuanian", + "latitude":55.169438, + "longitude":23.881275, + "Region":"BALTICS", + "Population":3585906, + "Area_sq_mi":65200, + "GPD_per_capita":11400.0, + "Climate":"" + }, + { + "Country":"Luxembourg", + "Languages":"French, German, Luxembourgish", + "latitude":49.815273, + "longitude":6.129583, + "Region":"WESTERN EUROPE", + "Population":474413, + "Area_sq_mi":2586, + "GPD_per_capita":55100.0, + "Climate":"" + }, + { + "Country":"Macau", + "Languages":"Cantonese , Portuguese", + "latitude":22.198745, + "longitude":113.543873, + "Region":"ASIA (EX. NEAR EAST)", + "Population":453125, + "Area_sq_mi":28, + "GPD_per_capita":19400.0, + "Climate":"2" + }, + { + "Country":"Madagascar", + "Languages":"French, Malagasy", + "latitude":-18.766947, + "longitude":46.869107, + "Region":"SUB-SAHARAN AFRICA", + "Population":18595469, + "Area_sq_mi":587040, + "GPD_per_capita":800.0, + "Climate":"2" + }, + { + "Country":"Malawi", + "Languages":"English, Chichewa", + "latitude":-13.254308, + "longitude":34.301525, + "Region":"SUB-SAHARAN AFRICA", + "Population":13013926, + "Area_sq_mi":118480, + "GPD_per_capita":600.0, + "Climate":"2" + }, + { + "Country":"Malaysia", + "Languages":"Malay", + "latitude":4.210484, + "longitude":101.975766, + "Region":"ASIA (EX. NEAR EAST)", + "Population":24385858, + "Area_sq_mi":329750, + "GPD_per_capita":9000.0, + "Climate":"2" + }, + { + "Country":"Maldives", + "Languages":"Dhivehi", + "latitude":3.202778, + "longitude":73.22068, + "Region":"ASIA (EX. NEAR EAST)", + "Population":359008, + "Area_sq_mi":300, + "GPD_per_capita":3900.0, + "Climate":"2" + }, + { + "Country":"Mali", + "Languages":"French", + "latitude":17.570692, + "longitude":-3.996166, + "Region":"SUB-SAHARAN AFRICA", + "Population":11716829, + "Area_sq_mi":1240000, + "GPD_per_capita":900.0, + "Climate":"2" + }, + { + "Country":"Malta", + "Languages":"English, Maltese", + "latitude":35.937496, + "longitude":14.375416, + "Region":"WESTERN EUROPE", + "Population":400214, + "Area_sq_mi":316, + "GPD_per_capita":17700.0, + "Climate":"" + }, + { + "Country":"Marshall Islands", + "Languages":"English", + "latitude":7.131474, + "longitude":171.184478, + "Region":"OCEANIA", + "Population":60422, + "Area_sq_mi":11854, + "GPD_per_capita":1600.0, + "Climate":"2" + }, + { + "Country":"Mauritania", + "Languages":"Arabic", + "latitude":21.00789, + "longitude":-10.940835, + "Region":"SUB-SAHARAN AFRICA", + "Population":3177388, + "Area_sq_mi":1030700, + "GPD_per_capita":1800.0, + "Climate":"1" + }, + { + "Country":"Mauritius", + "Languages":"English", + "latitude":-20.348404, + "longitude":57.552152, + "Region":"SUB-SAHARAN AFRICA", + "Population":1240827, + "Area_sq_mi":2040, + "GPD_per_capita":11400.0, + "Climate":"2" + }, + { + "Country":"Mexico", + "Languages":"Spanish ", + "latitude":23.634501, + "longitude":-102.552784, + "Region":"LATIN AMER. & CARIB", + "Population":107449525, + "Area_sq_mi":1972550, + "GPD_per_capita":9000.0, + "Climate":"1,5" + }, + { + "Country":"Moldova", + "Languages":"Romanian", + "latitude":47.411631, + "longitude":28.369885, + "Region":"C.W. OF IND. STATES", + "Population":4466706, + "Area_sq_mi":33843, + "GPD_per_capita":1800.0, + "Climate":"" + }, + { + "Country":"Monaco", + "Languages":"French", + "latitude":43.750298, + "longitude":7.412841, + "Region":"WESTERN EUROPE", + "Population":32543, + "Area_sq_mi":2, + "GPD_per_capita":27000.0, + "Climate":"" + }, + { + "Country":"Mongolia", + "Languages":"Mongolian", + "latitude":46.862496, + "longitude":103.846656, + "Region":"ASIA (EX. NEAR EAST)", + "Population":2832224, + "Area_sq_mi":1564116, + "GPD_per_capita":1800.0, + "Climate":"1" + }, + { + "Country":"Morocco", + "Languages":"Arabic, Tamazight", + "latitude":31.791702, + "longitude":-7.09262, + "Region":"NORTHERN AFRICA", + "Population":33241259, + "Area_sq_mi":446550, + "GPD_per_capita":4000.0, + "Climate":"" + }, + { + "Country":"Mozambique", + "Languages":"Portuguese", + "latitude":-18.665695, + "longitude":35.529562, + "Region":"SUB-SAHARAN AFRICA", + "Population":19686505, + "Area_sq_mi":801590, + "GPD_per_capita":1200.0, + "Climate":"2" + }, + { + "Country":"Namibia", + "Languages":"English", + "latitude":-22.95764, + "longitude":18.49041, + "Region":"SUB-SAHARAN AFRICA", + "Population":2044147, + "Area_sq_mi":825418, + "GPD_per_capita":7200.0, + "Climate":"1" + }, + { + "Country":"Nauru", + "Languages":"English, Nauruan", + "latitude":-0.522778, + "longitude":166.931503, + "Region":"OCEANIA", + "Population":13287, + "Area_sq_mi":21, + "GPD_per_capita":5000.0, + "Climate":"2" + }, + { + "Country":"Nepal", + "Languages":"Nepali", + "latitude":28.394857, + "longitude":84.124008, + "Region":"ASIA (EX. NEAR EAST)", + "Population":28287147, + "Area_sq_mi":147181, + "GPD_per_capita":1400.0, + "Climate":"" + }, + { + "Country":"Netherlands", + "Languages":"Dutch ", + "latitude":52.132633, + "longitude":5.291266, + "Region":"WESTERN EUROPE", + "Population":16491461, + "Area_sq_mi":41526, + "GPD_per_capita":28600.0, + "Climate":"3" + }, + { + "Country":"New Zealand", + "Languages":"English , Maori, New Zealand Sign Language", + "latitude":-40.900557, + "longitude":174.885971, + "Region":"OCEANIA", + "Population":4076140, + "Area_sq_mi":268680, + "GPD_per_capita":21600.0, + "Climate":"3" + }, + { + "Country":"Nicaragua", + "Languages":"Spanish", + "latitude":12.865416, + "longitude":-85.207229, + "Region":"LATIN AMER. & CARIB", + "Population":5570129, + "Area_sq_mi":129494, + "GPD_per_capita":2300.0, + "Climate":"2" + }, + { + "Country":"Niger", + "Languages":"French", + "latitude":17.607789, + "longitude":8.081666, + "Region":"SUB-SAHARAN AFRICA", + "Population":12525094, + "Area_sq_mi":1267000, + "GPD_per_capita":800.0, + "Climate":"1" + }, + { + "Country":"Nigeria", + "Languages":"English", + "latitude":9.081999, + "longitude":8.675277, + "Region":"SUB-SAHARAN AFRICA", + "Population":131859731, + "Area_sq_mi":923768, + "GPD_per_capita":900.0, + "Climate":"1,5" + }, + { + "Country":"Norway", + "Languages":"Norwegian, Sami", + "latitude":60.472024, + "longitude":8.468946, + "Region":"WESTERN EUROPE", + "Population":4610820, + "Area_sq_mi":323802, + "GPD_per_capita":37800.0, + "Climate":"3" + }, + { + "Country":"Oman", + "Languages":"Arabic", + "latitude":21.512583, + "longitude":55.923255, + "Region":"NEAR EAST", + "Population":3102229, + "Area_sq_mi":212460, + "GPD_per_capita":13100.0, + "Climate":"1" + }, + { + "Country":"Pakistan", + "Languages":"English, Urdu", + "latitude":30.375321, + "longitude":69.345116, + "Region":"ASIA (EX. NEAR EAST)", + "Population":165803560, + "Area_sq_mi":803940, + "GPD_per_capita":2100.0, + "Climate":"1" + }, + { + "Country":"Palau", + "Languages":"English, Palauan", + "latitude":7.51498, + "longitude":134.58252, + "Region":"OCEANIA", + "Population":20579, + "Area_sq_mi":458, + "GPD_per_capita":9000.0, + "Climate":"2" + }, + { + "Country":"Panama", + "Languages":"Spanish", + "latitude":8.537981, + "longitude":-80.782127, + "Region":"LATIN AMER. & CARIB", + "Population":3191319, + "Area_sq_mi":78200, + "GPD_per_capita":6300.0, + "Climate":"2" + }, + { + "Country":"Papua New Guinea", + "Languages":"English, Hiri Motu, PNG Sign Language, Tok Pisin", + "latitude":-6.314993, + "longitude":143.95555, + "Region":"OCEANIA", + "Population":5670544, + "Area_sq_mi":462840, + "GPD_per_capita":2200.0, + "Climate":"2" + }, + { + "Country":"Paraguay", + "Languages":"Spanish, Guaran\u00ed", + "latitude":-23.442503, + "longitude":-58.443832, + "Region":"LATIN AMER. & CARIB", + "Population":6506464, + "Area_sq_mi":406750, + "GPD_per_capita":4700.0, + "Climate":"2" + }, + { + "Country":"Peru", + "Languages":"Spanish, Aymara, Quechua", + "latitude":-9.189967, + "longitude":-75.015152, + "Region":"LATIN AMER. & CARIB", + "Population":28302603, + "Area_sq_mi":1285220, + "GPD_per_capita":5100.0, + "Climate":"1,5" + }, + { + "Country":"Philippines", + "Languages":"English, Filipino, Filipino Sign Language", + "latitude":12.879721, + "longitude":121.774017, + "Region":"ASIA (EX. NEAR EAST)", + "Population":89468677, + "Area_sq_mi":300000, + "GPD_per_capita":4600.0, + "Climate":"2" + }, + { + "Country":"Poland", + "Languages":"Polish", + "latitude":51.919438, + "longitude":19.145136, + "Region":"EASTERN EUROPE", + "Population":38536869, + "Area_sq_mi":312685, + "GPD_per_capita":11100.0, + "Climate":"3" + }, + { + "Country":"Portugal", + "Languages":"Portuguese", + "latitude":39.399872, + "longitude":-8.224454, + "Region":"WESTERN EUROPE", + "Population":10605870, + "Area_sq_mi":92391, + "GPD_per_capita":18000.0, + "Climate":"3" + }, + { + "Country":"Qatar", + "Languages":"Arabic", + "latitude":25.354826, + "longitude":51.183884, + "Region":"NEAR EAST", + "Population":885359, + "Area_sq_mi":11437, + "GPD_per_capita":21500.0, + "Climate":"1" + }, + { + "Country":"Romania", + "Languages":"Romanian", + "latitude":45.943161, + "longitude":24.96676, + "Region":"EASTERN EUROPE", + "Population":22303552, + "Area_sq_mi":237500, + "GPD_per_capita":7000.0, + "Climate":"3" + }, + { + "Country":"Russia", + "Languages":"Russian", + "latitude":61.52401, + "longitude":105.318756, + "Region":"C.W. OF IND. STATES", + "Population":142893540, + "Area_sq_mi":17075200, + "GPD_per_capita":8900.0, + "Climate":"" + }, + { + "Country":"Rwanda", + "Languages":"English, French, Kinyarwanda, Swahili", + "latitude":-1.940278, + "longitude":29.873888, + "Region":"SUB-SAHARAN AFRICA", + "Population":8648248, + "Area_sq_mi":26338, + "GPD_per_capita":1300.0, + "Climate":"3" + }, + { + "Country":"Saint Kitts & Nevis", + "Languages":"English", + "latitude":17.357822, + "longitude":-62.782998, + "Region":"LATIN AMER. & CARIB", + "Population":39129, + "Area_sq_mi":261, + "GPD_per_capita":8800.0, + "Climate":"2" + }, + { + "Country":"Saint Lucia", + "Languages":"English", + "latitude":13.909444, + "longitude":-60.978893, + "Region":"LATIN AMER. & CARIB", + "Population":168458, + "Area_sq_mi":616, + "GPD_per_capita":5400.0, + "Climate":"2" + }, + { + "Country":"Samoa", + "Languages":"English", + "latitude":-13.759029, + "longitude":-172.104629, + "Region":"OCEANIA", + "Population":176908, + "Area_sq_mi":2944, + "GPD_per_capita":5600.0, + "Climate":"2" + }, + { + "Country":"San Marino", + "Languages":"Italian", + "latitude":43.94236, + "longitude":12.457777, + "Region":"WESTERN EUROPE", + "Population":29251, + "Area_sq_mi":61, + "GPD_per_capita":34600.0, + "Climate":"" + }, + { + "Country":"Saudi Arabia", + "Languages":"Arabic", + "latitude":23.885942, + "longitude":45.079162, + "Region":"NEAR EAST", + "Population":27019731, + "Area_sq_mi":1960582, + "GPD_per_capita":11800.0, + "Climate":"1" + }, + { + "Country":"Senegal", + "Languages":"French", + "latitude":14.497401, + "longitude":-14.452362, + "Region":"SUB-SAHARAN AFRICA", + "Population":11987121, + "Area_sq_mi":196190, + "GPD_per_capita":1600.0, + "Climate":"2" + }, + { + "Country":"Serbia", + "Languages":"Serbian", + "latitude":44.016521, + "longitude":21.005859, + "Region":"EASTERN EUROPE", + "Population":9396411, + "Area_sq_mi":88361, + "GPD_per_capita":2200.0, + "Climate":"" + }, + { + "Country":"Seychelles", + "Languages":"English, French, Seychellois Creole", + "latitude":-4.679574, + "longitude":55.491977, + "Region":"SUB-SAHARAN AFRICA", + "Population":81541, + "Area_sq_mi":455, + "GPD_per_capita":7800.0, + "Climate":"2" + }, + { + "Country":"Sierra Leone", + "Languages":"English", + "latitude":8.460555, + "longitude":-11.779889, + "Region":"SUB-SAHARAN AFRICA", + "Population":6005250, + "Area_sq_mi":71740, + "GPD_per_capita":500.0, + "Climate":"2" + }, + { + "Country":"Singapore", + "Languages":"English, Malay, Mandarin, Tamil", + "latitude":1.352083, + "longitude":103.819836, + "Region":"ASIA (EX. NEAR EAST)", + "Population":4492150, + "Area_sq_mi":693, + "GPD_per_capita":23700.0, + "Climate":"2" + }, + { + "Country":"Slovakia", + "Languages":"Slovak", + "latitude":48.669026, + "longitude":19.699024, + "Region":"EASTERN EUROPE", + "Population":5439448, + "Area_sq_mi":48845, + "GPD_per_capita":13300.0, + "Climate":"3" + }, + { + "Country":"Slovenia", + "Languages":"Slovene", + "latitude":46.151241, + "longitude":14.995463, + "Region":"EASTERN EUROPE", + "Population":2010347, + "Area_sq_mi":20273, + "GPD_per_capita":19000.0, + "Climate":"" + }, + { + "Country":"Solomon Islands", + "Languages":"English", + "latitude":-9.64571, + "longitude":160.156194, + "Region":"OCEANIA", + "Population":552438, + "Area_sq_mi":28450, + "GPD_per_capita":1700.0, + "Climate":"2" + }, + { + "Country":"Somalia", + "Languages":"Arabic", + "latitude":5.152149, + "longitude":46.199616, + "Region":"SUB-SAHARAN AFRICA", + "Population":8863338, + "Area_sq_mi":637657, + "GPD_per_capita":500.0, + "Climate":"1" + }, + { + "Country":"South Africa", + "Languages":"Afrikaans, English, Southern Ndebele, Sotho, Northern Sotho, Swazi, Tsonga, Tswana, Venda, Xhosa, Zulu", + "latitude":-30.559482, + "longitude":22.937506, + "Region":"SUB-SAHARAN AFRICA", + "Population":44187637, + "Area_sq_mi":1219912, + "GPD_per_capita":10700.0, + "Climate":"1" + }, + { + "Country":"Spain", + "Languages":"Spanish", + "latitude":40.463667, + "longitude":-3.74922, + "Region":"WESTERN EUROPE", + "Population":40397842, + "Area_sq_mi":504782, + "GPD_per_capita":22000.0, + "Climate":"3" + }, + { + "Country":"Sri Lanka", + "Languages":"Sinhala, Tamil", + "latitude":7.873054, + "longitude":80.771797, + "Region":"ASIA (EX. NEAR EAST)", + "Population":20222240, + "Area_sq_mi":65610, + "GPD_per_capita":3700.0, + "Climate":"2" + }, + { + "Country":"Sudan", + "Languages":"Arabic, English", + "latitude":12.862807, + "longitude":30.217636, + "Region":"SUB-SAHARAN AFRICA", + "Population":41236378, + "Area_sq_mi":2505810, + "GPD_per_capita":1900.0, + "Climate":"2" + }, + { + "Country":"Suriname", + "Languages":"Dutch", + "latitude":3.919305, + "longitude":-56.027783, + "Region":"LATIN AMER. & CARIB", + "Population":439117, + "Area_sq_mi":163270, + "GPD_per_capita":4000.0, + "Climate":"2" + }, + { + "Country":"Sweden", + "Languages":"Swedish", + "latitude":60.128161, + "longitude":18.643501, + "Region":"WESTERN EUROPE", + "Population":9016596, + "Area_sq_mi":449964, + "GPD_per_capita":26800.0, + "Climate":"3" + }, + { + "Country":"Switzerland", + "Languages":"French ", + "latitude":46.818188, + "longitude":8.227512, + "Region":"WESTERN EUROPE", + "Population":7523934, + "Area_sq_mi":41290, + "GPD_per_capita":32700.0, + "Climate":"3" + }, + { + "Country":"Syria", + "Languages":"Arabic", + "latitude":34.802075, + "longitude":38.996815, + "Region":"NEAR EAST", + "Population":18881361, + "Area_sq_mi":185180, + "GPD_per_capita":3300.0, + "Climate":"1" + }, + { + "Country":"Taiwan", + "Languages":"Mandarin ", + "latitude":23.69781, + "longitude":120.960515, + "Region":"ASIA (EX. NEAR EAST)", + "Population":23036087, + "Area_sq_mi":35980, + "GPD_per_capita":23400.0, + "Climate":"2" + }, + { + "Country":"Tajikistan", + "Languages":"Tajik", + "latitude":38.861034, + "longitude":71.276093, + "Region":"C.W. OF IND. STATES", + "Population":7320815, + "Area_sq_mi":143100, + "GPD_per_capita":1000.0, + "Climate":"2" + }, + { + "Country":"Tanzania", + "Languages":"English", + "latitude":-6.369028, + "longitude":34.888822, + "Region":"SUB-SAHARAN AFRICA", + "Population":37445392, + "Area_sq_mi":945087, + "GPD_per_capita":600.0, + "Climate":"" + }, + { + "Country":"Thailand", + "Languages":"Thai", + "latitude":15.870032, + "longitude":100.992541, + "Region":"ASIA (EX. NEAR EAST)", + "Population":64631595, + "Area_sq_mi":514000, + "GPD_per_capita":7400.0, + "Climate":"2" + }, + { + "Country":"Togo", + "Languages":"French", + "latitude":8.619543, + "longitude":0.824782, + "Region":"SUB-SAHARAN AFRICA", + "Population":5548702, + "Area_sq_mi":56785, + "GPD_per_capita":1500.0, + "Climate":"2" + }, + { + "Country":"Tonga", + "Languages":"English", + "latitude":-21.178986, + "longitude":-175.198242, + "Region":"OCEANIA", + "Population":114689, + "Area_sq_mi":748, + "GPD_per_capita":2200.0, + "Climate":"2" + }, + { + "Country":"Trinidad & Tobago", + "Languages":"English", + "latitude":10.691803, + "longitude":-61.222503, + "Region":"LATIN AMER. & CARIB", + "Population":1065842, + "Area_sq_mi":5128, + "GPD_per_capita":9500.0, + "Climate":"2" + }, + { + "Country":"Tunisia", + "Languages":"Arabic", + "latitude":33.886917, + "longitude":9.537499, + "Region":"NORTHERN AFRICA", + "Population":10175014, + "Area_sq_mi":163610, + "GPD_per_capita":6900.0, + "Climate":"3" + }, + { + "Country":"Turkey", + "Languages":"Turkish", + "latitude":38.963745, + "longitude":35.243322, + "Region":"NEAR EAST", + "Population":70413958, + "Area_sq_mi":780580, + "GPD_per_capita":6700.0, + "Climate":"3" + }, + { + "Country":"Turkmenistan", + "Languages":"Turkmen", + "latitude":38.969719, + "longitude":59.556278, + "Region":"C.W. OF IND. STATES", + "Population":5042920, + "Area_sq_mi":488100, + "GPD_per_capita":5800.0, + "Climate":"1" + }, + { + "Country":"Tuvalu", + "Languages":"English ", + "latitude":-7.109535, + "longitude":177.64933, + "Region":"OCEANIA", + "Population":11810, + "Area_sq_mi":26, + "GPD_per_capita":1100.0, + "Climate":"2" + }, + { + "Country":"Uganda", + "Languages":"English, Swahili", + "latitude":1.373333, + "longitude":32.290275, + "Region":"SUB-SAHARAN AFRICA", + "Population":28195754, + "Area_sq_mi":236040, + "GPD_per_capita":1400.0, + "Climate":"2" + }, + { + "Country":"Ukraine", + "Languages":"Ukrainian", + "latitude":48.379433, + "longitude":31.16558, + "Region":"C.W. OF IND. STATES", + "Population":46710816, + "Area_sq_mi":603700, + "GPD_per_capita":5400.0, + "Climate":"3" + }, + { + "Country":"United Arab Emirates", + "Languages":"Arabic", + "latitude":23.424076, + "longitude":53.847818, + "Region":"NEAR EAST", + "Population":2602713, + "Area_sq_mi":82880, + "GPD_per_capita":23200.0, + "Climate":"1" + }, + { + "Country":"United Kingdom", + "Languages":"English ", + "latitude":55.378051, + "longitude":-3.435973, + "Region":"WESTERN EUROPE", + "Population":60609153, + "Area_sq_mi":244820, + "GPD_per_capita":27700.0, + "Climate":"3" + }, + { + "Country":"United States", + "Languages":"English ", + "latitude":37.09024, + "longitude":-95.712891, + "Region":"NORTHERN AMERICA", + "Population":298444215, + "Area_sq_mi":9631420, + "GPD_per_capita":37800.0, + "Climate":"3" + }, + { + "Country":"Uruguay", + "Languages":"Spanish ", + "latitude":-32.522779, + "longitude":-55.765835, + "Region":"LATIN AMER. & CARIB", + "Population":3431932, + "Area_sq_mi":176220, + "GPD_per_capita":12800.0, + "Climate":"3" + }, + { + "Country":"Uzbekistan", + "Languages":"Uzbek", + "latitude":41.377491, + "longitude":64.585262, + "Region":"C.W. OF IND. STATES", + "Population":27307134, + "Area_sq_mi":447400, + "GPD_per_capita":1700.0, + "Climate":"1" + }, + { + "Country":"Vanuatu", + "Languages":"English, French", + "latitude":-15.376706, + "longitude":166.959158, + "Region":"OCEANIA", + "Population":208869, + "Area_sq_mi":12200, + "GPD_per_capita":2900.0, + "Climate":"2" + }, + { + "Country":"Venezuela", + "Languages":"Spanish, Venezuelan Sign Language", + "latitude":6.42375, + "longitude":-66.58973, + "Region":"LATIN AMER. & CARIB", + "Population":25730435, + "Area_sq_mi":912050, + "GPD_per_capita":4800.0, + "Climate":"2" + }, + { + "Country":"Vietnam", + "Languages":null, + "latitude":14.058324, + "longitude":108.277199, + "Region":"ASIA (EX. NEAR EAST)", + "Population":84402966, + "Area_sq_mi":329560, + "GPD_per_capita":2500.0, + "Climate":"2" + }, + { + "Country":"Yemen", + "Languages":"Arabic", + "latitude":15.552727, + "longitude":48.516388, + "Region":"NEAR EAST", + "Population":21456188, + "Area_sq_mi":527970, + "GPD_per_capita":800.0, + "Climate":"1" + }, + { + "Country":"Zambia", + "Languages":"English", + "latitude":-13.133897, + "longitude":27.849332, + "Region":"SUB-SAHARAN AFRICA", + "Population":11502010, + "Area_sq_mi":752614, + "GPD_per_capita":800.0, + "Climate":"2" + }, + { + "Country":"Zimbabwe", + "Languages":"Chewa, Chibarwe, English, Kalanga, Khoisan, Nambya, Ndau, Ndebele, Shangani, Shona, Sign language, Sotho, Tonga, Tswana, Venda, Xhosa", + "latitude":-19.015438, + "longitude":29.154857, + "Region":"SUB-SAHARAN AFRICA", + "Population":12236805, + "Area_sq_mi":390580, + "GPD_per_capita":1900.0, + "Climate":"2" + } +] \ No newline at end of file diff --git a/src/img/earthbump1k.jpg b/src/img/earthbump1k.jpg new file mode 100644 index 000000000..7b1a98907 Binary files /dev/null and b/src/img/earthbump1k.jpg differ diff --git a/src/img/earthcloudmap.jpg b/src/img/earthcloudmap.jpg new file mode 100644 index 000000000..db94d1573 Binary files /dev/null and b/src/img/earthcloudmap.jpg differ diff --git a/src/img/earthlights1k.jpg b/src/img/earthlights1k.jpg new file mode 100644 index 000000000..ff77ffd42 Binary files /dev/null and b/src/img/earthlights1k.jpg differ diff --git a/src/img/earthmap1k.jpg b/src/img/earthmap1k.jpg new file mode 100644 index 000000000..7dcab8a07 Binary files /dev/null and b/src/img/earthmap1k.jpg differ diff --git a/src/img/earthspec1k.jpg b/src/img/earthspec1k.jpg new file mode 100644 index 000000000..1d7164690 Binary files /dev/null and b/src/img/earthspec1k.jpg differ diff --git a/src/img/icon.ico b/src/img/icon.ico new file mode 100644 index 000000000..6900fbe77 Binary files /dev/null and b/src/img/icon.ico differ diff --git a/src/index.html b/src/index.html index 30ed75a7d..0e1f8cd58 100644 --- a/src/index.html +++ b/src/index.html @@ -3,9 +3,51 @@ - ThreeJS Starter + + Dordor's Portfolio + + + + +
+
+

The New
Era

+

Welcome to Dordor's World

+
+
+ + + + +
+

Scroll Down Button #3

+ Scroll +
+
+ +
+
+
+
+

Home

+
+
+
+
+
+ + \ No newline at end of file diff --git a/src/script.js b/src/script.js index 9d86927ca..c28d1046c 100644 --- a/src/script.js +++ b/src/script.js @@ -1,8 +1,21 @@ import './style.css' +// import './css/main.css' import * as THREE from 'three' import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js' import * as dat from 'dat.gui' +import { Material } from 'three' +import { gsap } from 'gsap' +import { Scrolltrigger } from 'gsap/ScrollTrigger' +// texture Loader +const loader = new THREE.TextureLoader() +const cross = loader.load('plus-8.png') +// const moon = loader.load('moon.jpg') +// const normalMoon = loader.load('normal.jpg') + +const raycaster = new THREE.Raycaster(); +const mouse = new THREE.Vector2(); +const touch = new THREE.Vector2(); // Debug const gui = new dat.GUI() @@ -11,26 +24,147 @@ const canvas = document.querySelector('canvas.webgl') // Scene const scene = new THREE.Scene() +let lights = []; // Objects -const geometry = new THREE.TorusGeometry( .7, .2, 16, 100 ); +// const geometry = new THREE.TorusGeometry( .7, .2, 16, 100 ); +const globeGeometry = new THREE.SphereGeometry(10, 60, 60) + +const particlesGeometry = new THREE.BufferGeometry; + +const sunGeometry = new THREE.SphereGeometry(50, 60, 60) + +const particlesCount = 40000; + +const positionArray = new Float32Array(particlesCount * 4); + +for (let i = 0; i < particlesCount * 4; i++) { + positionArray[i] = (Math.random() - 0.3) * (Math.random() * 1000); +} + +particlesGeometry.setAttribute('position', new THREE.BufferAttribute(positionArray, 4)) // Materials +// const material = new THREE.PointsMaterial({ +// size: 0.005 +// }) + -const material = new THREE.MeshBasicMaterial() -material.color = new THREE.Color(0xff0000) + +const globeMaterial = new THREE.MeshPhongMaterial({ + map: new THREE.TextureLoader().load('earthMap8k.jpeg'), + bumpMap: new THREE.ImageUtils.loadTexture('8081_earthbump10k.jpg'), + bumpScale: 0.005, + // new THREE.TextureLoader().load('8081_earthbump10k.jpg'), + specularMap: new THREE.TextureLoader().load('8081_earthspec10k'), + + specular: new THREE.Color('grey') +}) +// const moonMaterial = new THREE.MeshStandardMaterial({ +// map: moon, +// normal: normalMoon, +// }) +// material.wireframe = true +const particlesMaterial = new THREE.PointsMaterial({ + size: 0.07, + map: cross, + transparent: true, + opacity: 0.6, + blending: THREE.AdditiveBlending +}) + +const sunMaterial = new THREE.MeshPhongMaterial({ + map: new THREE.TextureLoader().load('sunmap.jpg') + +}) // Mesh -const sphere = new THREE.Mesh(geometry,material) -scene.add(sphere) +const sphere = new THREE.Mesh(globeGeometry,globeMaterial) +const particlesMesh = new THREE.Points(particlesGeometry, particlesMaterial) +const sun = new THREE.Mesh(sunGeometry,sunMaterial) +//scene.add(sphere, particlesMesh) + +function createLights(scene){ + lights[0] = new THREE.PointLight("#004d99", .5, 0); + lights[1] = new THREE.PointLight("#004d99", .5, 0); + lights[2] = new THREE.PointLight("#004d99", .7, 0); + lights[3] = new THREE.AmbientLight("#ffffff"); + + lights[0].position.set(200, 0, -400); + lights[1].position.set(200, 200, 400); + lights[2].position.set(-200, -200, -50); + + scene.add(lights[0]); + scene.add(lights[1]); + scene.add(lights[2]); + scene.add(lights[3]); +} + +createLights(scene); + + +//==================== + +let earthCloudGeo = new THREE.SphereGeometry(6, 50, 50); +let atmosphereGeo = new THREE.SphereGeometry(6, 50, 50); +// Add cloud texture +let earthCloudsTexture = new THREE.TextureLoader().load('earthhiresclouds4K.jpg'); + +// Add cloud material +let earthMaterialClouds = new THREE.MeshBasicMaterial({ + color: 0xffffff, + map: earthCloudsTexture, + transparent:true, + opacity: 0.4 +}); + +let athmosphereMaterial = new THREE.MeshBasicMaterial({ + color: 0x9fb9e2, + transparent:true, + opacity: 0.7 +}); + +// Create final texture for clouds +let earthClouds = new THREE.Mesh(earthCloudGeo, earthMaterialClouds); +let atmosphere = new THREE.Mesh(atmosphereGeo, athmosphereMaterial) +// Scale above the earth sphere mesh +earthClouds.scale.set( 1.68, 1.68, 1.68); +atmosphere.scale.set( 1.60, 1.65, 1.60); +sun.scale.set(5, 5, 5) + +// Make child of the earth +sphere.add( earthClouds, atmosphere) +sun.position.set(20,20,20) +scene.add(sphere, particlesMesh, sun) +//==================== + +//====================== + + +let moonGeometry = new THREE.SphereGeometry(1.64, 60, 60); +let moonMap = new THREE.TextureLoader().load('moon.jpg'); +let moonBump = new THREE.TextureLoader().load('moonbump4k.jpg'); +let moonMaterial = new THREE.MeshPhongMaterial({ + map: moonMap, + bumpMap: moonBump, + bumpScale: 1, +}); + +let moon = new THREE.Mesh(moonGeometry, moonMaterial); +moon.position.set(10, 10, 10); + +sphere.add(moon); + + + + +//====================== // Lights +// const pointLight = new THREE.PointLight(0xffffff, 0.1) -const pointLight = new THREE.PointLight(0xffffff, 0.1) -pointLight.position.x = 2 -pointLight.position.y = 3 -pointLight.position.z = 4 -scene.add(pointLight) +// pointLight.position.z = 5 +// scene.add(pointLight) /** * Sizes @@ -59,24 +193,140 @@ window.addEventListener('resize', () => * Camera */ // Base camera -const camera = new THREE.PerspectiveCamera(75, sizes.width / sizes.height, 0.1, 100) -camera.position.x = 0 -camera.position.y = 0 -camera.position.z = 2 +const camera = new THREE.PerspectiveCamera(75, sizes.width / sizes.height, 0.01, 500) +camera.position.x = 5 +// camera.position.z = 5 scene.add(camera) // Controls -// const controls = new OrbitControls(camera, canvas) -// controls.enableDamping = true +const controls = new OrbitControls(camera, canvas) +controls.enableDamping = true +controls.enableZoom = false +controls.enablePan = false +controls.dampingFactor = 0.05 +controls.maxDistance = 1000 +controls.minDistance = 30 /** * Renderer */ const renderer = new THREE.WebGLRenderer({ - canvas: canvas + canvas: canvas, + antialias: true, + alpha: true, }) renderer.setSize(sizes.width, sizes.height) renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)) +renderer.setClearColor(new THREE.Color('#000000')) + +// Mouse +document.addEventListener('mousemove', animateParticles) + +let mouseX = 0 +let mouseY = 0 + +function animateParticles(event) { + mouseY = event.clientY + mouseX = event.clientX +} + +function onMouseMove(e) { + const x = e.clientX + const y = e.clientY + + gsap.to(scene.rotation, { + y: gsap.utils.mapRange(0, window.innerWidth, 1, -1, x), + x: gsap.utils.mapRange(0, window.innerHeight, 1, -1, y), + }) +} + +function onWindowClick(event) { + event.preventDefault(); + mouse.x = (event.clientX / window.innerWidth) * 2 - 1; + mouse.y = - (event.clientY / window.innerHeight) * 2 + 1; + raycaster.setFromCamera(mouse, camera); + + let intersects = raycaster.intersectObjects(earthClouds.children); + + for (let i = 0; i < intersects.length; i++){ + document.querySelector("#region").innerText = "Region: " + intersects[0].object.userData.region; + document.getElementById("region").style.color = intersects[0].object.userData.color; + document.querySelector("#country-info").innerText = "Country: " + intersects[0].object.userData.country; + document.querySelector("#language").innerText = "Language: " + intersects[0].object.userData.language; + document.querySelector("#population").innerText = "Population: " + intersects[0].object.userData.population; + document.querySelector("#area-sq-mi").innerText = "Area(mile^2): " + intersects[0].object.userData.area_sq_mi; + document.querySelector("#gdp-per-capita").innerText = "GDP Per-Capita: " + intersects[0].object.userData.gdp_per_capita; + document.querySelector("#climate").innerText = "Climate: " + intersects[0].object.userData.climate; + } + const item = intersects[0]; + let point = item.point; + let camDistance = camera.position.copy(point).normalize.multiplyScalar(camDistance); +}; + + +window.addEventListener('mousemove', onMouseMove) +window.addEventListener('click', onWindowClick, false); +/** + * Animation GSAP + */ +gsap.registerPlugin(ScrollTrigger) +ScrollTrigger.defaults({ + scrub: 6, + ease: 'none', +}) + +const sections = document.querySelectorAll('.section') +const first = document.querySelector('.first') +gsap.from(sphere.position, { + y: 1, + x: 0, + duration: 1, + ease: 'expo', +}) +gsap.from('h1', { + yPercent: 100, + autoAlpha: 0, + ease: 'back', + delay: 0.3, +}) +gsap.to(sphere.rotation, { + x: Math.PI * 2, + scrollTrigger: { + trigger: sections[1], + }, +}) +gsap.to(sphere.scale, { + x: 2, + y: 2, + z: 2, + scrollTrigger: { + trigger: sections[2], + }, +}) +gsap.to(particlesMesh.scale, { + x: 2, + y: 2, + z: 2, + duration: 5, + scrollTrigger: { + trigger: sections[3], + }, +}) +gsap.to(sphere.scale, { + x: 1, + y: 1, + z: 1, + scrollTrigger: { + trigger: sections[4], + }, +},) +gsap.to(sphere.rotate, { + y: Math.PI * 2, + scrollTrigger: { + trigger: sections[5], + }, +},) + /** * Animate @@ -84,16 +334,48 @@ renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)) const clock = new THREE.Clock() +const moveCamera = () => { + + const t = document.body.getBoundingClientRect().top; + sphere.rotation.x += 0.015; + sphere.rotation.y += 0.015; + sphere.rotation.z += 0.015; + + moon.rotation.x += 0.1; + moon.rotation.y += 0.15; + moon.rotation.z += 0.1; + + // camera.position.z = t * -0.01; + camera.position.x = t * -0.0002; + // camera.rotation.y = t * -0.0002; + +} + +//document.body.onscroll = moveCamera; +moveCamera(); + + + const tick = () => { - const elapsedTime = clock.getElapsedTime() + const elapsedTime = (clock.getElapsedTime() - clock.getElapsedTime()*0.5)*0.1 // Update objects - sphere.rotation.y = .5 * elapsedTime + sphere.rotation.y = .05 * elapsedTime + moon.rotation.y = .15 * elapsedTime + earthClouds.rotation.y = .08 * elapsedTime + particlesMesh.rotation.y = .1 * elapsedTime + + if(mouseX > 0) { + particlesMesh.rotation.x = - mouseY * (0.00008 * elapsedTime) + particlesMesh.rotation.y = mouseX * (0.00008 * elapsedTime) + sphere.rotation.x = - mouseY * (0.00008 * elapsedTime) + sphere.rotation.y = mouseX * (0.00008 * elapsedTime) + } // Update Orbital Controls - // controls.update() + controls.update() // Render renderer.render(scene, camera) @@ -102,4 +384,15 @@ const tick = () => window.requestAnimationFrame(tick) } -tick() \ No newline at end of file + +tick() +//------------------------------------------------- +/** + * Button click + */ + $(function() { + $('a[href*=#]').on('click', function(e) { + e.preventDefault(); + $('html, body').animate({ scrollTop: $($(this).attr('href')).offset().top}, 500, 'linear'); + }); + }); \ No newline at end of file diff --git a/src/style.css b/src/style.css index 70e4e1afa..0724a84cf 100644 --- a/src/style.css +++ b/src/style.css @@ -1,3 +1,35 @@ +@import url("https://use.typekit.net/jmk3xov.css"); + +canvas { + position: fixed; + top: 0; + left: 0; +} + +h2, h3, blockquote { + font-family: elevon, sans-serif; + font-weight: 700; + font-style: normal; +} + + +header { + background: var(--dark-bg); + grid-column: 2 / span 5; + font-size: 2.5rem; + padding: 2rem; + margin-bottom: var(--spacing); +} + +:root { + --dark-bg: rgba(15, 15, 15, 0.95); + --spacing: 350px; + + font-family: brandon-grotesque, sans-serif; + font-weight: 400; + font-style: normal; +} + * { margin: 0; @@ -8,7 +40,8 @@ html, body { height: 100vh; - font-family: 'Poppins'; + font-family: 'Helvetica'; + color: white; } .webgl @@ -18,3 +51,285 @@ body left: 0; outline: none; } + +.container +{ + position: absolute; + z-index: 1; + width: 100%; + height: 100vh; + display: grid; + place-content: center; + +} + +.content { + display: flex; + gap: 5em; + width: 100%; + padding-top: 3em; + position: relative; +} + +.content:before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + border-bottom: 1px solid white; + transform: scaleX(1); +} + +.demo a { + position: absolute; + bottom: 20px; + left: 50%; + z-index: 2; + display: inline-block; + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%); + color: #fff; + font : normal 400 20px/1 'Josefin Sans', sans-serif; + letter-spacing: .1em; + text-decoration: none; + transition: opacity .3s; + } + + .demo a:hover { + opacity: .5; + } + + + +h1 { + font-size: 4rem; + width: 50vw; + line-height: 97%; + text-align: right; +} + +h1, p { + flex-basis: 0; + flex-grow:1; + clip-path: polygon(0 0, 100% 0, 100% 0, 0 0); +} + +p { + font-size: 1.3rem; + width: 40rw; +} + + +main { + width: 100vw; + color: white; + z-index: 99; + position: absolute; + width: 100%; + margin: 0px auto; + padding: 120px 0px; + + display: grid; + grid-template-columns: repeat(12, 1fr); + } + + * { + margin: 0; + padding: 0; + box-sizing: border-box; + } + + section { + position: relative; + width: 100%; + height: 100%; + } + + blockquote { + margin: 0; + padding: 0; + grid-column: 2 / span 9; + margin-bottom: var(--spacing); + } + + blockquote p { + color: black; + background-color: white; + font-size: 4rem; + display: inline; + line-height: 1; + } + + .left { + grid-column: 6 / 12; + } + + + section h1 { + position: absolute; + top: 50%; + left: 50%; + z-index: 2; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + color: #fff; + font : normal 300 64px/1 'Josefin Sans', sans-serif; + text-align: center; + white-space: nowrap; + } + + .button-down { + width: 100%; + height: 100vh; + background-color: #151515 + } + + .scroll-down { + position: absolute; + bottom: 2rem; + left: 50%; + transform: translate(-75%); + flex-direction: column; + align-items: center; + } + + .mouse { + width: 1.25rem; + height: 2.75rem; + border: 2px solid #fff; + border-radius: 2rem; + margin-bottom: .5rem; + display: flex; + } + + .mouse span { + width: 0.75rem; + height: 0.75rem; + background-color: #fff; + display: block; + border-radius: 50%; + margin: auto; + animation: move-wheel 1s linear infinite; + } + + .arrow span { + display: block; + width: 1rem; + height: 1rem; + border: 2px solid transparent; + border-right-color: #fff; + border-bottom-color: #fff; + transform: rotate(45deg); + animation: arrow-down 1s linear infinite; + } + + +#section03 a { + padding-top: 60px; + } + + #section03 a span { + position: absolute; + top: 0; + left: 50%; + width: 46px; + height: 46px; + margin-left: -23px; + border: 1px solid #fff; + border-radius: 100%; + box-sizing: border-box; + } + + #section03 a span::after { + position: absolute; + top: 50%; + left: 50%; + content: ''; + width: 16px; + height: 16px; + margin: -12px 0 0 -8px; + border-left: 1px solid #fff; + border-bottom: 1px solid #fff; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + box-sizing: border-box; + } + + #section03 a span::before { + position: absolute; + top: 0; + left: 0; + z-index: -1; + content: ''; + width: 44px; + height: 44px; + box-shadow: 0 0 0 0 rgba(255,255,255,.1); + border-radius: 100%; + opacity: 0; + -webkit-animation: sdb03 3s infinite; + animation: sdb03 3s infinite; + box-sizing: border-box; + } + + @-webkit-keyframes sdb03 { + 0% { + opacity: 0; + } + 30% { + opacity: 1; + } + 60% { + box-shadow: 0 0 0 60px rgba(255,255,255,.1); + opacity: 0; + } + 100% { + opacity: 0; + } + } + + @keyframes sdb03 { + 0% { + opacity: 0; + } + 30% { + opacity: 1; + } + 60% { + box-shadow: 0 0 0 60px rgba(255,255,255,.1); + opacity: 0; + } + 100% { + opacity: 0; + } + } + + + @keyframes move-wheel { + 0%{ + opacity: 0; + transform: translateY(-0.9rem); + } + 100%{ + opacity: 1; + transform: translateY(0.9rem); + } + } + + @keyframes arrow-down { + 0%{ + opacity: 0; + } + 25%{ + opacity: 0.25; + } + 50%{ + opacity: 0.5; + } + 75%{ + opacity: 0.75; + } + 100%{ + opacity: 1; + } +} \ No newline at end of file diff --git a/static/8081_earthbump10k.jpg b/static/8081_earthbump10k.jpg new file mode 100644 index 000000000..db3826930 Binary files /dev/null and b/static/8081_earthbump10k.jpg differ diff --git a/static/8081_earthlights10k.jpg b/static/8081_earthlights10k.jpg new file mode 100644 index 000000000..b5039931d Binary files /dev/null and b/static/8081_earthlights10k.jpg differ diff --git a/static/8081_earthmap10k.jpg b/static/8081_earthmap10k.jpg new file mode 100644 index 000000000..812458cc9 Binary files /dev/null and b/static/8081_earthmap10k.jpg differ diff --git a/static/8081_earthspec10k.jpg b/static/8081_earthspec10k.jpg new file mode 100644 index 000000000..c2eea0e0e Binary files /dev/null and b/static/8081_earthspec10k.jpg differ diff --git a/static/bgsmoke.jpg b/static/bgsmoke.jpg new file mode 100644 index 000000000..284b98f51 Binary files /dev/null and b/static/bgsmoke.jpg differ diff --git a/static/earth/2_no_clouds_4k.jpg b/static/earth/2_no_clouds_4k.jpg new file mode 100644 index 000000000..ae8a1c837 Binary files /dev/null and b/static/earth/2_no_clouds_4k.jpg differ diff --git a/static/earth/elev_bump_4k.jpg b/static/earth/elev_bump_4k.jpg new file mode 100644 index 000000000..22ee4ff38 Binary files /dev/null and b/static/earth/elev_bump_4k.jpg differ diff --git a/static/earth/fair_clouds_4k.png b/static/earth/fair_clouds_4k.png new file mode 100644 index 000000000..528ca99d9 Binary files /dev/null and b/static/earth/fair_clouds_4k.png differ diff --git a/static/earth/water_4k.png b/static/earth/water_4k.png new file mode 100644 index 000000000..125fecbe7 Binary files /dev/null and b/static/earth/water_4k.png differ diff --git a/static/earthMap8k.jpeg b/static/earthMap8k.jpeg new file mode 100644 index 000000000..d24c6ad0a Binary files /dev/null and b/static/earthMap8k.jpeg differ diff --git a/static/earthcloudmap.jpg b/static/earthcloudmap.jpg new file mode 100644 index 000000000..db94d1573 Binary files /dev/null and b/static/earthcloudmap.jpg differ diff --git a/static/earthhiresclouds4K.jpg b/static/earthhiresclouds4K.jpg new file mode 100644 index 000000000..51c899df8 Binary files /dev/null and b/static/earthhiresclouds4K.jpg differ diff --git a/static/earthmap1k.jpg b/static/earthmap1k.jpg new file mode 100644 index 000000000..7dcab8a07 Binary files /dev/null and b/static/earthmap1k.jpg differ diff --git a/static/moon.jpg b/static/moon.jpg new file mode 100644 index 000000000..81e639cfe Binary files /dev/null and b/static/moon.jpg differ diff --git a/static/moonbump4k.jpg b/static/moonbump4k.jpg new file mode 100644 index 000000000..f6024f5d2 Binary files /dev/null and b/static/moonbump4k.jpg differ diff --git a/static/nebula-background-effect-threejs-5.jpg b/static/nebula-background-effect-threejs-5.jpg new file mode 100644 index 000000000..bb9e2e38d Binary files /dev/null and b/static/nebula-background-effect-threejs-5.jpg differ diff --git a/static/normal.jpg b/static/normal.jpg new file mode 100644 index 000000000..8dd8e6d13 Binary files /dev/null and b/static/normal.jpg differ diff --git a/static/plus-8.png b/static/plus-8.png new file mode 100644 index 000000000..15ab1c6e6 Binary files /dev/null and b/static/plus-8.png differ diff --git a/static/smoke2.png b/static/smoke2.png new file mode 100644 index 000000000..eb66eec3e Binary files /dev/null and b/static/smoke2.png differ diff --git a/static/sunmap.jpg b/static/sunmap.jpg new file mode 100644 index 000000000..3e0b520e4 Binary files /dev/null and b/static/sunmap.jpg differ diff --git a/todo.todo b/todo.todo new file mode 100644 index 000000000..e69de29bb