{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "265e8204",
   "metadata": {},
   "source": [
    "# 07-07 · Окружность внутри квадрата\n",
    "\n",
    "Практика к разделам [«Мини-проект — окружность внутри квадрата»](../../site/chapters/glava-07/07-07-mini-proekt-okruzhnost-kvadrat.html) и [«Меняем направление рисования»](../../site/chapters/glava-07/07-08-napravlenie-risovaniya.html)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "39421e79",
   "metadata": {},
   "source": [
    "## Цель\n",
    "\n",
    "Скомбинировать фигуры и попрактиковать направление рисования окружности."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "96c30ba6",
   "metadata": {},
   "source": [
    "## Настройка (выполнить один раз)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "6341eb56",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-14T20:53:32.124537Z",
     "iopub.status.busy": "2026-08-14T20:53:32.124418Z",
     "iopub.status.idle": "2026-08-14T20:53:32.309620Z",
     "shell.execute_reply": "2026-08-14T20:53:32.308782Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Окно Turtle готово.\n"
     ]
    }
   ],
   "source": [
    "import turtle\n",
    "\n",
    "screen = turtle.Screen()\n",
    "artist = turtle.Turtle()\n",
    "artist.speed(0)\n",
    "print(\"Окно Turtle готово.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ee1cf044",
   "metadata": {},
   "source": [
    "## Рабочий пример"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f60c06fc",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-14T20:53:32.310960Z",
     "iopub.status.busy": "2026-08-14T20:53:32.310820Z",
     "iopub.status.idle": "2026-08-14T20:53:34.802355Z",
     "shell.execute_reply": "2026-08-14T20:53:34.801784Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Квадрат с вписанной окружностью готов.\n"
     ]
    }
   ],
   "source": [
    "artist.reset()\n",
    "razmer = 150\n",
    "\n",
    "for _ in range(4):\n",
    "    artist.forward(razmer)\n",
    "    artist.right(90)\n",
    "\n",
    "artist.penup()\n",
    "artist.goto(razmer / 2, -razmer / 2)\n",
    "artist.setheading(0)\n",
    "artist.pendown()\n",
    "artist.circle(razmer / 2)\n",
    "print(\"Квадрат с вписанной окружностью готов.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ed826689",
   "metadata": {},
   "source": [
    "## Эксперимент 1 — направление окружности"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "10af5a51",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-14T20:53:34.803381Z",
     "iopub.status.busy": "2026-08-14T20:53:34.803248Z",
     "iopub.status.idle": "2026-08-14T20:53:37.222973Z",
     "shell.execute_reply": "2026-08-14T20:53:37.222374Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Курс после обычной окружности: 0.0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Курс после окружности с отрицательным радиусом: 0.0\n"
     ]
    }
   ],
   "source": [
    "artist.reset()\n",
    "artist.circle(60)    # против часовой стрелки\n",
    "print(\"Курс после обычной окружности:\", artist.heading())\n",
    "\n",
    "artist.reset()\n",
    "artist.circle(-60)   # по часовой стрелке\n",
    "print(\"Курс после окружности с отрицательным радиусом:\", artist.heading())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "31200e42",
   "metadata": {},
   "source": [
    "## Задание ★★ Самостоятельная задача\n",
    "\n",
    "Впишите окружность в шестиугольник со стороной 80 (подсказка: радиус вписанной окружности шестиугольника — `сторона * 0.866`)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "f40a3c2a",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-14T20:53:37.224251Z",
     "iopub.status.busy": "2026-08-14T20:53:37.224073Z",
     "iopub.status.idle": "2026-08-14T20:53:39.525004Z",
     "shell.execute_reply": "2026-08-14T20:53:39.524482Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Окружность вписана в шестиугольник, радиус: 69.3\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "\n",
    "artist.reset()\n",
    "storona = 80\n",
    "for _ in range(6):\n",
    "    artist.forward(storona)\n",
    "    artist.right(60)\n",
    "\n",
    "radius = storona * math.sqrt(3) / 2\n",
    "artist.penup()\n",
    "artist.goto(0, -radius)\n",
    "artist.setheading(0)\n",
    "artist.pendown()\n",
    "artist.circle(radius)\n",
    "print(\"Окружность вписана в шестиугольник, радиус:\", round(radius, 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1b3643fe",
   "metadata": {},
   "source": [
    "## Завершение (выполнить один раз, в самом конце)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "4cae7142",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-14T20:53:39.526022Z",
     "iopub.status.busy": "2026-08-14T20:53:39.525907Z",
     "iopub.status.idle": "2026-08-14T20:53:39.529336Z",
     "shell.execute_reply": "2026-08-14T20:53:39.528785Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Окно Turtle закрыто.\n"
     ]
    }
   ],
   "source": [
    "screen.bye()\n",
    "print(\"Окно Turtle закрыто.\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Cartesian Python 3.14",
   "language": "python",
   "name": "cartesian-python314"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.14.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
