Форум HeroesWorld-а - Показать сообщение отдельно - [ОБСУЖДЕНИЕ] Спиралевидные карты
Показать сообщение отдельно
#25
Старый 13.06.2018, 12:48
  #25
^
Lava
📖
Регистрация: 11.11.2016
Сообщения: 181
Регистрация: 11.11.2016
Сообщения: 181
По умолчанию
Re: [ОБСУЖДЕНИЕ] Спиралевидные карты

Дано: "Heroes III".
Надо: нарисовать карту, состоящую из дуг 1/8 окружности.
Среда разработки: MS-DOS, Turbo C, Windows 95; Celeron 333.

Для этого надо нарисовать границу окружности, а потом составить карту из них.
Программа, рассчитывающая границу окружности:
	/*   Радиус   */

#include 
#include 

main ()
{
   int a, b, c, d;
   FILE *g;

   /*   a - радиус, для которого ведётся расчёт
        b - максимальное значение, для которого считается квадратный корень
        c - счётчик
        d - рассчитанное значение границы окружности   */

   g = fopen ("1.txt", "w");
   for (a = 1; a < 61; a++)   /*   внешний радиус 1/8 окружности   */
   {
      b = a / sqrt (2) + 2;   /*   верхняя граница расчетов   */
      fprintf (g, "r = %i\n", a);
      for (c = 0; c < b; c++)
      {
	 if (c == a) break;
	 d = sqrt (a * a - c * c - .0001) + 1;
	 if (d < c) break;
	 if (d == a) continue;
	 fprintf (g, "%i - %i\n", c, d);
      }

      fprintf (g, "\n");
   }

   fclose (g);
}
В результате получается файл, содержащий рассчитанные границы окружностей различных радиусов.
Но окружность получается неровная. После ручной правки получается следующее:
r = 1

r = 2

r = 3

r = 4
3 - 3

r = 5
3 - 4

r = 6
4 - 5

r = 7
4 - 6
5 - 5

r = 8
4 - 7
5 - 7
6 - 6

r = 9
5 - 8
6 - 7

r = 10
5 - 9
6 - 9
7 - 8
Скачать заготовки карт 3 - 12: yadi.sk/d/E7Bi8tVh3Xp2e9
Скачать программу для расчёта радиусов: yadi.sk/d/0C1Ga-OX3Xp2zG
Скачать файл с рассчитанными радиусами: yadi.sk/i/rWN_PXeC3Xp39B
Получились такие заготовки карт:



















Lava вне форума
Ответить с цитированием