{"id":99680,"date":"2025-03-02T02:42:55","date_gmt":"2025-03-01T23:12:55","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/"},"modified":"2025-03-02T02:42:55","modified_gmt":"2025-03-01T23:12:55","slug":"claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/","title":{"rendered":"Claude 3.7 Sonnet Thinking \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 Deepseek R1: \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u0627\u0645\u0644"},"content":{"rendered":"<div data-article-id=\"2305437\" id=\"article-body\">\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0633\u0631\u0627\u0646\u062c\u0627\u0645 Anthropic \u0633\u06a9\u0648\u062a \u0631\u0627 \u0634\u06a9\u0633\u062a \u0648 Claude 3.7 Sonnet \u0631\u0627 \u0645\u0646\u062a\u0634\u0631 \u06a9\u0631\u062f \u060c \u06cc\u06a9 \u0645\u062f\u0644 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0645\u062f\u0644 \u062a\u0641\u06a9\u0631 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0647\u0627\u06cc \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0641\u06a9\u0631 \u06a9\u0646\u062f \u0648 \u0641\u0648\u0631\u0627\u064b \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0645\u062f\u0644 \u067e\u0627\u06cc\u0647 \u067e\u0627\u0633\u062e \u062f\u0647\u062f.<\/p>\n<p>\u0627\u0632 \u0645\u0639\u06cc\u0627\u0631\u0647\u0627\u06cc Arc-Agi \u060c \u063a\u0632\u0644 3.7 Claude \u0628\u0627 Thinking \u0628\u0627 O3-Mini-High \u0628\u0631\u0627\u06cc \u0632\u0645\u06cc\u0646\u0647 16K \u0628\u0647 \u062b\u0645\u0631 \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a. \u0648 R1 \u0628\u0627 \u0645\u062f\u0644 \u063a\u0632\u0644 \u067e\u0627\u06cc\u0647 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0627\u0646\u0633\u0627\u0646 \u0634\u0646\u0627\u0633\u06cc \u0645\u0637\u0645\u0626\u0646\u0627\u064b \u06a9\u0627\u0631 \u0628\u0632\u0631\u06af\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u0631\u062c\u0639 \u060c Deepseek R1 \u062d\u062f\u0648\u062f 15 \u066a \u0628\u0647 \u062b\u0645\u0631 \u0631\u0633\u0627\u0646\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fokq1q1yfwv9qmigwcy1j.png\" alt=\"\u0645\u0639\u06cc\u0627\u0631 ARC-AGI \u0628\u0631\u0627\u06cc 3.7 \u063a\u0632\u0644 \u0648 R1\" loading=\"lazy\" width=\"800\" height=\"465\" title=\"\"><\/p>\n<p>\u0627\u0645\u0627 \u0645\u062f\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 Deepseek R1 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0627\u0645 \u0648 \u06a9\u0627\u0631\u0647\u0627\u06cc \u0628\u0633\u06cc\u0627\u0631\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0645\u0647\u0645 \u0627\u0633\u062a. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0645\u0646 \u06a9\u0646\u062c\u06a9\u0627\u0648 \u0628\u0648\u062f\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u063a\u0632\u0644 \u062c\u062f\u06cc\u062f Claude 3.7 \u062c\u0645\u0639 \u0645\u06cc \u0634\u0648\u062f.<br \/>\u0645\u0646 \u0647\u0631 \u062f\u0648 \u0645\u062f\u0644 \u0631\u0627 \u062f\u0631 \u0645\u06cc\u0627\u0646 \u0648\u0638\u0627\u06cc\u0641 \u0645\u0627\u0646\u0646\u062f \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u060c \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0648 \u0646\u0648\u0634\u062a\u0646 \u0645\u0642\u0627\u06cc\u0633\u0647 \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645.<\/p>\n<hr\/>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#%D9%81%D9%87%D8%B1%D8%B3%D8%AA_%D9%85%D8%B7%D8%A7%D9%84%D8%A8\" >\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#TL_%D8%9B\" >TL \u061b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#Claude_37_Sonnet_%D8%AF%D8%B1_%D9%85%D9%82%D8%A7%D8%A8%D9%84_Deepseek_R1\" >Claude 3.7 Sonnet \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 Deepseek R1<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#%D8%A7%D8%B3%D8%AA%D8%AF%D9%84%D8%A7%D9%84_%D9%BE%DB%8C%DA%86%DB%8C%D8%AF%D9%87\" >\u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u067e\u06cc\u0686\u06cc\u062f\u0647<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#1_%D9%85%D8%B9%D9%85%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%82%D8%B6%D8%A7%D9%88%D8%AA_%D8%AF%D8%B1_%D9%85%D9%88%D8%B1%D8%AF_%D8%AA%D8%B9%D8%B5%D8%A8_%D8%B4%D9%86%D8%A7%D8%AE%D8%AA%DB%8C\" >1. \u0645\u0639\u0645\u0627 \u0628\u0631\u0627\u06cc \u0642\u0636\u0627\u0648\u062a \u062f\u0631 \u0645\u0648\u0631\u062f \u062a\u0639\u0635\u0628 \u0634\u0646\u0627\u062e\u062a\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#2_%D8%B1%D8%A7%D8%A8%D8%B7%D9%87_%D8%AE%D9%88%D9%86\" >2. \u0631\u0627\u0628\u0637\u0647 \u062e\u0648\u0646<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#3_%D8%A8%D8%A7%D8%B2%DB%8C_Tic-Tac-Toe\" >3. \u0628\u0627\u0632\u06cc Tic-Tac-Toe<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C%D8%A7%D8%AA\" >\u0631\u06cc\u0627\u0636\u06cc\u0627\u062a<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#1_GCD_%D8%A7%DB%8C%D9%86_%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87_%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87_n99_n60-1_%D8%B1%D8%A7_%D9%BE%DB%8C%D8%AF%D8%A7_%DA%A9%D9%86%DB%8C%D8%AF_n%3E_1\" >1. GCD \u0627\u06cc\u0646 \u0645\u062c\u0645\u0648\u0639\u0647 \u0645\u062c\u0645\u0648\u0639\u0647 {n^99 (n^60-1) \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f: n> 1}<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#2_x-1410_%D8%B1%D8%A7_%D9%BE%DB%8C%D8%AF%D8%A7_%DA%A9%D9%86%DB%8C%D8%AF_%D8%8C_%D8%AC%D8%A7%DB%8C%DB%8C_%DA%A9%D9%87_x_%D8%AA%D8%B9%D8%AF%D8%A7%D8%AF_%D9%88%D8%A7%DA%A9%D9%87_%D9%87%D8%A7_%D8%AF%D8%B1_%D9%BE%D8%A7%D8%B3%D8%AE_%D8%A7%D8%B3%D8%AA\" >2. (x-14)^10 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f \u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 x \u062a\u0639\u062f\u0627\u062f \u0648\u0627\u06a9\u0647 \u0647\u0627 \u062f\u0631 \u067e\u0627\u0633\u062e \u0627\u0633\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#%D8%AE%D9%84%D8%A7%D8%B5%D9%87_%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C\" >\u062e\u0644\u0627\u0635\u0647 \u0631\u06cc\u0627\u0636\u06cc<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C\" >\u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#1_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_SVG\" >1. \u0627\u06cc\u062c\u0627\u062f SVG<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#4_%D8%AA%D9%88%D9%BE_%D8%AF%D8%B1_%DB%8C%DA%A9_%D8%B4%DB%8C%D8%A1_%D9%87%D9%86%D8%AF%D8%B3%DB%8C\" >4. \u062a\u0648\u067e \u062f\u0631 \u06cc\u06a9 \u0634\u06cc\u0621 \u0647\u0646\u062f\u0633\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#3_%D8%A7%D9%86%DB%8C%D9%85%DB%8C%D8%B4%D9%86_%D8%B3%D9%87_%D8%A8%D8%B9%D8%AF%DB%8C_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_3JS\" >3. \u0627\u0646\u06cc\u0645\u06cc\u0634\u0646 \u0633\u0647 \u0628\u0639\u062f\u06cc \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 3JS<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#%D8%AE%D9%84%D8%A7%D8%B5%D9%87_%D8%AA%D9%88%D8%A7%D9%86%D8%A7%DB%8C%DB%8C_%D9%87%D8%A7%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C\" >\u062e\u0644\u0627\u0635\u0647 \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#%D9%86%D9%88%D8%B4%D8%AA%D9%86\" >\u0646\u0648\u0634\u062a\u0646<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/nabfollower.com\/blog\/claude-3-7-sonnet-thinking-%d8%af%d8%b1-%d9%85%d9%82%d8%a7%d8%a8%d9%84-deepseek-r1-%d8%aa%d8%ac%d8%b2%db%8c%d9%87-%d9%88-%d8%aa%d8%ad%d9%84%db%8c%d9%84-%da%a9%d8%a7%d9%85%d9%84\/#%D8%AD%DA%A9%D9%85_%D9%86%D9%87%D8%A7%DB%8C%DB%8C\" >\u062d\u06a9\u0645 \u0646\u0647\u0627\u06cc\u06cc<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%81%D9%87%D8%B1%D8%B3%D8%AA_%D9%85%D8%B7%D8%A7%D9%84%D8%A8\"><\/span>\n<p>  \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>Claude 3.7 Sonnet \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 Deepseek R1<\/li>\n<li>\u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u067e\u06cc\u0686\u06cc\u062f\u0647<\/li>\n<li>\u0631\u06cc\u0627\u0636\u06cc\u0627\u062a<\/li>\n<li>\u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc<\/li>\n<li>\u0646\u0648\u0634\u062a\u0646<\/li>\n<li>\u062d\u06a9\u0645 \u0646\u0647\u0627\u06cc\u06cc<\/li>\n<\/ol>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"TL_%D8%9B\"><\/span>\n<p>  TL \u061b<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u2022 Claude \u0648 Deepseek R1 \u0647\u0645 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0631\u0648\u0632\u0627\u0646\u0647 \u0648 \u06a9\u0627\u0631\u0647\u0627\u06cc \u0631\u06cc\u0627\u0636\u06cc \u062f\u0631 \u0647\u0645\u0627\u0646 \u062a\u0648\u067e \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f.<br \/>\u2022 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0628\u0647 \u0635\u0631\u0627\u062d\u062a \u0628\u0647 \u0627\u0646\u0633\u0627\u0646 \u0634\u0646\u0627\u0633\u06cc \u0627\u0634\u0627\u0631\u0647 \u0634\u062f \u060c \u0622\u0646\u0647\u0627 \u0645\u062f\u0644 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0639\u0645\u0644\u06cc \u0622\u0645\u0648\u0632\u0634 \u062f\u0627\u062f\u0647 \u0627\u0646\u062f. \u0627\u06cc\u0646 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0631 \u0622\u0632\u0645\u0627\u06cc\u0634\u0627\u062a \u0645\u0646\u0639\u06a9\u0633 \u0634\u062f\u0647 \u0627\u0633\u062a.<br \/>\u2022 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0633\u06cc\u0627\u0631 \u0628\u0647\u062a\u0631 \u0627\u0632 Deepseek R1 \u062f\u0631 \u0628\u062e\u0634 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0627\u0633\u062a. \u0645\u0642\u0627\u06cc\u0633\u0647 \u0686\u0646\u062f\u0627\u0646\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.<br \/>\u2022 \u06a9\u0644\u0648\u062f \u062f\u0631 \u0646\u0648\u0634\u062a\u0646 \u0641\u0646\u06cc \u062e\u0648\u0628 \u0627\u0633\u062a \u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 Deepseek R1 \u0645\u0627\u0646\u0646\u062f \u0627\u0646\u0633\u0627\u0646 \u062a\u0631 \u0627\u0633\u062a.<\/p>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"Claude_37_Sonnet_%D8%AF%D8%B1_%D9%85%D9%82%D8%A7%D8%A8%D9%84_Deepseek_R1\"><\/span>\n<p>  Claude 3.7 Sonnet \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 Deepseek R1<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06cc\u0646 \u062c\u0646\u0627\u06cc\u062a\u06a9\u0627\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u06a9\u0647 \u0642\u06cc\u0645\u062a \u06af\u0630\u0627\u0631\u06cc \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0647\u0631 \u0645\u0642\u0627\u06cc\u0633\u0647 \u062f\u0631 \u0646\u0638\u0631 \u0646\u06af\u06cc\u0631\u06cc\u062f. \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u060c \u0628\u0647 \u0648\u06cc\u0698\u0647 \u0622\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627\u06cc \u0622\u0646\u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0646\u062f \u0645\u0647\u0645 \u0627\u0633\u062a.<\/p>\n<p>\u0642\u06cc\u0645\u062a \u06af\u0630\u0627\u0631\u06cc Deepseek R1<br \/>\u2022 \u0646\u0634\u0627\u0646\u0647 \u0647\u0627\u06cc \u0648\u0631\u0648\u062f\u06cc (\u0636\u0631\u0628\u0647 \u062d\u0627\u0641\u0638\u0647 \u0646\u0647\u0627\u0646): 0.14 \u062f\u0644\u0627\u0631 \u062f\u0631 \u0647\u0631 \u0645\u06cc\u0644\u06cc\u0648\u0646 \u0646\u0634\u0627\u0646\u0647<br \/>\u2022 \u0646\u0634\u0627\u0646\u0647 \u0647\u0627\u06cc \u0648\u0631\u0648\u062f\u06cc (\u062d\u0627\u0641\u0638\u0647 \u067e\u0646\u0647\u0627\u0646): 0.55 \u062f\u0644\u0627\u0631 \u062f\u0631 \u0647\u0631 \u0645\u06cc\u0644\u06cc\u0648\u0646 \u062a\u0648\u06a9\u0646<br \/>\u2022 \u0646\u0634\u0627\u0646\u0647 \u0647\u0627\u06cc \u062e\u0631\u0648\u062c\u06cc: 2.19 \u062f\u0644\u0627\u0631 \u062f\u0631 \u0647\u0631 \u0645\u06cc\u0644\u06cc\u0648\u0646 \u062a\u0648\u06a9\u0646<br \/>Claude 3.7 \u0642\u06cc\u0645\u062a \u06af\u0630\u0627\u0631\u06cc \u063a\u0632\u0644<br \/>\u2022 \u0646\u0634\u0627\u0646\u0647 \u0647\u0627\u06cc \u0648\u0631\u0648\u062f\u06cc: 3.00 \u062f\u0644\u0627\u0631 \u062f\u0631 \u0647\u0631 \u0645\u06cc\u0644\u06cc\u0648\u0646 \u0646\u0634\u0627\u0646\u0647<br \/>\u2022 \u0646\u0634\u0627\u0646\u0647 \u0647\u0627\u06cc \u062e\u0631\u0648\u062c\u06cc: 15.00 \u062f\u0644\u0627\u0631 \u062f\u0631 \u0647\u0631 \u0645\u06cc\u0644\u06cc\u0648\u0646 \u062a\u0648\u06a9\u0646<br \/>\u0627\u0632 \u062f\u06cc\u062f\u06af\u0627\u0647 \u0647\u0632\u06cc\u0646\u0647 \u060c Deepseek R1 \u0647\u0646\u0648\u0632 \u067e\u0627\u062f\u0634\u0627\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u062c\u0627\u0646\u0648\u0631 \u0645\u0637\u0644\u0642 \u0628\u0631\u0627\u06cc \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u06a9\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u0646\u0628\u0639 \u0628\u0627\u0632 \u0627\u0633\u062a \u060c \u0648 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0631 \u0631\u0648\u06cc \u0633\u062e\u062a \u0627\u0641\u0632\u0627\u0631 \u062e\u0648\u062f \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f \u060c \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0634\u0631\u06a9\u062a\u0647\u0627\u06cc \u062d\u0633\u0627\u0633 \u0628\u0647 \u062d\u0631\u06cc\u0645 \u062e\u0635\u0648\u0635\u06cc \u0646\u06cc\u0632 \u0645\u0647\u0645 \u0627\u0633\u062a.<\/p>\n<p>\u0627\u0645\u0627 \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u062e\u0627\u0645 \u0646\u06cc\u0632 \u0627\u0647\u0645\u06cc\u062a \u062f\u0627\u0631\u062f. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u06cc\u0646 \u062f\u0648 \u0645\u062f\u0644 \u0631\u0627 \u0628\u0627 \u0647\u0645 \u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B3%D8%AA%D8%AF%D9%84%D8%A7%D9%84_%D9%BE%DB%8C%DA%86%DB%8C%D8%AF%D9%87\"><\/span>\n<p>  \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u067e\u06cc\u0686\u06cc\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"1_%D9%85%D8%B9%D9%85%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%82%D8%B6%D8%A7%D9%88%D8%AA_%D8%AF%D8%B1_%D9%85%D9%88%D8%B1%D8%AF_%D8%AA%D8%B9%D8%B5%D8%A8_%D8%B4%D9%86%D8%A7%D8%AE%D8%AA%DB%8C\"><\/span>\n<p>  1. \u0645\u0639\u0645\u0627 \u0628\u0631\u0627\u06cc \u0642\u0636\u0627\u0648\u062a \u062f\u0631 \u0645\u0648\u0631\u062f \u062a\u0639\u0635\u0628 \u0634\u0646\u0627\u062e\u062a\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0633\u0624\u0627\u0644 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a \u060c \u0627\u0645\u0627 \u0628\u06cc\u0634\u062a\u0631 \u0645\u062f\u0644 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0646 \u0633\u0639\u06cc \u06a9\u0631\u062f\u0647 \u0627\u0645 \u067e\u0627\u0633\u062e \u0646\u062f\u0647\u0646\u062f.<\/p>\n<p><strong>\u0633\u0631\u06cc\u0639: \u06cc\u06a9 \u0632\u0646 \u0648 \u067e\u0633\u0631\u0634 \u062f\u0631 \u06cc\u06a9 \u062a\u0635\u0627\u062f\u0641 \u0631\u0627\u0646\u0646\u062f\u06af\u06cc \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u0632\u0646 \u0645\u062a\u0623\u0633\u0641\u0627\u0646\u0647 \u06a9\u0634\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u067e\u0633\u0631 \u0628\u0647 \u0628\u06cc\u0645\u0627\u0631\u0633\u062a\u0627\u0646 \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc \u0634\u0648\u062f. \u0648\u0642\u062a\u06cc \u067e\u0632\u0634\u06a9 \u067e\u0633\u0631 \u0631\u0627 \u0645\u06cc \u0628\u06cc\u0646\u062f \u060c \u0645\u06cc \u06af\u0648\u06cc\u062f: &#8220;\u0645\u0646 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u0645 \u0631\u0648\u06cc \u0627\u06cc\u0646 \u06a9\u0648\u062f\u06a9 \u0641\u0639\u0627\u0644\u06cc\u062a \u06a9\u0646\u0645. \u0627\u0648 \u067e\u0633\u0631\u0645 \u0627\u0633\u062a! \u0686\u06af\u0648\u0646\u0647 \u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0627\u0633\u062a\u061f<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqabip9l2tp6z8e3m3rax.png\" alt=\"Claude andceing Ridles\" loading=\"lazy\" width=\"800\" height=\"356\" title=\"\"><\/p>\n<p>\u0645\u0646 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644 \u0631\u0627 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u0645 \u060c \u0648 \u0627\u0632 \u0647\u0645 \u067e\u0627\u0634\u06cc\u062f\u0647 \u0627\u0633\u062a.<br \/>*<em>\u0633\u0631\u06cc\u0639: \u062c\u0631\u0627\u062d \u060c \u06a9\u0647 \u067e\u062f\u0631 \u067e\u0633\u0631 \u0627\u0633\u062a \u060c \u0645\u06cc \u06af\u0648\u06cc\u062f: &#8220;\u0645\u0646 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u0645 \u0631\u0648\u06cc \u0627\u06cc\u0646 \u06a9\u0648\u062f\u06a9 \u0641\u0639\u0627\u0644\u06cc\u062a \u06a9\u0646\u0645. \u0627\u0648 \u067e\u0633\u0631 \u0645\u0646 \u0627\u0633\u062a &#8220;\u060c \u06a9\u0647 \u062c\u0631\u0627\u062d \u0627\u06cc\u0646 \u06a9\u0648\u062f\u06a9 \u0627\u0633\u062a. \u0633\u0631 \u0631\u0627\u0633\u062a \u0628\u0627\u0634\u06cc\u062f &#8220;.<br \/>*<\/em><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fncgkmu6tbeozjpqjiwxs.png\" br alt=\"\" title=\"\">&#8221; loading=&#8221;lazy&#8221; width=&#8221;800&#8243; height=&#8221;365&#8243;\/><\/p>\n<p>\u0647\u0645\u06cc\u0646 \u0645\u0648\u0631\u062f \u0628\u0627 Deepseek R1 \u0646\u06cc\u0632 \u0647\u0645\u06cc\u0646 \u0645\u0648\u0631\u062f \u0628\u0648\u062f. \u0627\u06cc\u0646 \u0628\u0647 \u0633\u0648\u0627\u0644 \u0645\u0646 \u0628\u0631\u0627\u06cc \u0645\u062f\u0644 \u0647\u0627\u06cc \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0686\u06a9 \u0648 \u0686\u06a9 \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc0flr9fpib1kf56bwcse.png\" &quot;Deepseek br alt=\"\" title=\"\">&#8221; loading=&#8221;lazy&#8221; width=&#8221;800&#8243; height=&#8221;232&#8243;\/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_%D8%B1%D8%A7%D8%A8%D8%B7%D9%87_%D8%AE%D9%88%D9%86\"><\/span>\n<p>  2. \u0631\u0627\u0628\u0637\u0647 \u062e\u0648\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>*<em>\u0633\u0631\u06cc\u0639: \u062c\u0641 \u062f\u0648 \u0628\u0631\u0627\u062f\u0631 \u062f\u0627\u0631\u062f \u0648 \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0628\u0631\u0627\u062f\u0631\u0627\u0646\u0634 \u0633\u0647 \u062e\u0648\u0627\u0647\u0631 \u062f\u0627\u0631\u0646\u062f. \u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u062e\u0648\u0627\u0647\u0631\u0627\u0646 \u062f\u0627\u0631\u0627\u06cc \u0686\u0647\u0627\u0631 \u0628\u0631\u0627\u062f\u0631 \u067e\u0644\u0647 \u0648 \u067e\u0646\u062c \u062e\u0648\u0627\u0647\u0631 \u0646\u0627\u067e\u062f\u0631\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062f\u0631 \u06a9\u0644 \u0647\u0634\u062a \u062e\u0648\u0627\u0647\u0631 \u0648 \u0628\u0631\u0627\u062f\u0631 \u062f\u0631 \u0627\u06cc\u0646 \u062e\u0627\u0646\u0648\u0627\u062f\u0647 \u062f\u0627\u0631\u0646\u062f.<br \/>*<\/em><br \/>\u062e\u0631\u0648\u062c\u06cc \u06a9\u0644\u0648\u062f \u0634\u0628\u06cc\u0647 \u0628\u0647 Deepseek \u0648 \u062d\u062a\u06cc O3-Mini \u0628\u0648\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gvkol3mbw46bja6jy5u.png\" br alt=\"\" title=\"\">&#8221; loading=&#8221;lazy&#8221; width=&#8221;800&#8243; height=&#8221;370&#8243;\/><\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c Deepseek R1 \u060c \u0637\u0628\u0642 \u0645\u0639\u0645\u0648\u0644 \u060c \u062f\u0627\u0631\u0627\u06cc \u0633\u0646\u06af\u0647\u0627\u06cc \u0642\u06cc\u0645\u062a\u06cc \u062f\u0631 \u062a\u062e\u062a\u062e\u0648\u0627\u0628 \u0627\u0633\u062a. \u06af\u0631\u0686\u0647 \u062e\u0631\u0648\u062c\u06cc \u0627\u0634\u062a\u0628\u0627\u0647 \u0628\u0648\u062f \u060c \u0627\u0645\u0627 \u062f\u0631 \u0632\u0646\u062c\u06cc\u0631\u0647 \u0641\u06a9\u0631\u06cc \u062e\u0648\u062f \u062f\u0631\u0633\u062a \u0634\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9p1i8xzrwl0vnd3prjpl.png\" &quot;deepseek r1 cot br alt=\"\" title=\"\">&#8221; loading=&#8221;lazy&#8221; width=&#8221;800&#8243; height=&#8221;372&#8243;\/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_%D8%A8%D8%A7%D8%B2%DB%8C_Tic-Tac-Toe\"><\/span>\n<p>  3. \u0628\u0627\u0632\u06cc Tic-Tac-Toe<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0646 \u0627\u0632 \u06a9\u0644\u0648\u062f \u062e\u0648\u0627\u0633\u062a\u0645 \u062d\u0631\u06a9\u062a \u0628\u0639\u062f\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f \u06a9\u0647 \u067e\u06cc\u0631\u0648\u0632\u06cc \u0622\u0646 \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f. \u0645\u0646 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0634\u062a\u0645 \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u067e\u0627\u0633\u062e \u062f\u0647\u062f \u060c \u0627\u0645\u0627 \u0634\u06a9\u0633\u062a \u062e\u0648\u0631\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3pt8urrufjelpuiclln7.png\" alt=\"Claude \u0628\u0627\u0632\u06cc Tic-Tac-Toe\" loading=\"lazy\" width=\"800\" height=\"527\" title=\"\"><\/p>\n<p>Deepseek R1 \u06cc\u06a9 \u0645\u062f\u0644 \u0686\u0646\u062f \u0645\u0646\u0638\u0648\u0631\u0647 \u0646\u06cc\u0633\u062a.<\/p>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C%D8%A7%D8%AA\"><\/span>\n<p>  \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"1_GCD_%D8%A7%DB%8C%D9%86_%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87_%D9%85%D8%AC%D9%85%D9%88%D8%B9%D9%87_n99_n60-1_%D8%B1%D8%A7_%D9%BE%DB%8C%D8%AF%D8%A7_%DA%A9%D9%86%DB%8C%D8%AF_n%3E_1\"><\/span>\n<p>  1. GCD \u0627\u06cc\u0646 \u0645\u062c\u0645\u0648\u0639\u0647 \u0645\u062c\u0645\u0648\u0639\u0647 {n^99 (n^60-1) \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f: n> 1}<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0633\u0624\u0627\u0644 \u0646\u0633\u0628\u062a\u0627\u064b \u062f\u0634\u0648\u0627\u0631 \u0628\u0648\u062f \u0648 \u06a9\u0644\u0648\u062f \u0646\u062a\u0648\u0627\u0646\u0633\u062a \u0622\u0646 \u0631\u0627 \u062d\u0644 \u06a9\u0646\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fopsupvqsqf3a51cde3r3.png\" &quot;Claude .7 Sonnet Solving Math br alt=\"\" title=\"\">&#8221; loading=&#8221;lazy&#8221; width=&#8221;800&#8243; height=&#8221;545&#8243;\/><\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c Deepseek R1 \u062f\u0631 \u0646\u0642\u0637\u0647 \u0627\u06cc \u0628\u0648\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffoo1947uwwlmnvm67y91.png\" &quot;Deepseek R1 br alt=\"\" title=\"\">&#8221; loading=&#8221;lazy&#8221; width=&#8221;800&#8243; height=&#8221;445&#8243;\/><\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_x-1410_%D8%B1%D8%A7_%D9%BE%DB%8C%D8%AF%D8%A7_%DA%A9%D9%86%DB%8C%D8%AF_%D8%8C_%D8%AC%D8%A7%DB%8C%DB%8C_%DA%A9%D9%87_x_%D8%AA%D8%B9%D8%AF%D8%A7%D8%AF_%D9%88%D8%A7%DA%A9%D9%87_%D9%87%D8%A7_%D8%AF%D8%B1_%D9%BE%D8%A7%D8%B3%D8%AE_%D8%A7%D8%B3%D8%AA\"><\/span>\n<p>  2. (x-14)^10 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f \u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 x \u062a\u0639\u062f\u0627\u062f \u0648\u0627\u06a9\u0647 \u0647\u0627 \u062f\u0631 \u067e\u0627\u0633\u062e \u0627\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Claude 3.7 Sonnet \u062a\u0648\u0627\u0646\u0633\u062a \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0628\u0647 \u0622\u0646 \u067e\u0627\u0633\u062e \u062f\u0647\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fubqfvpsgf8knn3yorolm.png\" br alt=\"\" title=\"\">&#8221; loading=&#8221;lazy&#8221; width=&#8221;800&#8243; height=&#8221;369&#8243;\/><\/p>\n<p>Deepseek R1 \u0646\u062a\u0648\u0627\u0646\u0633\u062a \u0622\u0646 \u0631\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9sphjro30fh99c7xs37h.png\" alt=\"Deepseek R1 \u067e\u0627\u0633\u062e \u062f\u0627\u062f\u0646 \u0628\u0647 \u0631\u06cc\u0627\u0636\u06cc\" loading=\"lazy\" width=\"800\" height=\"208\" title=\"\"><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AE%D9%84%D8%A7%D8%B5%D9%87_%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C\"><\/span>\n<p>  \u062e\u0644\u0627\u0635\u0647 \u0631\u06cc\u0627\u0636\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u0631\u06cc\u0627\u0636\u06cc \u06cc\u06a9 \u06a9\u06cc\u0633\u0647 \u0645\u062e\u062a\u0644\u0637 \u0627\u0633\u062a. \u0634\u0645\u0627 \u0647\u0631\u06af\u0632 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0647\u0645 \u0627\u0634\u062a\u0628\u0627\u0647 \u06a9\u0646\u06cc\u062f \u060c \u0627\u0645\u0627 \u0647\u0632\u06cc\u0646\u0647 \u0628\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f Deepseek \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f \u0622\u0646 \u0631\u0627 \u0628\u06cc \u0646\u0638\u06cc\u0631 \u06a9\u0646\u062f. \u0627\u0645\u0627 \u060c \u062e\u0648\u0628 \u060c \u06a9\u0644\u0648\u062f \u0628\u0627\u0647\u0648\u0634 \u0627\u0633\u062a \u0648 Deepseek nerdier \u0627\u0633\u062a.<\/p>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C\"><\/span>\n<p>  \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0647\u0645\u06cc\u0634\u0647 \u062f\u0627\u0645\u0646\u0647 \u06a9\u0644\u0648\u062f \u0628\u0648\u062f\u0647 \u0627\u0633\u062a. \u0622\u0646\u0647\u0627 \u062d\u062a\u06cc \u0628\u0647 \u0637\u0648\u0631 \u062e\u0627\u0635 \u0645\u062f\u0644 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0646\u0634\u0627\u0646\u0647 \u0647\u0627 \u0622\u0645\u0648\u0632\u0634 \u0645\u06cc \u062f\u0647\u0646\u062f \u062a\u0627 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0639\u0632\u06cc\u0632 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0628\u0633\u0627\u0632\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u0644\u0648\u062f \u062f\u0631-\u0646\u06cc\u0645\u06a9\u062a \u0627\u0633\u062a.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftk5t74nymur2unmma10z.png\" alt=\"\u06a9\u0644\u0648\u062f \u0631\u0648\u06cc \u0646\u06cc\u0645\u06a9\u062a SWE\" loading=\"lazy\" width=\"800\" height=\"450\" title=\"\"><\/p>\n<p>\u0627\u0645\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0647\u0631 \u062f\u0648 \u0631\u0627 \u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_SVG\"><\/span>\n<p>  1. \u0627\u06cc\u062c\u0627\u062f SVG<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0622\u0632\u0645\u0627\u06cc\u0634 \u062c\u0627\u0644\u0628 \u0627\u0633\u062a \u061b \u0645\u0646 \u0622\u0646 \u0631\u0627 \u0627\u0632 \u0633\u06cc\u0645\u0648\u0646 \u0648\u06cc\u0644\u06cc\u0633\u0648\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f\u0645.<\/p>\n<p>*<em>\u0633\u0631\u06cc\u0639: \u06cc\u06a9 SVG \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u0628 \u0634\u0627\u062e\u062f\u0627\u0631 \u062f\u0631 \u0627\u06cc\u0646 \u0632\u0645\u06cc\u0646\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<br \/>*<\/em><br \/>\u0648 \u0627\u06cc\u0646 \u067e\u0627\u0633\u062e \u06a9\u0644\u0648\u062f \u0628\u0648\u062f.<\/p>\n<p>Claude \u0627\u06cc\u062c\u0627\u062f SVG<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnxrt8u9ovflrawvf2xhh.png\" alt=\"SVG \u06a9\u0644\u0648\u062f\" loading=\"lazy\" width=\"800\" height=\"455\" title=\"\"><\/p>\n<p>\u0627\u0632 Deepseek R1.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb7ae5ch0z9z9phd66rwq.png\" alt=\"SVG Deepseek\" loading=\"lazy\" width=\"800\" height=\"479\" title=\"\"><\/p>\n<p>Deepseek \u0646\u0642\u0627\u0634\u06cc \u062a\u06a9 \u0634\u0627\u062e<br \/>\u0622\u0641\u0631\u06cc\u0646\u0634 \u06a9\u0644\u0648\u062f \u0628\u0627 \u067e\u06cc\u0634\u06cc\u0646\u0647 \u0648 \u062f\u06cc\u062f \u0628\u0647\u062a\u0631 \u06a9\u0645\u06cc \u0628\u0647\u062a\u0631 \u0627\u0633\u062a. Deepseek \u0645\u0646\u0627\u0633\u0628 \u0648 \u0645\u0639\u0642\u0648\u0644 \u0627\u0633\u062a \u060c \u0627\u0645\u0627 \u0648\u0627\u0642\u0639\u0627\u064b \u062f\u0631 \u0622\u0646\u062c\u0627 \u0646\u06cc\u0633\u062a.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"4_%D8%AA%D9%88%D9%BE_%D8%AF%D8%B1_%DB%8C%DA%A9_%D8%B4%DB%8C%D8%A1_%D9%87%D9%86%D8%AF%D8%B3%DB%8C\"><\/span>\n<p>  4. \u062a\u0648\u067e \u062f\u0631 \u06cc\u06a9 \u0634\u06cc\u0621 \u0647\u0646\u062f\u0633\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0633\u0631\u06cc\u0639: \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0627\u06cc\u062a\u0648\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc 10 \u062a\u0648\u067e \u062f\u0631 \u062f\u0627\u062e\u0644 \u06cc\u06a9 \u0634\u0634 \u0636\u0644\u0639\u06cc \u0633\u0631\u06cc\u0639 \u0628\u0631\u0627\u06cc \u0645\u0646 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f.<\/p>\n<p>\u06a9\u062f \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">import<\/span> <span class=\"n\">pygame<\/span>\n<span class=\"kn\">import<\/span> <span class=\"n\">math<\/span>\n<span class=\"kn\">import<\/span> <span class=\"n\">sys<\/span>\n\n<span class=\"c1\"># Initialize Pygame\n<\/span><span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"nf\">init<\/span><span class=\"p\">()<\/span>\n\n<span class=\"c1\"># Screen settings\n<\/span><span class=\"n\">SCREEN_WIDTH<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">800<\/span>\n<span class=\"n\">SCREEN_HEIGHT<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">600<\/span>\n<span class=\"n\">screen<\/span> <span class=\"o\">=<\/span> <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">display<\/span><span class=\"p\">.<\/span><span class=\"nf\">set_mode<\/span><span class=\"p\">((<\/span><span class=\"n\">SCREEN_WIDTH<\/span><span class=\"p\">,<\/span> <span class=\"n\">SCREEN_HEIGHT<\/span><span class=\"p\">))<\/span>\n<span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">display<\/span><span class=\"p\">.<\/span><span class=\"nf\">set_caption<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Spinning Hexagon with Balls<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Colors\n<\/span><span class=\"n\">BACKGROUND_COLOR<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">HEXAGON_COLOR<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"mi\">255<\/span><span class=\"p\">,<\/span> <span class=\"mi\">255<\/span><span class=\"p\">,<\/span> <span class=\"mi\">255<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">BALL_COLOR<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"mi\">255<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Center coordinates\n<\/span><span class=\"n\">CENTER<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"n\">SCREEN_WIDTH<\/span> <span class=\"o\">\/\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"n\">SCREEN_HEIGHT<\/span> <span class=\"o\">\/\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Hexagon parameters\n<\/span><span class=\"n\">HEX_RADIUS<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">200<\/span>  <span class=\"c1\"># Distance from center to vertices\n<\/span><span class=\"n\">ROTATION_SPEED<\/span> <span class=\"o\">=<\/span> <span class=\"mf\">0.15<\/span>  <span class=\"c1\"># Radians per frame\n<\/span>\n<span class=\"c1\"># Ball parameters\n<\/span><span class=\"n\">NUM_BALLS<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">10<\/span>\n<span class=\"n\">BALL_RADIUS<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">10<\/span>\n<span class=\"n\">BALL_ORBIT_RADIUS<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">150<\/span>  <span class=\"c1\"># Distance from center for ball positions\n<\/span>\n<span class=\"c1\"># Initialize rotation angle\n<\/span><span class=\"n\">angle<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span>\n\n<span class=\"c1\"># Main loop\n<\/span><span class=\"n\">clock<\/span> <span class=\"o\">=<\/span> <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">time<\/span><span class=\"p\">.<\/span><span class=\"nc\">Clock<\/span><span class=\"p\">()<\/span>\n<span class=\"n\">running<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">True<\/span>\n\n<span class=\"k\">while<\/span> <span class=\"n\">running<\/span><span class=\"p\">:<\/span>\n    <span class=\"k\">for<\/span> <span class=\"n\">event<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">event<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">():<\/span>\n        <span class=\"k\">if<\/span> <span class=\"n\">event<\/span><span class=\"p\">.<\/span><span class=\"nb\">type<\/span> <span class=\"o\">==<\/span> <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">QUIT<\/span><span class=\"p\">:<\/span>\n            <span class=\"n\">running<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">False<\/span>\n\n    <span class=\"c1\"># Clear screen\n<\/span>    <span class=\"n\">screen<\/span><span class=\"p\">.<\/span><span class=\"nf\">fill<\/span><span class=\"p\">(<\/span><span class=\"n\">BACKGROUND_COLOR<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># Update rotation angle\n<\/span>    <span class=\"n\">angle<\/span> <span class=\"o\">+=<\/span> <span class=\"n\">ROTATION_SPEED<\/span>\n\n    <span class=\"c1\"># Draw hexagon\n<\/span>    <span class=\"n\">hex_points<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n    <span class=\"k\">for<\/span> <span class=\"n\">i<\/span> <span class=\"ow\">in<\/span> <span class=\"nf\">range<\/span><span class=\"p\">(<\/span><span class=\"mi\">6<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">theta<\/span> <span class=\"o\">=<\/span> <span class=\"n\">angle<\/span> <span class=\"o\">+<\/span> <span class=\"n\">i<\/span> <span class=\"o\">*<\/span> <span class=\"n\">math<\/span><span class=\"p\">.<\/span><span class=\"n\">pi<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">3<\/span>  <span class=\"c1\"># 60 degrees between vertices\n<\/span>        <span class=\"n\">x<\/span> <span class=\"o\">=<\/span> <span class=\"n\">CENTER<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">+<\/span> <span class=\"n\">HEX_RADIUS<\/span> <span class=\"o\">*<\/span> <span class=\"n\">math<\/span><span class=\"p\">.<\/span><span class=\"nf\">cos<\/span><span class=\"p\">(<\/span><span class=\"n\">theta<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">y<\/span> <span class=\"o\">=<\/span> <span class=\"n\">CENTER<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span> <span class=\"o\">+<\/span> <span class=\"n\">HEX_RADIUS<\/span> <span class=\"o\">*<\/span> <span class=\"n\">math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sin<\/span><span class=\"p\">(<\/span><span class=\"n\">theta<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">hex_points<\/span><span class=\"p\">.<\/span><span class=\"nf\">append<\/span><span class=\"p\">((<\/span><span class=\"n\">x<\/span><span class=\"p\">,<\/span> <span class=\"n\">y<\/span><span class=\"p\">))<\/span>\n    <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">draw<\/span><span class=\"p\">.<\/span><span class=\"nf\">polygon<\/span><span class=\"p\">(<\/span><span class=\"n\">screen<\/span><span class=\"p\">,<\/span> <span class=\"n\">HEXAGON_COLOR<\/span><span class=\"p\">,<\/span> <span class=\"n\">hex_points<\/span><span class=\"p\">,<\/span> <span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># Draw balls\n<\/span>    <span class=\"k\">for<\/span> <span class=\"n\">i<\/span> <span class=\"ow\">in<\/span> <span class=\"nf\">range<\/span><span class=\"p\">(<\/span><span class=\"n\">NUM_BALLS<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">ball_angle<\/span> <span class=\"o\">=<\/span> <span class=\"n\">angle<\/span> <span class=\"o\">+<\/span> <span class=\"p\">(<\/span><span class=\"mi\">2<\/span> <span class=\"o\">*<\/span> <span class=\"n\">math<\/span><span class=\"p\">.<\/span><span class=\"n\">pi<\/span> <span class=\"o\">*<\/span> <span class=\"n\">i<\/span><span class=\"p\">)<\/span> <span class=\"o\">\/<\/span> <span class=\"n\">NUM_BALLS<\/span>\n        <span class=\"n\">x<\/span> <span class=\"o\">=<\/span> <span class=\"n\">CENTER<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">+<\/span> <span class=\"n\">BALL_ORBIT_RADIUS<\/span> <span class=\"o\">*<\/span> <span class=\"n\">math<\/span><span class=\"p\">.<\/span><span class=\"nf\">cos<\/span><span class=\"p\">(<\/span><span class=\"n\">ball_angle<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">y<\/span> <span class=\"o\">=<\/span> <span class=\"n\">CENTER<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span> <span class=\"o\">+<\/span> <span class=\"n\">BALL_ORBIT_RADIUS<\/span> <span class=\"o\">*<\/span> <span class=\"n\">math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sin<\/span><span class=\"p\">(<\/span><span class=\"n\">ball_angle<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">draw<\/span><span class=\"p\">.<\/span><span class=\"nf\">circle<\/span><span class=\"p\">(<\/span><span class=\"n\">screen<\/span><span class=\"p\">,<\/span> <span class=\"n\">BALL_COLOR<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nf\">int<\/span><span class=\"p\">(<\/span><span class=\"n\">x<\/span><span class=\"p\">),<\/span> <span class=\"nf\">int<\/span><span class=\"p\">(<\/span><span class=\"n\">y<\/span><span class=\"p\">)),<\/span> <span class=\"n\">BALL_RADIUS<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># Update display\n<\/span>    <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">display<\/span><span class=\"p\">.<\/span><span class=\"nf\">flip<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">clock<\/span><span class=\"p\">.<\/span><span class=\"nf\">tick<\/span><span class=\"p\">(<\/span><span class=\"mi\">60<\/span><span class=\"p\">)<\/span>\n\n<span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"nf\">quit<\/span><span class=\"p\">()<\/span>\n<span class=\"n\">sys<\/span><span class=\"p\">.<\/span><span class=\"nf\">exit<\/span><span class=\"p\">()<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062e\u0631\u0648\u062c\u06cc Deepseek R1<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">import<\/span> <span class=\"n\">pygame<\/span>\n<span class=\"kn\">import<\/span> <span class=\"n\">math<\/span>\n<span class=\"kn\">import<\/span> <span class=\"n\">sys<\/span>\n\n<span class=\"c1\"># Initialize Pygame\n<\/span><span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"nf\">init<\/span><span class=\"p\">()<\/span>\n\n<span class=\"c1\"># Screen settings\n<\/span><span class=\"n\">SCREEN_WIDTH<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">800<\/span>\n<span class=\"n\">SCREEN_HEIGHT<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">600<\/span>\n<span class=\"n\">screen<\/span> <span class=\"o\">=<\/span> <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">display<\/span><span class=\"p\">.<\/span><span class=\"nf\">set_mode<\/span><span class=\"p\">((<\/span><span class=\"n\">SCREEN_WIDTH<\/span><span class=\"p\">,<\/span> <span class=\"n\">SCREEN_HEIGHT<\/span><span class=\"p\">))<\/span>\n<span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">display<\/span><span class=\"p\">.<\/span><span class=\"nf\">set_caption<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Spinning Hexagon with Balls<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Colors\n<\/span><span class=\"n\">BACKGROUND_COLOR<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">HEXAGON_COLOR<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"mi\">255<\/span><span class=\"p\">,<\/span> <span class=\"mi\">255<\/span><span class=\"p\">,<\/span> <span class=\"mi\">255<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">BALL_COLOR<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"mi\">255<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Center coordinates\n<\/span><span class=\"n\">CENTER<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"n\">SCREEN_WIDTH<\/span> <span class=\"o\">\/\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"n\">SCREEN_HEIGHT<\/span> <span class=\"o\">\/\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Hexagon parameters\n<\/span><span class=\"n\">HEX_RADIUS<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">200<\/span>  <span class=\"c1\"># Distance from center to vertices\n<\/span><span class=\"n\">ROTATION_SPEED<\/span> <span class=\"o\">=<\/span> <span class=\"mf\">0.15<\/span>  <span class=\"c1\"># Radians per frame\n<\/span>\n<span class=\"c1\"># Ball parameters\n<\/span><span class=\"n\">NUM_BALLS<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">10<\/span>\n<span class=\"n\">BALL_RADIUS<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">10<\/span>\n<span class=\"n\">BALL_ORBIT_RADIUS<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">150<\/span>  <span class=\"c1\"># Distance from center for ball positions\n<\/span>\n<span class=\"c1\"># Initialize rotation angle\n<\/span><span class=\"n\">angle<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span>\n\n<span class=\"c1\"># Main loop\n<\/span><span class=\"n\">clock<\/span> <span class=\"o\">=<\/span> <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">time<\/span><span class=\"p\">.<\/span><span class=\"nc\">Clock<\/span><span class=\"p\">()<\/span>\n<span class=\"n\">running<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">True<\/span>\n\n<span class=\"k\">while<\/span> <span class=\"n\">running<\/span><span class=\"p\">:<\/span>\n    <span class=\"k\">for<\/span> <span class=\"n\">event<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">event<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">():<\/span>\n        <span class=\"k\">if<\/span> <span class=\"n\">event<\/span><span class=\"p\">.<\/span><span class=\"nb\">type<\/span> <span class=\"o\">==<\/span> <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">QUIT<\/span><span class=\"p\">:<\/span>\n            <span class=\"n\">running<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">False<\/span>\n\n    <span class=\"c1\"># Clear screen\n<\/span>    <span class=\"n\">screen<\/span><span class=\"p\">.<\/span><span class=\"nf\">fill<\/span><span class=\"p\">(<\/span><span class=\"n\">BACKGROUND_COLOR<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># Update rotation angle\n<\/span>    <span class=\"n\">angle<\/span> <span class=\"o\">+=<\/span> <span class=\"n\">ROTATION_SPEED<\/span>\n\n    <span class=\"c1\"># Draw hexagon\n<\/span>    <span class=\"n\">hex_points<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n    <span class=\"k\">for<\/span> <span class=\"n\">i<\/span> <span class=\"ow\">in<\/span> <span class=\"nf\">range<\/span><span class=\"p\">(<\/span><span class=\"mi\">6<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">theta<\/span> <span class=\"o\">=<\/span> <span class=\"n\">angle<\/span> <span class=\"o\">+<\/span> <span class=\"n\">i<\/span> <span class=\"o\">*<\/span> <span class=\"n\">math<\/span><span class=\"p\">.<\/span><span class=\"n\">pi<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">3<\/span>  <span class=\"c1\"># 60 degrees between vertices\n<\/span>        <span class=\"n\">x<\/span> <span class=\"o\">=<\/span> <span class=\"n\">CENTER<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">+<\/span> <span class=\"n\">HEX_RADIUS<\/span> <span class=\"o\">*<\/span> <span class=\"n\">math<\/span><span class=\"p\">.<\/span><span class=\"nf\">cos<\/span><span class=\"p\">(<\/span><span class=\"n\">theta<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">y<\/span> <span class=\"o\">=<\/span> <span class=\"n\">CENTER<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span> <span class=\"o\">+<\/span> <span class=\"n\">HEX_RADIUS<\/span> <span class=\"o\">*<\/span> <span class=\"n\">math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sin<\/span><span class=\"p\">(<\/span><span class=\"n\">theta<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">hex_points<\/span><span class=\"p\">.<\/span><span class=\"nf\">append<\/span><span class=\"p\">((<\/span><span class=\"n\">x<\/span><span class=\"p\">,<\/span> <span class=\"n\">y<\/span><span class=\"p\">))<\/span>\n    <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">draw<\/span><span class=\"p\">.<\/span><span class=\"nf\">polygon<\/span><span class=\"p\">(<\/span><span class=\"n\">screen<\/span><span class=\"p\">,<\/span> <span class=\"n\">HEXAGON_COLOR<\/span><span class=\"p\">,<\/span> <span class=\"n\">hex_points<\/span><span class=\"p\">,<\/span> <span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># Draw balls\n<\/span>    <span class=\"k\">for<\/span> <span class=\"n\">i<\/span> <span class=\"ow\">in<\/span> <span class=\"nf\">range<\/span><span class=\"p\">(<\/span><span class=\"n\">NUM_BALLS<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">ball_angle<\/span> <span class=\"o\">=<\/span> <span class=\"n\">angle<\/span> <span class=\"o\">+<\/span> <span class=\"p\">(<\/span><span class=\"mi\">2<\/span> <span class=\"o\">*<\/span> <span class=\"n\">math<\/span><span class=\"p\">.<\/span><span class=\"n\">pi<\/span> <span class=\"o\">*<\/span> <span class=\"n\">i<\/span><span class=\"p\">)<\/span> <span class=\"o\">\/<\/span> <span class=\"n\">NUM_BALLS<\/span>\n        <span class=\"n\">x<\/span> <span class=\"o\">=<\/span> <span class=\"n\">CENTER<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">+<\/span> <span class=\"n\">BALL_ORBIT_RADIUS<\/span> <span class=\"o\">*<\/span> <span class=\"n\">math<\/span><span class=\"p\">.<\/span><span class=\"nf\">cos<\/span><span class=\"p\">(<\/span><span class=\"n\">ball_angle<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">y<\/span> <span class=\"o\">=<\/span> <span class=\"n\">CENTER<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span> <span class=\"o\">+<\/span> <span class=\"n\">BALL_ORBIT_RADIUS<\/span> <span class=\"o\">*<\/span> <span class=\"n\">math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sin<\/span><span class=\"p\">(<\/span><span class=\"n\">ball_angle<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">draw<\/span><span class=\"p\">.<\/span><span class=\"nf\">circle<\/span><span class=\"p\">(<\/span><span class=\"n\">screen<\/span><span class=\"p\">,<\/span> <span class=\"n\">BALL_COLOR<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nf\">int<\/span><span class=\"p\">(<\/span><span class=\"n\">x<\/span><span class=\"p\">),<\/span> <span class=\"nf\">int<\/span><span class=\"p\">(<\/span><span class=\"n\">y<\/span><span class=\"p\">)),<\/span> <span class=\"n\">BALL_RADIUS<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># Update display\n<\/span>    <span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"n\">display<\/span><span class=\"p\">.<\/span><span class=\"nf\">flip<\/span><span class=\"p\">()<\/span>\n    <span class=\"n\">clock<\/span><span class=\"p\">.<\/span><span class=\"nf\">tick<\/span><span class=\"p\">(<\/span><span class=\"mi\">60<\/span><span class=\"p\">)<\/span>\n\n<span class=\"n\">pygame<\/span><span class=\"p\">.<\/span><span class=\"nf\">quit<\/span><span class=\"p\">()<\/span>\n<span class=\"n\">sys<\/span><span class=\"p\">.<\/span><span class=\"nf\">exit<\/span><span class=\"p\">()<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06a9\u0644\u0648\u062f \u0628\u0627\u0632\u062f\u0647 \u06a9\u0644\u06cc \u0628\u0647\u062a\u0631\u06cc \u062f\u0627\u0634\u062a. \u0634\u0634 \u0636\u0644\u0639\u06cc \u062f\u0631 \u062d\u0627\u0644 \u0686\u0631\u062e\u0634 \u0641\u06cc\u0632\u06cc\u06a9 \u062a\u0648\u067e \u0628\u0647\u062a\u0631 \u0627\u0633\u062a. Deepseek \u0642\u0633\u0645\u062a &#8220;\u0633\u0631\u06cc\u0639 \u062d\u0631\u06a9\u062a&#8221; \u0631\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f. \u062f\u0631 \u06a9\u0644 \u060c \u06a9\u0644\u0648\u062f \u0628\u0647\u062a\u0631 \u0628\u0648\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_%D8%A7%D9%86%DB%8C%D9%85%DB%8C%D8%B4%D9%86_%D8%B3%D9%87_%D8%A8%D8%B9%D8%AF%DB%8C_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_3JS\"><\/span>\n<p>  3. \u0627\u0646\u06cc\u0645\u06cc\u0634\u0646 \u0633\u0647 \u0628\u0639\u062f\u06cc \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 3JS<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0633\u0631\u06cc\u0639: \u0622\u06cc\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 3J \u06cc\u06a9 \u0627\u0646\u06cc\u0645\u06cc\u0634\u0646 \u0633\u0647 \u0628\u0639\u062f\u06cc \u0627\u0632 \u06cc\u06a9 \u0634\u0647\u0631 \u0645\u062a\u0631\u0648\u067e\u0648\u0644\u06cc\u062a\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u061f<\/p>\n<p>\u06a9\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight html\"><code><span class=\"cp\"\/>\n<span class=\"nt\"> <span class=\"na\">lang=<\/span><span class=\"s\">\"en\"<\/span><span class=\"nt\">&gt;<\/span>\n    <span class=\"nt\"\/>\n        <span class=\"nt\"><meta\/> <span class=\"na\">charset=<\/span><span class=\"s\">\"UTF-8\"<\/span> <span class=\"nt\">\/&gt;<\/span>\n        <span class=\"nt\"><meta\/> <span class=\"na\">name=<\/span><span class=\"s\">\"viewport\"<\/span> <span class=\"na\">content=<\/span><span class=\"s\">\"width=device-width, initial-scale=1.0\"<\/span> <span class=\"nt\">\/&gt;<\/span>\n        <span class=\"nt\"><title\/><\/span>Metropolitan City - Three.js<span class=\"nt\"\/>\n        <span class=\"nt\"\/>\n            <span class=\"nt\">body<\/span> <span class=\"p\">{<\/span>\n                <span class=\"nl\">margin<\/span><span class=\"p\">:<\/span> <span class=\"m\">0<\/span><span class=\"p\">;<\/span>\n                <span class=\"nl\">overflow<\/span><span class=\"p\">:<\/span> <span class=\"nb\">hidden<\/span><span class=\"p\">;<\/span>\n                <span class=\"nl\">background-color<\/span><span class=\"p\">:<\/span> <span class=\"m\">#000<\/span><span class=\"p\">;<\/span>\n            <span class=\"p\">}<\/span>\n            <span class=\"nt\">canvas<\/span> <span class=\"p\">{<\/span>\n                <span class=\"nl\">display<\/span><span class=\"p\">:<\/span> <span class=\"nb\">block<\/span><span class=\"p\">;<\/span>\n            <span class=\"p\">}<\/span>\n            <span class=\"nc\">.info<\/span> <span class=\"p\">{<\/span>\n                <span class=\"nl\">position<\/span><span class=\"p\">:<\/span> <span class=\"nb\">absolute<\/span><span class=\"p\">;<\/span>\n                <span class=\"nl\">top<\/span><span class=\"p\">:<\/span> <span class=\"m\">10px<\/span><span class=\"p\">;<\/span>\n                <span class=\"nl\">left<\/span><span class=\"p\">:<\/span> <span class=\"m\">10px<\/span><span class=\"p\">;<\/span>\n                <span class=\"nl\">color<\/span><span class=\"p\">:<\/span> <span class=\"no\">white<\/span><span class=\"p\">;<\/span>\n                <span class=\"nl\">font-family<\/span><span class=\"p\">:<\/span> <span class=\"n\">Arial<\/span><span class=\"p\">,<\/span> <span class=\"nb\">sans-serif<\/span><span class=\"p\">;<\/span>\n                <span class=\"nl\">background-color<\/span><span class=\"p\">:<\/span> <span class=\"n\">rgba<\/span><span class=\"p\">(<\/span><span class=\"m\">0<\/span><span class=\"p\">,<\/span> <span class=\"m\">0<\/span><span class=\"p\">,<\/span> <span class=\"m\">0<\/span><span class=\"p\">,<\/span> <span class=\"m\">0.5<\/span><span class=\"p\">);<\/span>\n                <span class=\"nl\">padding<\/span><span class=\"p\">:<\/span> <span class=\"m\">10px<\/span><span class=\"p\">;<\/span>\n                <span class=\"nl\">border-radius<\/span><span class=\"p\">:<\/span> <span class=\"m\">5px<\/span><span class=\"p\">;<\/span>\n            <span class=\"p\">}<\/span>\n        <span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n        <span class=\"nt\"><p> <span class=\"na\">class=<\/span><span class=\"s\">\"info\"<\/span><span class=\"nt\">&gt;<\/span>\n            Click and drag to orbit. Scroll to zoom. Use arrow keys to move\n            camera.\n        <span class=\"nt\"\/><\/p><\/span>\n        <span class=\"nt\"><script><![CDATA[<span class=\"na\">src=]]><\/script><\/span><span class=\"s\">\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/three.js\/r128\/three.min.js\"<\/span><span class=\"nt\">&gt;<\/span>\n        <span class=\"nt\"><script\/><\/span>\n            <span class=\"c1\">\/\/ Main scene variables<\/span>\n            <span class=\"kd\">let<\/span> <span class=\"nx\">scene<\/span><span class=\"p\">,<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">,<\/span> <span class=\"nx\">renderer<\/span><span class=\"p\">;<\/span>\n            <span class=\"kd\">let<\/span> <span class=\"nx\">cityGroup<\/span><span class=\"p\">,<\/span> <span class=\"nx\">vehiclesGroup<\/span><span class=\"p\">;<\/span>\n            <span class=\"kd\">let<\/span> <span class=\"nx\">clock<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Clock<\/span><span class=\"p\">();<\/span>\n            <span class=\"kd\">let<\/span> <span class=\"nx\">cameraRotationSpeed<\/span> <span class=\"o\">=<\/span> <span class=\"mf\">0.003<\/span><span class=\"p\">;<\/span>\n            <span class=\"kd\">let<\/span> <span class=\"nx\">autoRotate<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n\n            <span class=\"c1\">\/\/ Setup<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">init<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Create scene<\/span>\n                <span class=\"nx\">scene<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Scene<\/span><span class=\"p\">();<\/span>\n                <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nx\">background<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Color<\/span><span class=\"p\">(<\/span><span class=\"mh\">0x050518<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ Night sky color<\/span>\n\n                <span class=\"c1\">\/\/ Create camera<\/span>\n                <span class=\"nx\">camera<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">PerspectiveCamera<\/span><span class=\"p\">(<\/span>\n                    <span class=\"mi\">60<\/span><span class=\"p\">,<\/span>\n                    <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerWidth<\/span> <span class=\"o\">\/<\/span> <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerHeight<\/span><span class=\"p\">,<\/span>\n                    <span class=\"mf\">0.1<\/span><span class=\"p\">,<\/span>\n                    <span class=\"mi\">2000<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">);<\/span>\n                <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"mi\">150<\/span><span class=\"p\">,<\/span> <span class=\"mi\">150<\/span><span class=\"p\">,<\/span> <span class=\"mi\">150<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nf\">lookAt<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Create renderer<\/span>\n                <span class=\"nx\">renderer<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">WebGLRenderer<\/span><span class=\"p\">({<\/span> <span class=\"na\">antialias<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span> <span class=\"p\">});<\/span>\n                <span class=\"nx\">renderer<\/span><span class=\"p\">.<\/span><span class=\"nf\">setSize<\/span><span class=\"p\">(<\/span><span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerWidth<\/span><span class=\"p\">,<\/span> <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerHeight<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">renderer<\/span><span class=\"p\">.<\/span><span class=\"nx\">shadowMap<\/span><span class=\"p\">.<\/span><span class=\"nx\">enabled<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">renderer<\/span><span class=\"p\">.<\/span><span class=\"nx\">shadowMap<\/span><span class=\"p\">.<\/span><span class=\"nx\">type<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nx\">PCFSoftShadowMap<\/span><span class=\"p\">;<\/span>\n                <span class=\"nb\">document<\/span><span class=\"p\">.<\/span><span class=\"nx\">body<\/span><span class=\"p\">.<\/span><span class=\"nf\">appendChild<\/span><span class=\"p\">(<\/span><span class=\"nx\">renderer<\/span><span class=\"p\">.<\/span><span class=\"nx\">domElement<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Create groups<\/span>\n                <span class=\"nx\">cityGroup<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Group<\/span><span class=\"p\">();<\/span>\n                <span class=\"nx\">vehiclesGroup<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Group<\/span><span class=\"p\">();<\/span>\n                <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">cityGroup<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">vehiclesGroup<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Add lighting<\/span>\n                <span class=\"nf\">addLights<\/span><span class=\"p\">();<\/span>\n\n                <span class=\"c1\">\/\/ Create fog for depth<\/span>\n                <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nx\">fog<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">FogExp2<\/span><span class=\"p\">(<\/span><span class=\"mh\">0x050518<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.002<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Create city elements<\/span>\n                <span class=\"nf\">createGround<\/span><span class=\"p\">();<\/span>\n                <span class=\"nf\">createBuildings<\/span><span class=\"p\">();<\/span>\n                <span class=\"nf\">createStreets<\/span><span class=\"p\">();<\/span>\n                <span class=\"nf\">createVehicles<\/span><span class=\"p\">();<\/span>\n                <span class=\"nf\">createSkyline<\/span><span class=\"p\">();<\/span>\n\n                <span class=\"c1\">\/\/ Add event listeners<\/span>\n                <span class=\"nf\">setupControls<\/span><span class=\"p\">();<\/span>\n\n                <span class=\"c1\">\/\/ Start animation loop<\/span>\n                <span class=\"nf\">animate<\/span><span class=\"p\">();<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Lighting setup<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">addLights<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Ambient light<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">ambientLight<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">AmbientLight<\/span><span class=\"p\">(<\/span><span class=\"mh\">0x404040<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">ambientLight<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Directional light (moonlight)<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">moonLight<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">DirectionalLight<\/span><span class=\"p\">(<\/span><span class=\"mh\">0x8888ff<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">moonLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"mi\">100<\/span><span class=\"p\">,<\/span> <span class=\"mi\">200<\/span><span class=\"p\">,<\/span> <span class=\"mi\">100<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">moonLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">castShadow<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">moonLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">shadow<\/span><span class=\"p\">.<\/span><span class=\"nx\">mapSize<\/span><span class=\"p\">.<\/span><span class=\"nx\">width<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">1024<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">moonLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">shadow<\/span><span class=\"p\">.<\/span><span class=\"nx\">mapSize<\/span><span class=\"p\">.<\/span><span class=\"nx\">height<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">1024<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">moonLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">shadow<\/span><span class=\"p\">.<\/span><span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">near<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">moonLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">shadow<\/span><span class=\"p\">.<\/span><span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">far<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">500<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">moonLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">shadow<\/span><span class=\"p\">.<\/span><span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">left<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"mi\">100<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">moonLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">shadow<\/span><span class=\"p\">.<\/span><span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">right<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">100<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">moonLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">shadow<\/span><span class=\"p\">.<\/span><span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">top<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">100<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">moonLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">shadow<\/span><span class=\"p\">.<\/span><span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">bottom<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"mi\">100<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">moonLight<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Add point lights of various colors to simulate city lights<\/span>\n                <span class=\"nf\">addCityLights<\/span><span class=\"p\">();<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Add city lights<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">addCityLights<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">colors<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n                    <span class=\"mh\">0xff0000<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0x00ff00<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0x0000ff<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0xffff00<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0xff00ff<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0x00ffff<\/span><span class=\"p\">,<\/span>\n                    <span class=\"mh\">0xffffff<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">];<\/span>\n\n                <span class=\"c1\">\/\/ Street lights<\/span>\n                <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">30<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">-<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">200<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">-<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">200<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">streetLight<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">PointLight<\/span><span class=\"p\">(<\/span><span class=\"mh\">0xffffaa<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">,<\/span> <span class=\"mi\">30<\/span><span class=\"p\">);<\/span>\n                    <span class=\"nx\">streetLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"mi\">3<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                    <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">streetLight<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">}<\/span>\n\n                <span class=\"c1\">\/\/ Building lights<\/span>\n                <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">50<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">-<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">200<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">5<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">40<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">-<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">200<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">color<\/span> <span class=\"o\">=<\/span>\n                        <span class=\"nx\">colors<\/span><span class=\"p\">[<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">floor<\/span><span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">colors<\/span><span class=\"p\">.<\/span><span class=\"nx\">length<\/span><span class=\"p\">)];<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">intensity<\/span> <span class=\"o\">=<\/span> <span class=\"mf\">0.2<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">distance<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">10<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">20<\/span><span class=\"p\">;<\/span>\n\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">buildingLight<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">PointLight<\/span><span class=\"p\">(<\/span>\n                        <span class=\"nx\">color<\/span><span class=\"p\">,<\/span>\n                        <span class=\"nx\">intensity<\/span><span class=\"p\">,<\/span>\n                        <span class=\"nx\">distance<\/span><span class=\"p\">,<\/span>\n                    <span class=\"p\">);<\/span>\n                    <span class=\"nx\">buildingLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">y<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                    <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">buildingLight<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">}<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create ground plane<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createGround<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">groundGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">PlaneGeometry<\/span><span class=\"p\">(<\/span><span class=\"mi\">400<\/span><span class=\"p\">,<\/span> <span class=\"mi\">400<\/span><span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">groundMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshStandardMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"mh\">0x333333<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">roughness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.8<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">metalness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.2<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">ground<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span><span class=\"nx\">groundGeometry<\/span><span class=\"p\">,<\/span> <span class=\"nx\">groundMaterial<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">ground<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">ground<\/span><span class=\"p\">.<\/span><span class=\"nx\">receiveShadow<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">cityGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">ground<\/span><span class=\"p\">);<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create buildings<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createBuildings<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Downtown area<\/span>\n                <span class=\"nf\">createDowntown<\/span><span class=\"p\">();<\/span>\n\n                <span class=\"c1\">\/\/ Surrounding buildings<\/span>\n                <span class=\"nf\">createSurroundingBuildings<\/span><span class=\"p\">();<\/span>\n\n                <span class=\"c1\">\/\/ Landmark building<\/span>\n                <span class=\"nf\">createLandmarkBuilding<\/span><span class=\"p\">();<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create downtown area with skyscrapers<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createDowntown<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Create a grid of tall buildings<\/span>\n                <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"mi\">80<\/span><span class=\"p\">;<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"mi\">80<\/span><span class=\"p\">;<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">+=<\/span> <span class=\"mi\">30<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"mi\">80<\/span><span class=\"p\">;<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"mi\">80<\/span><span class=\"p\">;<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">+=<\/span> <span class=\"mi\">30<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"c1\">\/\/ Skip some positions to create streets<\/span>\n                        <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">abs<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">)<\/span> <span class=\"o\">%<\/span> <span class=\"mi\">60<\/span> <span class=\"o\">===<\/span> <span class=\"mi\">0<\/span> <span class=\"o\">||<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">abs<\/span><span class=\"p\">(<\/span><span class=\"nx\">z<\/span><span class=\"p\">)<\/span> <span class=\"o\">%<\/span> <span class=\"mi\">60<\/span> <span class=\"o\">===<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n                            <span class=\"k\">continue<\/span><span class=\"p\">;<\/span>\n\n                        <span class=\"c1\">\/\/ Randomize building parameters<\/span>\n                        <span class=\"kd\">const<\/span> <span class=\"nx\">width<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">10<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">15<\/span><span class=\"p\">;<\/span>\n                        <span class=\"kd\">const<\/span> <span class=\"nx\">height<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">20<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">80<\/span><span class=\"p\">;<\/span>\n                        <span class=\"kd\">const<\/span> <span class=\"nx\">depth<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">10<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">15<\/span><span class=\"p\">;<\/span>\n\n                        <span class=\"c1\">\/\/ Add some variation to positions<\/span>\n                        <span class=\"kd\">const<\/span> <span class=\"nx\">xPos<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">+<\/span> <span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">-<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n                        <span class=\"kd\">const<\/span> <span class=\"nx\">zPos<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">+<\/span> <span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">-<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n\n                        <span class=\"nf\">createBuilding<\/span><span class=\"p\">(<\/span>\n                            <span class=\"nx\">xPos<\/span><span class=\"p\">,<\/span>\n                            <span class=\"nx\">height<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span>\n                            <span class=\"nx\">zPos<\/span><span class=\"p\">,<\/span>\n                            <span class=\"nx\">width<\/span><span class=\"p\">,<\/span>\n                            <span class=\"nx\">height<\/span><span class=\"p\">,<\/span>\n                            <span class=\"nx\">depth<\/span><span class=\"p\">,<\/span>\n                        <span class=\"p\">);<\/span>\n                    <span class=\"p\">}<\/span>\n                <span class=\"p\">}<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create surrounding lower buildings<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createSurroundingBuildings<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Create outer areas with smaller buildings<\/span>\n                <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">80<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">angle<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">2<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">radius<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">100<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">80<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">cos<\/span><span class=\"p\">(<\/span><span class=\"nx\">angle<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">radius<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sin<\/span><span class=\"p\">(<\/span><span class=\"nx\">angle<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">radius<\/span><span class=\"p\">;<\/span>\n\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">width<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">5<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">15<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">height<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">5<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">25<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">depth<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">5<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">15<\/span><span class=\"p\">;<\/span>\n\n                    <span class=\"nf\">createBuilding<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">height<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">,<\/span> <span class=\"nx\">width<\/span><span class=\"p\">,<\/span> <span class=\"nx\">height<\/span><span class=\"p\">,<\/span> <span class=\"nx\">depth<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">}<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create a landmark tall building at the center<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createLandmarkBuilding<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Base<\/span>\n                <span class=\"nf\">createBuilding<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">50<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">25<\/span><span class=\"p\">,<\/span> <span class=\"mi\">100<\/span><span class=\"p\">,<\/span> <span class=\"mi\">25<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0x888899<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Top section<\/span>\n                <span class=\"nf\">createBuilding<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">105<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">15<\/span><span class=\"p\">,<\/span> <span class=\"mi\">30<\/span><span class=\"p\">,<\/span> <span class=\"mi\">15<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0x8888aa<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Spire<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">spireGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">ConeGeometry<\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span> <span class=\"mi\">20<\/span><span class=\"p\">,<\/span> <span class=\"mi\">8<\/span><span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">spireMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshStandardMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"mh\">0xaaaacc<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">metalness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.8<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">roughness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.2<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">spire<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span><span class=\"nx\">spireGeometry<\/span><span class=\"p\">,<\/span> <span class=\"nx\">spireMaterial<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">spire<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">130<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">spire<\/span><span class=\"p\">.<\/span><span class=\"nx\">castShadow<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">cityGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">spire<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Beacon light<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">beaconLight<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">PointLight<\/span><span class=\"p\">(<\/span><span class=\"mh\">0xff0000<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">50<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">beaconLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">140<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">beaconLight<\/span><span class=\"p\">);<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Helper function to create a building<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createBuilding<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">y<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">,<\/span> <span class=\"nx\">width<\/span><span class=\"p\">,<\/span> <span class=\"nx\">height<\/span><span class=\"p\">,<\/span> <span class=\"nx\">depth<\/span><span class=\"p\">,<\/span> <span class=\"nx\">color<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Create building geometry<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">buildingGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">BoxGeometry<\/span><span class=\"p\">(<\/span>\n                    <span class=\"nx\">width<\/span><span class=\"p\">,<\/span>\n                    <span class=\"nx\">height<\/span><span class=\"p\">,<\/span>\n                    <span class=\"nx\">depth<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Create building material with random color if not provided<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">buildingColor<\/span> <span class=\"o\">=<\/span>\n                    <span class=\"nx\">color<\/span> <span class=\"o\">||<\/span>\n                    <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Color<\/span><span class=\"p\">(<\/span>\n                        <span class=\"mf\">0.3<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mf\">0.1<\/span><span class=\"p\">,<\/span>\n                        <span class=\"mf\">0.3<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mf\">0.1<\/span><span class=\"p\">,<\/span>\n                        <span class=\"mf\">0.4<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mf\">0.2<\/span><span class=\"p\">,<\/span>\n                    <span class=\"p\">);<\/span>\n\n                <span class=\"kd\">const<\/span> <span class=\"nx\">buildingMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshStandardMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"nx\">buildingColor<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">roughness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.7<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">metalness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.2<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"c1\">\/\/ Create building mesh<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">building<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span>\n                    <span class=\"nx\">buildingGeometry<\/span><span class=\"p\">,<\/span>\n                    <span class=\"nx\">buildingMaterial<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">);<\/span>\n                <span class=\"nx\">building<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">y<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">building<\/span><span class=\"p\">.<\/span><span class=\"nx\">castShadow<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">building<\/span><span class=\"p\">.<\/span><span class=\"nx\">receiveShadow<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">cityGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">building<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Add window lights randomly to some buildings<\/span>\n                <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mf\">0.5<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">height<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">10<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"nf\">addBuildingWindows<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">y<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">,<\/span> <span class=\"nx\">width<\/span><span class=\"p\">,<\/span> <span class=\"nx\">height<\/span><span class=\"p\">,<\/span> <span class=\"nx\">depth<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">}<\/span>\n\n                <span class=\"k\">return<\/span> <span class=\"nx\">building<\/span><span class=\"p\">;<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Add window lights to buildings<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">addBuildingWindows<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">y<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">,<\/span> <span class=\"nx\">width<\/span><span class=\"p\">,<\/span> <span class=\"nx\">height<\/span><span class=\"p\">,<\/span> <span class=\"nx\">depth<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">windowGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">PlaneGeometry<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">windowMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshBasicMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"mh\">0xffffcc<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">opacity<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.9<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">transparent<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"c1\">\/\/ Calculate number of windows based on building size<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">windowsX<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">floor<\/span><span class=\"p\">(<\/span><span class=\"nx\">width<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">3<\/span><span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">windowsY<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">floor<\/span><span class=\"p\">(<\/span><span class=\"nx\">height<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">4<\/span><span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">windowsZ<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">floor<\/span><span class=\"p\">(<\/span><span class=\"nx\">depth<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">3<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Create windows on each side of the building<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">sides<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n                    <span class=\"p\">{<\/span> <span class=\"na\">dir<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">x<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"na\">sign<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"na\">z<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span> <span class=\"p\">},<\/span>\n                    <span class=\"p\">{<\/span> <span class=\"na\">dir<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">x<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"na\">sign<\/span><span class=\"p\">:<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"na\">z<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span> <span class=\"p\">},<\/span>\n                    <span class=\"p\">{<\/span> <span class=\"na\">dir<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">z<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"na\">sign<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span> <span class=\"p\">},<\/span>\n                    <span class=\"p\">{<\/span> <span class=\"na\">dir<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">z<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"na\">sign<\/span><span class=\"p\">:<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span> <span class=\"p\">},<\/span>\n                <span class=\"p\">];<\/span>\n\n                <span class=\"nx\">sides<\/span><span class=\"p\">.<\/span><span class=\"nf\">forEach<\/span><span class=\"p\">((<\/span><span class=\"nx\">side<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">isX<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">side<\/span><span class=\"p\">.<\/span><span class=\"nx\">dir<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">x<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">windowsHorizontal<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">isX<\/span> <span class=\"p\">?<\/span> <span class=\"nx\">windowsZ<\/span> <span class=\"p\">:<\/span> <span class=\"nx\">windowsX<\/span><span class=\"p\">;<\/span>\n\n                    <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">wx<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span> <span class=\"nx\">wx<\/span> <span class=\"o\">&lt;<\/span> <span class=\"nx\">windowsHorizontal<\/span><span class=\"p\">;<\/span> <span class=\"nx\">wx<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">wy<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span> <span class=\"nx\">wy<\/span> <span class=\"o\">&lt;<\/span> <span class=\"nx\">windowsY<\/span><span class=\"p\">;<\/span> <span class=\"nx\">wy<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                            <span class=\"c1\">\/\/ Skip some windows to create variation<\/span>\n                            <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mf\">0.7<\/span><span class=\"p\">)<\/span> <span class=\"k\">continue<\/span><span class=\"p\">;<\/span>\n\n                            <span class=\"kd\">const<\/span> <span class=\"nb\">window<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span>\n                                <span class=\"nx\">windowGeometry<\/span><span class=\"p\">,<\/span>\n                                <span class=\"nx\">windowMaterial<\/span><span class=\"p\">.<\/span><span class=\"nf\">clone<\/span><span class=\"p\">(),<\/span>\n                            <span class=\"p\">);<\/span>\n\n                            <span class=\"c1\">\/\/ Randomize window color slightly<\/span>\n                            <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mf\">0.8<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                                <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">material<\/span><span class=\"p\">.<\/span><span class=\"nx\">color<\/span><span class=\"p\">.<\/span><span class=\"nf\">setHex<\/span><span class=\"p\">(<\/span>\n                                    <span class=\"p\">[<\/span><span class=\"mh\">0xffffcc<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0xffcccc<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0xccffcc<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0xccccff<\/span><span class=\"p\">][<\/span>\n                                        <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">floor<\/span><span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">4<\/span><span class=\"p\">)<\/span>\n                                    <span class=\"p\">],<\/span>\n                                <span class=\"p\">);<\/span>\n                            <span class=\"p\">}<\/span>\n\n                            <span class=\"c1\">\/\/ Position window on building face<\/span>\n                            <span class=\"kd\">let<\/span> <span class=\"nx\">wx_pos<\/span><span class=\"p\">,<\/span> <span class=\"nx\">wy_pos<\/span><span class=\"p\">,<\/span> <span class=\"nx\">wz_pos<\/span><span class=\"p\">;<\/span>\n\n                            <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">isX<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                                <span class=\"nx\">wx_pos<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">side<\/span><span class=\"p\">.<\/span><span class=\"nx\">sign<\/span> <span class=\"o\">*<\/span> <span class=\"p\">(<\/span><span class=\"nx\">width<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span> <span class=\"o\">+<\/span> <span class=\"mf\">0.01<\/span><span class=\"p\">);<\/span>\n                                <span class=\"nx\">wy_pos<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">y<\/span> <span class=\"o\">-<\/span> <span class=\"nx\">height<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">2<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">wy<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">4<\/span><span class=\"p\">;<\/span>\n                                <span class=\"nx\">wz_pos<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">-<\/span> <span class=\"nx\">depth<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span> <span class=\"o\">+<\/span> <span class=\"mf\">1.5<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">wx<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">3<\/span><span class=\"p\">;<\/span>\n                                <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">;<\/span>\n                            <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n                                <span class=\"nx\">wx_pos<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">-<\/span> <span class=\"nx\">width<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span> <span class=\"o\">+<\/span> <span class=\"mf\">1.5<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">wx<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">3<\/span><span class=\"p\">;<\/span>\n                                <span class=\"nx\">wy_pos<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">y<\/span> <span class=\"o\">-<\/span> <span class=\"nx\">height<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">2<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">wy<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">4<\/span><span class=\"p\">;<\/span>\n                                <span class=\"nx\">wz_pos<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">side<\/span><span class=\"p\">.<\/span><span class=\"nx\">sign<\/span> <span class=\"o\">*<\/span> <span class=\"p\">(<\/span><span class=\"nx\">depth<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span> <span class=\"o\">+<\/span> <span class=\"mf\">0.01<\/span><span class=\"p\">);<\/span>\n                            <span class=\"p\">}<\/span>\n\n                            <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">wx_pos<\/span><span class=\"p\">,<\/span> <span class=\"nx\">wy_pos<\/span><span class=\"p\">,<\/span> <span class=\"nx\">wz_pos<\/span><span class=\"p\">);<\/span>\n                            <span class=\"nx\">cityGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nb\">window<\/span><span class=\"p\">);<\/span>\n                        <span class=\"p\">}<\/span>\n                    <span class=\"p\">}<\/span>\n                <span class=\"p\">});<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create streets<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createStreets<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Main streets<\/span>\n                <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"mi\">2<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"mi\">2<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"c1\">\/\/ X-axis streets<\/span>\n                    <span class=\"nf\">createStreet<\/span><span class=\"p\">(<\/span><span class=\"nx\">i<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">60<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">400<\/span><span class=\"p\">,<\/span> <span class=\"mi\">20<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n\n                    <span class=\"c1\">\/\/ Z-axis streets<\/span>\n                    <span class=\"nf\">createStreet<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">60<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">20<\/span><span class=\"p\">,<\/span> <span class=\"mi\">400<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">}<\/span>\n\n                <span class=\"c1\">\/\/ Street lamps<\/span>\n                <span class=\"nf\">createStreetLamps<\/span><span class=\"p\">();<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create a street<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createStreet<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">y<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">,<\/span> <span class=\"nx\">width<\/span><span class=\"p\">,<\/span> <span class=\"nx\">depth<\/span><span class=\"p\">,<\/span> <span class=\"nx\">height<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">streetGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">BoxGeometry<\/span><span class=\"p\">(<\/span>\n                    <span class=\"nx\">width<\/span><span class=\"p\">,<\/span>\n                    <span class=\"mf\">0.1<\/span><span class=\"p\">,<\/span>\n                    <span class=\"nx\">height<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">streetMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshStandardMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"mh\">0x333333<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">roughness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.9<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">metalness<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"kd\">const<\/span> <span class=\"nx\">street<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span><span class=\"nx\">streetGeometry<\/span><span class=\"p\">,<\/span> <span class=\"nx\">streetMaterial<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">street<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.05<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">street<\/span><span class=\"p\">.<\/span><span class=\"nx\">receiveShadow<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">cityGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">street<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Add road markings<\/span>\n                <span class=\"nf\">addRoadMarkings<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">,<\/span> <span class=\"nx\">width<\/span><span class=\"p\">,<\/span> <span class=\"nx\">height<\/span><span class=\"p\">);<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Add road markings<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">addRoadMarkings<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">,<\/span> <span class=\"nx\">width<\/span><span class=\"p\">,<\/span> <span class=\"nx\">height<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Determine if this is an X or Z oriented street<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">isXStreet<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">height<\/span> <span class=\"o\">&gt;<\/span> <span class=\"nx\">width<\/span><span class=\"p\">;<\/span>\n\n                <span class=\"c1\">\/\/ Set dimensions based on orientation<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">markingLength<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">isXStreet<\/span> <span class=\"p\">?<\/span> <span class=\"mi\">5<\/span> <span class=\"p\">:<\/span> <span class=\"nx\">width<\/span> <span class=\"o\">*<\/span> <span class=\"mf\">0.8<\/span><span class=\"p\">;<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">markingWidth<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n\n                <span class=\"c1\">\/\/ Create geometry based on orientation<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">markingGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">PlaneGeometry<\/span><span class=\"p\">(<\/span>\n                    <span class=\"nx\">isXStreet<\/span> <span class=\"p\">?<\/span> <span class=\"nx\">markingWidth<\/span> <span class=\"p\">:<\/span> <span class=\"nx\">markingLength<\/span><span class=\"p\">,<\/span>\n                    <span class=\"nx\">isXStreet<\/span> <span class=\"p\">?<\/span> <span class=\"nx\">markingLength<\/span> <span class=\"p\">:<\/span> <span class=\"nx\">markingWidth<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">);<\/span>\n\n                <span class=\"kd\">const<\/span> <span class=\"nx\">markingMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshBasicMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"mh\">0xffffff<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"c1\">\/\/ For X-oriented streets (running along Z axis)<\/span>\n                <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">isXStreet<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">numMarkings<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">floor<\/span><span class=\"p\">(<\/span><span class=\"nx\">height<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">15<\/span><span class=\"p\">);<\/span> <span class=\"c1\">\/\/ One marking every 15 units<\/span>\n                    <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"nx\">numMarkings<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"kd\">const<\/span> <span class=\"nx\">marking<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span>\n                            <span class=\"nx\">markingGeometry<\/span><span class=\"p\">,<\/span>\n                            <span class=\"nx\">markingMaterial<\/span><span class=\"p\">,<\/span>\n                        <span class=\"p\">);<\/span>\n                        <span class=\"nx\">marking<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ Rotate to lay flat<\/span>\n                        <span class=\"kd\">const<\/span> <span class=\"nx\">zPos<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">-<\/span> <span class=\"nx\">height<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">15<\/span> <span class=\"o\">+<\/span> <span class=\"mf\">7.5<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ Distribute evenly<\/span>\n                        <span class=\"nx\">marking<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.1<\/span><span class=\"p\">,<\/span> <span class=\"nx\">zPos<\/span><span class=\"p\">);<\/span>\n                        <span class=\"nx\">cityGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">marking<\/span><span class=\"p\">);<\/span>\n                    <span class=\"p\">}<\/span>\n                <span class=\"p\">}<\/span>\n                <span class=\"c1\">\/\/ For Z-oriented streets (running along X axis)<\/span>\n                <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">numMarkings<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">floor<\/span><span class=\"p\">(<\/span><span class=\"nx\">width<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">15<\/span><span class=\"p\">);<\/span>\n                    <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"nx\">numMarkings<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"kd\">const<\/span> <span class=\"nx\">marking<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span>\n                            <span class=\"nx\">markingGeometry<\/span><span class=\"p\">,<\/span>\n                            <span class=\"nx\">markingMaterial<\/span><span class=\"p\">,<\/span>\n                        <span class=\"p\">);<\/span>\n                        <span class=\"nx\">marking<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ Rotate to lay flat<\/span>\n                        <span class=\"kd\">const<\/span> <span class=\"nx\">xPos<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">-<\/span> <span class=\"nx\">width<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">15<\/span> <span class=\"o\">+<\/span> <span class=\"mf\">7.5<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ Distribute evenly<\/span>\n                        <span class=\"nx\">marking<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">xPos<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.1<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                        <span class=\"nx\">cityGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">marking<\/span><span class=\"p\">);<\/span>\n                    <span class=\"p\">}<\/span>\n                <span class=\"p\">}<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create street lamps<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createStreetLamps<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Place street lamps along the streets<\/span>\n                <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"mi\">2<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"mi\">2<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">j<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"mi\">6<\/span><span class=\"p\">;<\/span> <span class=\"nx\">j<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"mi\">6<\/span><span class=\"p\">;<\/span> <span class=\"nx\">j<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">j<\/span> <span class=\"o\">%<\/span> <span class=\"mi\">2<\/span> <span class=\"o\">===<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                            <span class=\"c1\">\/\/ X-axis streets<\/span>\n                            <span class=\"nf\">createStreetLamp<\/span><span class=\"p\">(<\/span><span class=\"nx\">j<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">30<\/span><span class=\"p\">,<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">60<\/span><span class=\"p\">);<\/span>\n\n                            <span class=\"c1\">\/\/ Z-axis streets<\/span>\n                            <span class=\"nf\">createStreetLamp<\/span><span class=\"p\">(<\/span><span class=\"nx\">i<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">60<\/span><span class=\"p\">,<\/span> <span class=\"nx\">j<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">30<\/span><span class=\"p\">);<\/span>\n                        <span class=\"p\">}<\/span>\n                    <span class=\"p\">}<\/span>\n                <span class=\"p\">}<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create a street lamp<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createStreetLamp<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Pole<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">poleGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">CylinderGeometry<\/span><span class=\"p\">(<\/span><span class=\"mf\">0.3<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.3<\/span><span class=\"p\">,<\/span> <span class=\"mi\">8<\/span><span class=\"p\">,<\/span> <span class=\"mi\">8<\/span><span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">poleMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshStandardMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"mh\">0x888888<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">roughness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.7<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">metalness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.3<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"kd\">const<\/span> <span class=\"nx\">pole<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span><span class=\"nx\">poleGeometry<\/span><span class=\"p\">,<\/span> <span class=\"nx\">poleMaterial<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">pole<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"mi\">4<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">pole<\/span><span class=\"p\">.<\/span><span class=\"nx\">castShadow<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">cityGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">pole<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Lamp head<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">headGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">SphereGeometry<\/span><span class=\"p\">(<\/span>\n                    <span class=\"mf\">0.8<\/span><span class=\"p\">,<\/span>\n                    <span class=\"mi\">16<\/span><span class=\"p\">,<\/span>\n                    <span class=\"mi\">8<\/span><span class=\"p\">,<\/span>\n                    <span class=\"mi\">0<\/span><span class=\"p\">,<\/span>\n                    <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span>\n                    <span class=\"mi\">0<\/span><span class=\"p\">,<\/span>\n                    <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">headMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshStandardMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"mh\">0xaaaaaa<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">roughness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">metalness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"kd\">const<\/span> <span class=\"nx\">head<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span><span class=\"nx\">headGeometry<\/span><span class=\"p\">,<\/span> <span class=\"nx\">headMaterial<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">head<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"mi\">8<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">head<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">head<\/span><span class=\"p\">.<\/span><span class=\"nx\">castShadow<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">cityGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">head<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Light<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">light<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">PointLight<\/span><span class=\"p\">(<\/span><span class=\"mh\">0xffffcc<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.6<\/span><span class=\"p\">,<\/span> <span class=\"mi\">15<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">light<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"mf\">7.8<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">light<\/span><span class=\"p\">);<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create vehicles that move along streets<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createVehicles<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Create 20 vehicles<\/span>\n                <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">20<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"c1\">\/\/ Determine street position and orientation<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">onXStreet<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">streetIndex<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">floor<\/span><span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">5<\/span><span class=\"p\">)<\/span> <span class=\"o\">-<\/span> <span class=\"mi\">2<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">streetPos<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">streetIndex<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">60<\/span><span class=\"p\">;<\/span>\n\n                    <span class=\"c1\">\/\/ Initial position on street<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">alongStreet<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">-<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">180<\/span><span class=\"p\">;<\/span>\n\n                    <span class=\"kd\">let<\/span> <span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">,<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">;<\/span>\n                    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">onXStreet<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">alongStreet<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">streetPos<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">direction<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">alongStreet<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span> <span class=\"p\">?<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"p\">:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ Direction based on position<\/span>\n                    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">streetPos<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">alongStreet<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">direction<\/span> <span class=\"o\">=<\/span>\n                            <span class=\"nx\">alongStreet<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span> <span class=\"p\">?<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span> <span class=\"p\">:<\/span> <span class=\"o\">-<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">;<\/span>\n                    <span class=\"p\">}<\/span>\n\n                    <span class=\"c1\">\/\/ Create the vehicle<\/span>\n                    <span class=\"nf\">createVehicle<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">,<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">,<\/span> <span class=\"nx\">onXStreet<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">}<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create a single vehicle<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createVehicle<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">,<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">,<\/span> <span class=\"nx\">onXStreet<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">vehicleGroup<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Group<\/span><span class=\"p\">();<\/span>\n\n                <span class=\"c1\">\/\/ Car body<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">bodyGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">BoxGeometry<\/span><span class=\"p\">(<\/span><span class=\"mi\">4<\/span><span class=\"p\">,<\/span> <span class=\"mf\">1.5<\/span><span class=\"p\">,<\/span> <span class=\"mi\">2<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Random car color<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">colors<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n                    <span class=\"mh\">0xff0000<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0x00ff00<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0x0000ff<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0xffff00<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0xff00ff<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0x00ffff<\/span><span class=\"p\">,<\/span>\n                    <span class=\"mh\">0xffffff<\/span><span class=\"p\">,<\/span> <span class=\"mh\">0x000000<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">];<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">bodyColor<\/span> <span class=\"o\">=<\/span>\n                    <span class=\"nx\">colors<\/span><span class=\"p\">[<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">floor<\/span><span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">colors<\/span><span class=\"p\">.<\/span><span class=\"nx\">length<\/span><span class=\"p\">)];<\/span>\n\n                <span class=\"kd\">const<\/span> <span class=\"nx\">bodyMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshStandardMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"nx\">bodyColor<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">roughness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.2<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">metalness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.8<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"kd\">const<\/span> <span class=\"nx\">body<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span><span class=\"nx\">bodyGeometry<\/span><span class=\"p\">,<\/span> <span class=\"nx\">bodyMaterial<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">body<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">body<\/span><span class=\"p\">.<\/span><span class=\"nx\">castShadow<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">vehicleGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">body<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Car roof<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">roofGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">BoxGeometry<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mf\">1.8<\/span><span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">roofMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshStandardMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"nx\">bodyColor<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">roughness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.2<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">metalness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.8<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"kd\">const<\/span> <span class=\"nx\">roof<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span><span class=\"nx\">roofGeometry<\/span><span class=\"p\">,<\/span> <span class=\"nx\">roofMaterial<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">roof<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"mf\">2.25<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">roof<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"mf\">0.5<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">roof<\/span><span class=\"p\">.<\/span><span class=\"nx\">castShadow<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">vehicleGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">roof<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Wheels<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">wheelPositions<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n                    <span class=\"p\">{<\/span> <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"o\">-<\/span><span class=\"mf\">1.2<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.6<\/span><span class=\"p\">,<\/span> <span class=\"na\">z<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span> <span class=\"p\">},<\/span>\n                    <span class=\"p\">{<\/span> <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"o\">-<\/span><span class=\"mf\">1.2<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.6<\/span><span class=\"p\">,<\/span> <span class=\"na\">z<\/span><span class=\"p\">:<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span> <span class=\"p\">},<\/span>\n                    <span class=\"p\">{<\/span> <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"mf\">1.2<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.6<\/span><span class=\"p\">,<\/span> <span class=\"na\">z<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span> <span class=\"p\">},<\/span>\n                    <span class=\"p\">{<\/span> <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"mf\">1.2<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.6<\/span><span class=\"p\">,<\/span> <span class=\"na\">z<\/span><span class=\"p\">:<\/span> <span class=\"o\">-<\/span><span class=\"mi\">1<\/span> <span class=\"p\">},<\/span>\n                <span class=\"p\">];<\/span>\n\n                <span class=\"kd\">const<\/span> <span class=\"nx\">wheelGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">CylinderGeometry<\/span><span class=\"p\">(<\/span>\n                    <span class=\"mf\">0.5<\/span><span class=\"p\">,<\/span>\n                    <span class=\"mf\">0.5<\/span><span class=\"p\">,<\/span>\n                    <span class=\"mf\">0.4<\/span><span class=\"p\">,<\/span>\n                    <span class=\"mi\">12<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">wheelMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshStandardMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"mh\">0x111111<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">roughness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.9<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">metalness<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.1<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"nx\">wheelPositions<\/span><span class=\"p\">.<\/span><span class=\"nf\">forEach<\/span><span class=\"p\">((<\/span><span class=\"nx\">pos<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">wheel<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span><span class=\"nx\">wheelGeometry<\/span><span class=\"p\">,<\/span> <span class=\"nx\">wheelMaterial<\/span><span class=\"p\">);<\/span>\n                    <span class=\"nx\">wheel<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span><span class=\"p\">,<\/span> <span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                    <span class=\"nx\">wheel<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">;<\/span>\n                    <span class=\"nx\">wheel<\/span><span class=\"p\">.<\/span><span class=\"nx\">castShadow<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n                    <span class=\"nx\">vehicleGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">wheel<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"c1\">\/\/ Headlights<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">headlightGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">SphereGeometry<\/span><span class=\"p\">(<\/span><span class=\"mf\">0.2<\/span><span class=\"p\">,<\/span> <span class=\"mi\">8<\/span><span class=\"p\">,<\/span> <span class=\"mi\">8<\/span><span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">headlightMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshBasicMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"mh\">0xffffff<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"kd\">const<\/span> <span class=\"nx\">headlightPositions<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n                    <span class=\"p\">{<\/span> <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"na\">z<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.7<\/span> <span class=\"p\">},<\/span>\n                    <span class=\"p\">{<\/span> <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"na\">z<\/span><span class=\"p\">:<\/span> <span class=\"o\">-<\/span><span class=\"mf\">0.7<\/span> <span class=\"p\">},<\/span>\n                <span class=\"p\">];<\/span>\n\n                <span class=\"nx\">headlightPositions<\/span><span class=\"p\">.<\/span><span class=\"nf\">forEach<\/span><span class=\"p\">((<\/span><span class=\"nx\">pos<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">headlight<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span>\n                        <span class=\"nx\">headlightGeometry<\/span><span class=\"p\">,<\/span>\n                        <span class=\"nx\">headlightMaterial<\/span><span class=\"p\">,<\/span>\n                    <span class=\"p\">);<\/span>\n                    <span class=\"nx\">headlight<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span><span class=\"p\">,<\/span> <span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                    <span class=\"nx\">vehicleGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">headlight<\/span><span class=\"p\">);<\/span>\n\n                    <span class=\"c1\">\/\/ Add headlight beam<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">headlightBeam<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">SpotLight<\/span><span class=\"p\">(<\/span>\n                        <span class=\"mh\">0xffffee<\/span><span class=\"p\">,<\/span>\n                        <span class=\"mf\">0.3<\/span><span class=\"p\">,<\/span>\n                        <span class=\"mi\">20<\/span><span class=\"p\">,<\/span>\n                        <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">6<\/span><span class=\"p\">,<\/span>\n                        <span class=\"mf\">0.5<\/span><span class=\"p\">,<\/span>\n                    <span class=\"p\">);<\/span>\n                    <span class=\"nx\">headlightBeam<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span><span class=\"p\">,<\/span> <span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                    <span class=\"nx\">headlightBeam<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">10<\/span><span class=\"p\">,<\/span> <span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span><span class=\"p\">,<\/span> <span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                    <span class=\"nx\">vehicleGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">headlightBeam<\/span><span class=\"p\">);<\/span>\n                    <span class=\"nx\">vehicleGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">headlightBeam<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"c1\">\/\/ Taillights (red)<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">taillightGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">SphereGeometry<\/span><span class=\"p\">(<\/span><span class=\"mf\">0.2<\/span><span class=\"p\">,<\/span> <span class=\"mi\">8<\/span><span class=\"p\">,<\/span> <span class=\"mi\">8<\/span><span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">taillightMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshBasicMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"mh\">0xff0000<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"kd\">const<\/span> <span class=\"nx\">taillightPositions<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n                    <span class=\"p\">{<\/span> <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"o\">-<\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"na\">z<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.7<\/span> <span class=\"p\">},<\/span>\n                    <span class=\"p\">{<\/span> <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"o\">-<\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"na\">z<\/span><span class=\"p\">:<\/span> <span class=\"o\">-<\/span><span class=\"mf\">0.7<\/span> <span class=\"p\">},<\/span>\n                <span class=\"p\">];<\/span>\n\n                <span class=\"nx\">taillightPositions<\/span><span class=\"p\">.<\/span><span class=\"nf\">forEach<\/span><span class=\"p\">((<\/span><span class=\"nx\">pos<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">taillight<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span>\n                        <span class=\"nx\">taillightGeometry<\/span><span class=\"p\">,<\/span>\n                        <span class=\"nx\">taillightMaterial<\/span><span class=\"p\">,<\/span>\n                    <span class=\"p\">);<\/span>\n                    <span class=\"nx\">taillight<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span><span class=\"p\">,<\/span> <span class=\"nx\">pos<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                    <span class=\"nx\">vehicleGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">taillight<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"c1\">\/\/ Set vehicle position and rotation<\/span>\n                <span class=\"nx\">vehicleGroup<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">vehicleGroup<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">;<\/span>\n\n                <span class=\"c1\">\/\/ Add to vehicles group<\/span>\n                <span class=\"nx\">vehiclesGroup<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">vehicleGroup<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Add metadata for movement<\/span>\n                <span class=\"nx\">vehicleGroup<\/span><span class=\"p\">.<\/span><span class=\"nx\">userData<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"na\">speed<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.2<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mf\">0.4<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">onXStreet<\/span><span class=\"p\">:<\/span> <span class=\"nx\">onXStreet<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">};<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create skyline elements<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createSkyline<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Create stars in the night sky<\/span>\n                <span class=\"nf\">createStars<\/span><span class=\"p\">();<\/span>\n\n                <span class=\"c1\">\/\/ Create moon<\/span>\n                <span class=\"nf\">createMoon<\/span><span class=\"p\">();<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create stars<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createStars<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">starsGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">BufferGeometry<\/span><span class=\"p\">();<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">starsMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">PointsMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"mh\">0xffffff<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">size<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">transparent<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n                    <span class=\"na\">opacity<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.8<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"kd\">const<\/span> <span class=\"nx\">starsVertices<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[];<\/span>\n                <span class=\"k\">for<\/span> <span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">1000<\/span><span class=\"p\">;<\/span> <span class=\"nx\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">-<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">2000<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">1000<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">-<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">2000<\/span><span class=\"p\">;<\/span>\n                    <span class=\"nx\">starsVertices<\/span><span class=\"p\">.<\/span><span class=\"nf\">push<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">y<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">}<\/span>\n\n                <span class=\"nx\">starsGeometry<\/span><span class=\"p\">.<\/span><span class=\"nf\">setAttribute<\/span><span class=\"p\">(<\/span>\n                    <span class=\"dl\">\"<\/span><span class=\"s2\">position<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n                    <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Float32BufferAttribute<\/span><span class=\"p\">(<\/span><span class=\"nx\">starsVertices<\/span><span class=\"p\">,<\/span> <span class=\"mi\">3<\/span><span class=\"p\">),<\/span>\n                <span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">stars<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Points<\/span><span class=\"p\">(<\/span><span class=\"nx\">starsGeometry<\/span><span class=\"p\">,<\/span> <span class=\"nx\">starsMaterial<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">stars<\/span><span class=\"p\">);<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create moon<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">createMoon<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">moonGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">SphereGeometry<\/span><span class=\"p\">(<\/span><span class=\"mi\">20<\/span><span class=\"p\">,<\/span> <span class=\"mi\">32<\/span><span class=\"p\">,<\/span> <span class=\"mi\">32<\/span><span class=\"p\">);<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">moonMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshBasicMaterial<\/span><span class=\"p\">({<\/span>\n                    <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"mh\">0xffffee<\/span><span class=\"p\">,<\/span>\n                <span class=\"p\">});<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">moon<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span><span class=\"nx\">moonGeometry<\/span><span class=\"p\">,<\/span> <span class=\"nx\">moonMaterial<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">moon<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"mi\">500<\/span><span class=\"p\">,<\/span> <span class=\"mi\">300<\/span><span class=\"p\">,<\/span> <span class=\"o\">-<\/span><span class=\"mi\">400<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">moon<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Add glow<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">moonGlow<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">PointLight<\/span><span class=\"p\">(<\/span><span class=\"mh\">0xffffee<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.3<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1000<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">moonGlow<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">copy<\/span><span class=\"p\">(<\/span><span class=\"nx\">moon<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">moonGlow<\/span><span class=\"p\">);<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Setup controls<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">setupControls<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"c1\">\/\/ Mouse controls for camera rotation<\/span>\n                <span class=\"kd\">let<\/span> <span class=\"nx\">isDragging<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span><span class=\"p\">;<\/span>\n                <span class=\"kd\">let<\/span> <span class=\"nx\">previousMousePosition<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"mi\">0<\/span> <span class=\"p\">};<\/span>\n                <span class=\"kd\">let<\/span> <span class=\"nx\">rotationSpeed<\/span> <span class=\"o\">=<\/span> <span class=\"mf\">0.003<\/span><span class=\"p\">;<\/span>\n\n                <span class=\"nb\">document<\/span><span class=\"p\">.<\/span><span class=\"nf\">addEventListener<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">mousedown<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"nx\">isDragging<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n                    <span class=\"nx\">previousMousePosition<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">clientX<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">clientY<\/span> <span class=\"p\">};<\/span>\n                    <span class=\"nx\">autoRotate<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span><span class=\"p\">;<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"nb\">document<\/span><span class=\"p\">.<\/span><span class=\"nf\">addEventListener<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">mousemove<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">isDragging<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"kd\">const<\/span> <span class=\"nx\">deltaMove<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n                            <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">clientX<\/span> <span class=\"o\">-<\/span> <span class=\"nx\">previousMousePosition<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span>\n                            <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">clientY<\/span> <span class=\"o\">-<\/span> <span class=\"nx\">previousMousePosition<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span><span class=\"p\">,<\/span>\n                        <span class=\"p\">};<\/span>\n\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">=<\/span>\n                            <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">cos<\/span><span class=\"p\">(<\/span><span class=\"nx\">deltaMove<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">rotationSpeed<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span>\n                                <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">-<\/span>\n                            <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sin<\/span><span class=\"p\">(<\/span><span class=\"nx\">deltaMove<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">rotationSpeed<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span>\n                                <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">=<\/span>\n                            <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sin<\/span><span class=\"p\">(<\/span><span class=\"nx\">deltaMove<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">rotationSpeed<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span>\n                                <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">+<\/span>\n                            <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">cos<\/span><span class=\"p\">(<\/span><span class=\"nx\">deltaMove<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">rotationSpeed<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span>\n                                <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span><span class=\"p\">;<\/span>\n\n                        <span class=\"kd\">const<\/span> <span class=\"nx\">rotationMatrix<\/span> <span class=\"o\">=<\/span>\n                            <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Matrix4<\/span><span class=\"p\">().<\/span><span class=\"nf\">makeRotationAxis<\/span><span class=\"p\">(<\/span>\n                                <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Vector3<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">),<\/span>\n                                <span class=\"nx\">deltaMove<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">rotationSpeed<\/span><span class=\"p\">,<\/span>\n                            <span class=\"p\">);<\/span>\n\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">applyMatrix4<\/span><span class=\"p\">(<\/span><span class=\"nx\">rotationMatrix<\/span><span class=\"p\">);<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nf\">lookAt<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n\n                        <span class=\"nx\">previousMousePosition<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">x<\/span><span class=\"p\">:<\/span> <span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">clientX<\/span><span class=\"p\">,<\/span> <span class=\"na\">y<\/span><span class=\"p\">:<\/span> <span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">clientY<\/span> <span class=\"p\">};<\/span>\n                    <span class=\"p\">}<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"nb\">document<\/span><span class=\"p\">.<\/span><span class=\"nf\">addEventListener<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">mouseup<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"nx\">isDragging<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span><span class=\"p\">;<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"c1\">\/\/ Scroll to zoom<\/span>\n                <span class=\"nb\">document<\/span><span class=\"p\">.<\/span><span class=\"nf\">addEventListener<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">wheel<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">zoomSpeed<\/span> <span class=\"o\">=<\/span> <span class=\"mf\">0.1<\/span><span class=\"p\">;<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">distance<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sqrt<\/span><span class=\"p\">(<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">+<\/span>\n                            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span><span class=\"p\">,<\/span>\n                    <span class=\"p\">);<\/span>\n\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">direction<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Vector3<\/span><span class=\"p\">(<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">\/<\/span> <span class=\"nx\">distance<\/span><span class=\"p\">,<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">\/<\/span> <span class=\"nx\">distance<\/span><span class=\"p\">,<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">\/<\/span> <span class=\"nx\">distance<\/span><span class=\"p\">,<\/span>\n                    <span class=\"p\">);<\/span>\n\n                    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">deltaY<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"c1\">\/\/ Zoom out<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">+=<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">zoomSpeed<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">+=<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">zoomSpeed<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">+=<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">zoomSpeed<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n                    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"c1\">\/\/ Zoom in<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">-=<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">zoomSpeed<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">-=<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">zoomSpeed<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">-=<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">zoomSpeed<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n                    <span class=\"p\">}<\/span>\n\n                    <span class=\"c1\">\/\/ Limit minimum and maximum zoom<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">newDistance<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sqrt<\/span><span class=\"p\">(<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">+<\/span>\n                            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">+<\/span>\n                            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span><span class=\"p\">,<\/span>\n                    <span class=\"p\">);<\/span>\n\n                    <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nx\">newDistance<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">50<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">50<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">50<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">50<\/span><span class=\"p\">;<\/span>\n                    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">newDistance<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">400<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">400<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">400<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">direction<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">400<\/span><span class=\"p\">;<\/span>\n                    <span class=\"p\">}<\/span>\n\n                    <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nf\">lookAt<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"c1\">\/\/ Keyboard controls for camera movement<\/span>\n                <span class=\"nb\">document<\/span><span class=\"p\">.<\/span><span class=\"nf\">addEventListener<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">keydown<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">moveSpeed<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">5<\/span><span class=\"p\">;<\/span>\n                    <span class=\"nx\">autoRotate<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span><span class=\"p\">;<\/span>\n\n                    <span class=\"k\">switch <\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">key<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"k\">case<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">ArrowUp<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span>\n                            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">+=<\/span> <span class=\"nx\">moveSpeed<\/span><span class=\"p\">;<\/span>\n                            <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n                        <span class=\"k\">case<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">ArrowDown<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span>\n                            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">-=<\/span> <span class=\"nx\">moveSpeed<\/span><span class=\"p\">;<\/span>\n                            <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n                        <span class=\"k\">case<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">ArrowLeft<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span>\n                            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">-=<\/span> <span class=\"nx\">moveSpeed<\/span><span class=\"p\">;<\/span>\n                            <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n                        <span class=\"k\">case<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">ArrowRight<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span>\n                            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">+=<\/span> <span class=\"nx\">moveSpeed<\/span><span class=\"p\">;<\/span>\n                            <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n                    <span class=\"p\">}<\/span>\n\n                    <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nf\">lookAt<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">});<\/span>\n\n                <span class=\"c1\">\/\/ Handle window resize<\/span>\n                <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nf\">addEventListener<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">resize<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">aspect<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerWidth<\/span> <span class=\"o\">\/<\/span> <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerHeight<\/span><span class=\"p\">;<\/span>\n                    <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nf\">updateProjectionMatrix<\/span><span class=\"p\">();<\/span>\n                    <span class=\"nx\">renderer<\/span><span class=\"p\">.<\/span><span class=\"nf\">setSize<\/span><span class=\"p\">(<\/span><span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerWidth<\/span><span class=\"p\">,<\/span> <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerHeight<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">});<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Update vehicles<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">updateVehicles<\/span><span class=\"p\">(<\/span><span class=\"nx\">deltaTime<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"nx\">vehiclesGroup<\/span><span class=\"p\">.<\/span><span class=\"nx\">children<\/span><span class=\"p\">.<\/span><span class=\"nf\">forEach<\/span><span class=\"p\">((<\/span><span class=\"nx\">vehicle<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">speed<\/span><span class=\"p\">,<\/span> <span class=\"nx\">onXStreet<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">userData<\/span><span class=\"p\">;<\/span>\n\n                    <span class=\"c1\">\/\/ Move vehicle based on its direction<\/span>\n                    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">onXStreet<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"c1\">\/\/ Vehicle is traveling along X axis<\/span>\n                        <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">===<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                            <span class=\"c1\">\/\/ Moving in positive X direction<\/span>\n                            <span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">+=<\/span> <span class=\"nx\">speed<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">deltaTime<\/span><span class=\"p\">;<\/span>\n\n                            <span class=\"c1\">\/\/ If reached edge of map, turn around<\/span>\n                            <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">190<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                                <span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span><span class=\"p\">;<\/span>\n                            <span class=\"p\">}<\/span>\n                        <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n                            <span class=\"c1\">\/\/ Moving in negative X direction<\/span>\n                            <span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">-=<\/span> <span class=\"nx\">speed<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">deltaTime<\/span><span class=\"p\">;<\/span>\n\n                            <span class=\"c1\">\/\/ If reached edge of map, turn around<\/span>\n                            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">&lt;<\/span> <span class=\"o\">-<\/span><span class=\"mi\">190<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                                <span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n                            <span class=\"p\">}<\/span>\n                        <span class=\"p\">}<\/span>\n                    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"c1\">\/\/ Vehicle is traveling along Z axis<\/span>\n                        <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">===<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                            <span class=\"c1\">\/\/ Moving in positive Z direction<\/span>\n                            <span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">+=<\/span> <span class=\"nx\">speed<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">deltaTime<\/span><span class=\"p\">;<\/span>\n\n                            <span class=\"c1\">\/\/ If reached edge of map, turn around<\/span>\n                            <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">190<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                                <span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">;<\/span>\n                            <span class=\"p\">}<\/span>\n                        <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n                            <span class=\"c1\">\/\/ Moving in negative Z direction<\/span>\n                            <span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">-=<\/span> <span class=\"nx\">speed<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">deltaTime<\/span><span class=\"p\">;<\/span>\n\n                            <span class=\"c1\">\/\/ If reached edge of map, turn around<\/span>\n                            <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">&lt;<\/span> <span class=\"o\">-<\/span><span class=\"mi\">190<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                                <span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">;<\/span>\n                            <span class=\"p\">}<\/span>\n                        <span class=\"p\">}<\/span>\n                    <span class=\"p\">}<\/span>\n\n                    <span class=\"c1\">\/\/ Animate wheels (optional)<\/span>\n                    <span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">children<\/span><span class=\"p\">.<\/span><span class=\"nf\">forEach<\/span><span class=\"p\">((<\/span><span class=\"nx\">child<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"k\">if <\/span><span class=\"p\">(<\/span>\n                            <span class=\"nx\">child<\/span><span class=\"p\">.<\/span><span class=\"nx\">geometry<\/span> <span class=\"o\">&amp;&amp;<\/span>\n                            <span class=\"nx\">child<\/span><span class=\"p\">.<\/span><span class=\"nx\">geometry<\/span><span class=\"p\">.<\/span><span class=\"nx\">type<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">CylinderGeometry<\/span><span class=\"dl\">\"<\/span> <span class=\"o\">&amp;&amp;<\/span>\n                            <span class=\"nx\">child<\/span><span class=\"p\">.<\/span><span class=\"nx\">geometry<\/span><span class=\"p\">.<\/span><span class=\"nx\">parameters<\/span><span class=\"p\">.<\/span><span class=\"nx\">radiusTop<\/span> <span class=\"o\">===<\/span> <span class=\"mf\">0.5<\/span>\n                        <span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                            <span class=\"nx\">child<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">+=<\/span> <span class=\"nx\">speed<\/span> <span class=\"o\">*<\/span> <span class=\"mf\">0.1<\/span><span class=\"p\">;<\/span>\n                        <span class=\"p\">}<\/span>\n                    <span class=\"p\">});<\/span>\n                <span class=\"p\">});<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Animation loop<\/span>\n            <span class=\"kd\">function<\/span> <span class=\"nf\">animate<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n                <span class=\"nf\">requestAnimationFrame<\/span><span class=\"p\">(<\/span><span class=\"nx\">animate<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Get delta time for smooth animation regardless of frame rate<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">deltaTime<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">clock<\/span><span class=\"p\">.<\/span><span class=\"nf\">getDelta<\/span><span class=\"p\">();<\/span>\n\n                <span class=\"c1\">\/\/ Update vehicles<\/span>\n                <span class=\"nf\">updateVehicles<\/span><span class=\"p\">(<\/span><span class=\"nx\">deltaTime<\/span><span class=\"p\">);<\/span>\n\n                <span class=\"c1\">\/\/ Auto rotate camera if enabled<\/span>\n                <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">autoRotate<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"kd\">const<\/span> <span class=\"nx\">radius<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sqrt<\/span><span class=\"p\">(<\/span>\n                        <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">+<\/span>\n                            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span><span class=\"p\">,<\/span>\n                    <span class=\"p\">);<\/span>\n\n                    <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">=<\/span>\n                        <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">cos<\/span><span class=\"p\">(<\/span><span class=\"nx\">cameraRotationSpeed<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">-<\/span>\n                        <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sin<\/span><span class=\"p\">(<\/span><span class=\"nx\">cameraRotationSpeed<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span><span class=\"p\">;<\/span>\n                    <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">=<\/span>\n                        <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sin<\/span><span class=\"p\">(<\/span><span class=\"nx\">cameraRotationSpeed<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">+<\/span>\n                        <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">cos<\/span><span class=\"p\">(<\/span><span class=\"nx\">cameraRotationSpeed<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span><span class=\"p\">;<\/span>\n\n                    <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nf\">lookAt<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n                <span class=\"p\">}<\/span>\n\n                <span class=\"c1\">\/\/ Render scene<\/span>\n                <span class=\"nx\">renderer<\/span><span class=\"p\">.<\/span><span class=\"nf\">render<\/span><span class=\"p\">(<\/span><span class=\"nx\">scene<\/span><span class=\"p\">,<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">);<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Start the application<\/span>\n            <span class=\"nf\">init<\/span><span class=\"p\">();<\/span>\n        <span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n<span class=\"nt\"\/>\n<\/span><\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg>\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg>\n<\/div>\n<\/div>\n<\/div>\n\u062e\u0631\u0648\u062c\u06cc Deepseek R1\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight html\"><code><span class=\"cp\"\/>\n<span class=\"nt\"\/>\n<span class=\"nt\"\/>\n    <span class=\"nt\"><title\/><\/span>3D Metropolitan City<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n        <span class=\"nt\">body<\/span> <span class=\"p\">{<\/span> <span class=\"nl\">margin<\/span><span class=\"p\">:<\/span> <span class=\"m\">0<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n        <span class=\"nt\">canvas<\/span> <span class=\"p\">{<\/span> <span class=\"nl\">display<\/span><span class=\"p\">:<\/span> <span class=\"nb\">block<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"nt\"\/>\n<span class=\"nt\"\/>\n<span class=\"nt\"\/>\n    <span class=\"nt\"><script><![CDATA[<span class=\"na\">src=]]><\/script><\/span><span class=\"s\">\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/three.js\/r128\/three.min.js\"<\/span><span class=\"nt\">&gt;<\/span>\n    <span class=\"nt\"><script\/><\/span>\n        <span class=\"kd\">let<\/span> <span class=\"nx\">scene<\/span><span class=\"p\">,<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">,<\/span> <span class=\"nx\">renderer<\/span><span class=\"p\">,<\/span> <span class=\"nx\">city<\/span><span class=\"p\">;<\/span>\n        <span class=\"kd\">let<\/span> <span class=\"nx\">dayCycle<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span><span class=\"p\">;<\/span>\n        <span class=\"kd\">let<\/span> <span class=\"nx\">lights<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[];<\/span>\n\n        <span class=\"kd\">function<\/span> <span class=\"nf\">init<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n            <span class=\"c1\">\/\/ Create scene<\/span>\n            <span class=\"nx\">scene<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Scene<\/span><span class=\"p\">();<\/span>\n\n            <span class=\"c1\">\/\/ Create camera<\/span>\n            <span class=\"nx\">camera<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">PerspectiveCamera<\/span><span class=\"p\">(<\/span><span class=\"mi\">75<\/span><span class=\"p\">,<\/span> <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerWidth<\/span> <span class=\"o\">\/<\/span> <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerHeight<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1000<\/span><span class=\"p\">);<\/span>\n            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">50<\/span><span class=\"p\">,<\/span> <span class=\"mi\">100<\/span><span class=\"p\">);<\/span>\n\n            <span class=\"c1\">\/\/ Create renderer<\/span>\n            <span class=\"nx\">renderer<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">WebGLRenderer<\/span><span class=\"p\">({<\/span> <span class=\"na\">antialias<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span> <span class=\"p\">});<\/span>\n            <span class=\"nx\">renderer<\/span><span class=\"p\">.<\/span><span class=\"nf\">setSize<\/span><span class=\"p\">(<\/span><span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerWidth<\/span><span class=\"p\">,<\/span> <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerHeight<\/span><span class=\"p\">);<\/span>\n            <span class=\"nx\">renderer<\/span><span class=\"p\">.<\/span><span class=\"nf\">setClearColor<\/span><span class=\"p\">(<\/span><span class=\"mh\">0x87CEEB<\/span><span class=\"p\">);<\/span>\n            <span class=\"nb\">document<\/span><span class=\"p\">.<\/span><span class=\"nx\">body<\/span><span class=\"p\">.<\/span><span class=\"nf\">appendChild<\/span><span class=\"p\">(<\/span><span class=\"nx\">renderer<\/span><span class=\"p\">.<\/span><span class=\"nx\">domElement<\/span><span class=\"p\">);<\/span>\n\n            <span class=\"c1\">\/\/ Create city<\/span>\n            <span class=\"nf\">createCity<\/span><span class=\"p\">();<\/span>\n\n            <span class=\"c1\">\/\/ Add lights<\/span>\n            <span class=\"kd\">const<\/span> <span class=\"nx\">ambientLight<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">AmbientLight<\/span><span class=\"p\">(<\/span><span class=\"mh\">0x404040<\/span><span class=\"p\">);<\/span>\n            <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">ambientLight<\/span><span class=\"p\">);<\/span>\n\n            <span class=\"kd\">const<\/span> <span class=\"nx\">directionalLight<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">DirectionalLight<\/span><span class=\"p\">(<\/span><span class=\"mh\">0xffffff<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.8<\/span><span class=\"p\">);<\/span>\n            <span class=\"nx\">directionalLight<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">100<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n            <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">directionalLight<\/span><span class=\"p\">);<\/span>\n\n            <span class=\"c1\">\/\/ Add event listeners<\/span>\n            <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nf\">addEventListener<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">resize<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">onWindowResize<\/span><span class=\"p\">,<\/span> <span class=\"kc\">false<\/span><span class=\"p\">);<\/span>\n            <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nf\">addEventListener<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">click<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">toggleDayCycle<\/span><span class=\"p\">,<\/span> <span class=\"kc\">false<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"kd\">function<\/span> <span class=\"nf\">createCity<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n            <span class=\"nx\">city<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Group<\/span><span class=\"p\">();<\/span>\n\n            <span class=\"c1\">\/\/ Create buildings<\/span>\n            <span class=\"kd\">const<\/span> <span class=\"nx\">buildingGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">BoxGeometry<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"mi\">5<\/span><span class=\"p\">);<\/span>\n\n            <span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"mi\">50<\/span><span class=\"p\">;<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">50<\/span><span class=\"p\">;<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">+=<\/span> <span class=\"mi\">10<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"mi\">50<\/span><span class=\"p\">;<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">50<\/span><span class=\"p\">;<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">+=<\/span> <span class=\"mi\">10<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                    <span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mf\">0.3<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                        <span class=\"kd\">const<\/span> <span class=\"nx\">height<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">30<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n                        <span class=\"kd\">const<\/span> <span class=\"nx\">building<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span>\n                            <span class=\"nx\">buildingGeometry<\/span><span class=\"p\">,<\/span>\n                            <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshPhongMaterial<\/span><span class=\"p\">({<\/span> \n                                <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Color<\/span><span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">(),<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">(),<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()),<\/span>\n                                <span class=\"na\">transparent<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\n                                <span class=\"na\">opacity<\/span><span class=\"p\">:<\/span> <span class=\"mf\">0.8<\/span>\n                            <span class=\"p\">})<\/span>\n                        <span class=\"p\">);<\/span>\n                        <span class=\"nx\">building<\/span><span class=\"p\">.<\/span><span class=\"nx\">scale<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">height<\/span><span class=\"p\">;<\/span>\n                        <span class=\"nx\">building<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">x<\/span><span class=\"p\">,<\/span> <span class=\"nx\">height<\/span><span class=\"o\">\/<\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"nx\">z<\/span><span class=\"p\">);<\/span>\n                        <span class=\"nx\">city<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">building<\/span><span class=\"p\">);<\/span>\n                    <span class=\"p\">}<\/span>\n                <span class=\"p\">}<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"c1\">\/\/ Create roads<\/span>\n            <span class=\"kd\">const<\/span> <span class=\"nx\">roadGeometry<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">PlaneGeometry<\/span><span class=\"p\">(<\/span><span class=\"mi\">100<\/span><span class=\"p\">,<\/span> <span class=\"mi\">5<\/span><span class=\"p\">);<\/span>\n            <span class=\"kd\">const<\/span> <span class=\"nx\">roadMaterial<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">MeshPhongMaterial<\/span><span class=\"p\">({<\/span> <span class=\"na\">color<\/span><span class=\"p\">:<\/span> <span class=\"mh\">0x444444<\/span> <span class=\"p\">});<\/span>\n\n            <span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"kd\">let<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"mi\">45<\/span><span class=\"p\">;<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"mi\">45<\/span><span class=\"p\">;<\/span> <span class=\"nx\">z<\/span> <span class=\"o\">+=<\/span> <span class=\"mi\">10<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"kd\">const<\/span> <span class=\"nx\">road<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Mesh<\/span><span class=\"p\">(<\/span><span class=\"nx\">roadGeometry<\/span><span class=\"p\">,<\/span> <span class=\"nx\">roadMaterial<\/span><span class=\"p\">);<\/span>\n                <span class=\"nx\">road<\/span><span class=\"p\">.<\/span><span class=\"nx\">rotation<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"o\">-<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nx\">PI<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">road<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">y<\/span> <span class=\"o\">=<\/span> <span class=\"mf\">0.1<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">road<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">z<\/span><span class=\"p\">;<\/span>\n                <span class=\"nx\">city<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">road<\/span><span class=\"p\">);<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nx\">city<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"kd\">function<\/span> <span class=\"nf\">animate<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n            <span class=\"nf\">requestAnimationFrame<\/span><span class=\"p\">(<\/span><span class=\"nx\">animate<\/span><span class=\"p\">);<\/span>\n\n            <span class=\"c1\">\/\/ Rotate camera around city<\/span>\n            <span class=\"kd\">const<\/span> <span class=\"nx\">time<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Date<\/span><span class=\"p\">.<\/span><span class=\"nf\">now<\/span><span class=\"p\">()<\/span> <span class=\"o\">*<\/span> <span class=\"mf\">0.001<\/span><span class=\"p\">;<\/span>\n            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">cos<\/span><span class=\"p\">(<\/span><span class=\"nx\">time<\/span> <span class=\"o\">*<\/span> <span class=\"mf\">0.3<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">100<\/span><span class=\"p\">;<\/span>\n            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">.<\/span><span class=\"nx\">z<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sin<\/span><span class=\"p\">(<\/span><span class=\"nx\">time<\/span> <span class=\"o\">*<\/span> <span class=\"mf\">0.3<\/span><span class=\"p\">)<\/span> <span class=\"o\">*<\/span> <span class=\"mi\">100<\/span><span class=\"p\">;<\/span>\n            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nf\">lookAt<\/span><span class=\"p\">(<\/span><span class=\"nx\">scene<\/span><span class=\"p\">.<\/span><span class=\"nx\">position<\/span><span class=\"p\">);<\/span>\n\n            <span class=\"c1\">\/\/ Update day\/night cycle<\/span>\n            <span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"nx\">dayCycle<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n                <span class=\"nx\">renderer<\/span><span class=\"p\">.<\/span><span class=\"nf\">setClearColor<\/span><span class=\"p\">(<\/span><span class=\"k\">new<\/span> <span class=\"nx\">THREE<\/span><span class=\"p\">.<\/span><span class=\"nc\">Color<\/span><span class=\"p\">().<\/span><span class=\"nf\">setHSL<\/span><span class=\"p\">(<\/span>\n                    <span class=\"p\">(<\/span><span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">sin<\/span><span class=\"p\">(<\/span><span class=\"nx\">time<\/span> <span class=\"o\">*<\/span> <span class=\"mf\">0.2<\/span><span class=\"p\">)<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"p\">)<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.3<\/span>\n                <span class=\"p\">));<\/span>\n            <span class=\"p\">}<\/span>\n\n            <span class=\"nx\">renderer<\/span><span class=\"p\">.<\/span><span class=\"nf\">render<\/span><span class=\"p\">(<\/span><span class=\"nx\">scene<\/span><span class=\"p\">,<\/span> <span class=\"nx\">camera<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"kd\">function<\/span> <span class=\"nf\">onWindowResize<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nx\">aspect<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerWidth<\/span> <span class=\"o\">\/<\/span> <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerHeight<\/span><span class=\"p\">;<\/span>\n            <span class=\"nx\">camera<\/span><span class=\"p\">.<\/span><span class=\"nf\">updateProjectionMatrix<\/span><span class=\"p\">();<\/span>\n            <span class=\"nx\">renderer<\/span><span class=\"p\">.<\/span><span class=\"nf\">setSize<\/span><span class=\"p\">(<\/span><span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerWidth<\/span><span class=\"p\">,<\/span> <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nx\">innerHeight<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"kd\">function<\/span> <span class=\"nf\">toggleDayCycle<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n            <span class=\"nx\">dayCycle<\/span> <span class=\"o\">=<\/span> <span class=\"o\">!<\/span><span class=\"nx\">dayCycle<\/span><span class=\"p\">;<\/span>\n            <span class=\"nx\">renderer<\/span><span class=\"p\">.<\/span><span class=\"nf\">setClearColor<\/span><span class=\"p\">(<\/span><span class=\"nx\">dayCycle<\/span> <span class=\"p\">?<\/span> <span class=\"mh\">0x87CEEB<\/span> <span class=\"p\">:<\/span> <span class=\"mh\">0x000000<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"nf\">init<\/span><span class=\"p\">();<\/span>\n        <span class=\"nf\">animate<\/span><span class=\"p\">();<\/span>\n    <span class=\"nt\"\/>\n<span class=\"nt\"\/>\n<span class=\"nt\"\/>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0646 \u0641\u06a9\u0631 \u0646\u0645\u06cc \u06a9\u0646\u0645 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0627\u06cc\u062f \u062f\u0648 \u0641\u06a9\u0631 \u062f\u0648\u062a\u0627\u06cc\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u06a9\u0644\u0648\u062f Deepseek R1 \u0631\u0627 \u0627\u0632 \u0622\u0628 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u06cc\u0631\u0648\u0646 \u0645\u06cc \u06a9\u0634\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AE%D9%84%D8%A7%D8%B5%D9%87_%D8%AA%D9%88%D8%A7%D9%86%D8%A7%DB%8C%DB%8C_%D9%87%D8%A7%DB%8C_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D9%86%D9%88%DB%8C%D8%B3%DB%8C\"><\/span>\n<p>  \u062e\u0644\u0627\u0635\u0647 \u062a\u0648\u0627\u0646\u0627\u06cc\u06cc \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Claude 3.7 Sonnet \u062f\u0631 \u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0627\u0632 Deepseek R1 \u0645\u062f\u0644 \u0628\u0647\u062a\u0631\u06cc \u062f\u0627\u0631\u062f. \u0647\u0645 \u0628\u0631\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0648 \u0647\u0645 \u0628\u0631\u0627\u06cc \u0633\u0647 \u06a9\u062f \u060c \u06a9\u0644\u0648\u062f \u062e\u06cc\u0644\u06cc \u062c\u0644\u0648\u062a\u0631 \u0627\u0632 Deepseek R1 \u0628\u0648\u062f. \u0627\u06cc\u0646 \u0634\u06af\u0641\u062a \u0622\u0648\u0631 \u0627\u0633\u062a \u060c \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0646\u0633\u0627\u0646 \u0634\u0646\u0627\u0633\u06cc \u0628\u0647 \u0635\u0631\u0627\u062d\u062a \u06a9\u0644\u0648\u062f \u0631\u0627 \u062f\u0631 \u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0628\u0647\u062a\u0631 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D9%88%D8%B4%D8%AA%D9%86\"><\/span>\n<p>  \u0646\u0648\u0634\u062a\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0646 \u0627\u0632 \u0647\u0631 \u062f\u0648 \u0645\u062f\u0644 \u0628\u0647 \u0637\u0648\u0631 \u06af\u0633\u062a\u0631\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0627\u0645. \u06a9\u0644\u0648\u062f \u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0646 \u062d\u0631\u0641\u0647 \u0627\u06cc \u060c \u0628\u0647 \u0648\u06cc\u0698\u0647 \u0645\u0637\u0627\u0644\u0628 \u0641\u0646\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a. Deepseek R1 \u0628\u0647 \u0637\u0631\u0632 \u0639\u062c\u06cc\u0628\u06cc \u062e\u0644\u0627\u0642 \u0648 \u0627\u0646\u0633\u0627\u0646\u06cc \u062a\u0631 \u0627\u0633\u062a. \u0647\u0646\u06af\u0627\u0645 \u0646\u0648\u0634\u062a\u0646 \u067e\u0627\u06cc\u0627\u0646 \u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u06cc\u0627 \u062a\u0648\u0636\u06cc\u062d \u0647\u0631 \u0645\u0641\u0647\u0648\u0645 \u0641\u0646\u06cc \u060c \u06a9\u0644\u0648\u062f \u0645\u06cc \u062f\u0631\u062e\u0634\u062f \u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u06af\u0631 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0627 \u0622\u0646\u0647\u0627 \u0635\u062d\u0628\u062a \u06a9\u0646\u06cc\u062f \u060c Deepseek R1 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AD%DA%A9%D9%85_%D9%86%D9%87%D8%A7%DB%8C%DB%8C\"><\/span>\n<p>  \u062d\u06a9\u0645 \u0646\u0647\u0627\u06cc\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u2022 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0648 \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a \u060c \u06a9\u0644\u0648\u062f \u0627\u062d\u0633\u0627\u0633 \u0633\u0627\u062e\u062a\u0627\u0631 \u0648 \u0628\u0627\u0644\u063a \u062a\u0631 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\u2022 Deepseek R1 \u0644\u062d\u0646 \u062d\u0631\u0641\u0647 \u0627\u06cc \u06a9\u0645\u062a\u0631\u06cc \u062f\u0627\u0631\u062f \u0627\u0645\u0627 \u0628\u0631\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u06a9\u0627\u0631\u0647\u0627\u06cc \u062f\u0646\u06cc\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a.<br \/>\u2022 \u063a\u0632\u0644 Claude 3.7 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0645\u062f\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0627\u0633\u062a. \u0627\u06cc\u0646 \u06a9\u062f \u0633\u0631\u06cc\u0639\u062a\u0631 \u060c \u0628\u0647\u062a\u0631 \u0648 \u0634\u0641\u0627\u0641 \u062a\u0631 \u0627\u0632 \u0633\u0627\u06cc\u0631 \u0645\u062f\u0644 \u0647\u0627 \u0645\u06cc \u0646\u0648\u06cc\u0633\u062f.<br \/>\u2022 \u06a9\u0644\u0648\u062f \u062f\u0631 \u0646\u0648\u0634\u062a\u0646 \u0641\u0646\u06cc \u0628\u0647\u062a\u0631 \u0627\u0633\u062a. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c Deepseek \u0644\u062d\u0646 \u0648 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0627\u0646\u0633\u0627\u0646\u06cc \u062a\u0631\u06cc \u062f\u0627\u0631\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u060c \u0633\u0631\u0627\u0646\u062c\u0627\u0645 Anthropic \u0633\u06a9\u0648\u062a \u0631\u0627 \u0634\u06a9\u0633\u062a \u0648 Claude 3.7 Sonnet \u0631\u0627 \u0645\u0646\u062a\u0634\u0631 \u06a9\u0631\u062f \u060c \u06cc\u06a9 \u0645\u062f\u0644 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0645\u062f\u0644 \u062a\u0641\u06a9\u0631 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0647\u0627\u06cc \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0641\u06a9\u0631 \u06a9\u0646\u062f \u0648 \u0641\u0648\u0631\u0627\u064b \u0645\u0627\u0646\u0646\u062f \u06cc\u06a9 \u0645\u062f\u0644 \u067e\u0627\u06cc\u0647 \u067e\u0627\u0633\u062e \u062f\u0647\u062f. \u0627\u0632 \u0645\u0639\u06cc\u0627\u0631\u0647\u0627\u06cc Arc-Agi \u060c \u063a\u0632\u0644 3.7 Claude \u0628\u0627 Thinking \u0628\u0627 O3-Mini-High \u0628\u0631\u0627\u06cc \u0632\u0645\u06cc\u0646\u0647 16K \u0628\u0647 \u062b\u0645\u0631 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":99681,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/media2.dev.to\/dynamic\/image\/width=1000,height=500,fit=cover,gravity=auto,format=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fix1nsfjd6vlay8wz1qbu.png","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-99680","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/99680","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=99680"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/99680\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/99681"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=99680"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=99680"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=99680"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}