Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

КРУГОВОЙ ФРАКТАЛ -ОШИБОЧНАЯ ПРОГРАММА! ПАПА ЗибЕрт
Можешь обяснить подробно что как работает, и почему массу не задаем
Здравствуйте, Ильгиз. Математика - царица наук (Карл Гаусс). Изучение математики начинается с детского сада, когда нас учат считать и выполнять простые арифметические операции. Любой, даже самый простейший алгоритм будет связан с арифметическими...
Я хотел узнать математика это обязательно в программирование. Пять лет назад просто из любопытства я увлекся HTML потом изучил CSS и JvaScript потом изучил PHP и Java. Как то не задумывался и начал смотреть форумы и узнал что без математики не...
Все верно, но так же необходимо зайти в: Компоновщик -> Ввод -> Дополнительные зависимости Здесь необходимо нажать изменить и в Дополнительные зависимости прописать это: SDL2.lib SDL2main.lib SDL2test.lib Без этого не заработает. (MVS 2015)

Счетчики и рейтинг

Яндекс.Метрика Рейтинг@Mail.ru
Скриншот к примеру
Среда программирования: 
Lazarus IDE v1.2.6

Построение вложенных спиральных квадратов. На форме находится кнопка, по нажатию на которую, сначала рассчитываются координаты, начиная с правой нижней точки, двигаясь по часовой стрелке, заканчивая верхней правой точкой. Координаты первой точки рассчитываются по формуле:
x = x0 + c * cos(b + 1*pi/4)
y = y0 + c * sin(b + 1*pi/4)

Координаты трёх следующих точек рассчитываются по этой же формуле, только при расчете каждой следующей координаты мы прибавляем и умножаем 2 ко второму слагаемому в скобке. Т.е. вторая точка будет иметь координаты:
x = x0 + c * cos(b + 3*pi/4)
y = y0 + c * sin(b + 3*pi/4)

И так далее, вплоть до 4 точки.
Переменная "c" рассчитывается по формуле:c:=x*sin(pi/3), для каждого следующего квадрата эта переменная получается путем умножения ее предыдущего значения на sin(pi/3). Переменная х была найдена экспериментальным путем.
Переменная "b" рассчитывается по формуле: b := pi/19, для каждого следующего квадрата эта переменная получается путем сложения ее предыдущего значения с sin(pi/19).

Код программы: 

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons,
  ExtCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    PaintBox1: TPaintBox;
    procedure BitBtn1Click(Sender: TObject);
   procedure Square(c, b: Real);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  i : Integer;//Переменная используемая в цикле, обозначает кол-во проходов
  l,a  : Real;//Переменные используемые для построения каждого квадрата
 
const
 
  d0  = 283;{Константа, влияющая на расстояние от
                центра квадрата до углов(Не диагональ),
                подобрана экспериментальным путем }
  //Координаты центра квадрата
  x0  = 200;
  y0  = 200;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
procedure TForm1.Square(c, b: Real); //функция построения и отрисовки квадрата
var
	x1, y1,x2,y2,x3,y3,x4,y4: Integer;
begin
	x1 := Round(x0 + c * cos(b + pi/4));
	y1 := Round(y0 + c * sin(b + pi/4));   //Координаты правой нижней точки
	x2 := Round(x0 + c * cos(b + 3*pi/4));
	y2 := Round(y0 + c * sin(b + 3*pi/4));  //Координаты левой нижней точки
	x3 := Round(x0 + c * cos(b + 5*pi/4));
	y3 := Round(y0 + c * sin(b + 5*pi/4)); //Координаты левой верхней точки
	x4 := Round(x0 + c * cos(b + 7*pi/4));
	y4 := Round(y0 + c * sin(b + 7*pi/4)); //Координаты правой верхней точки
        //Метод строящий фигуру по 4 точкам
        PaintBox1.Canvas.Polygon([Point(x1,y1),Point(x2,y2),
                                          Point(x3,y3),Point(x4,y4)]);
end;
 
 
procedure TForm1.BitBtn1Click(Sender: TObject);{Функция построения квадратов
      с заданными параметрами по нажатию кнопки }
begin
   l := d0;
	a := 0;
	 for i:=1 to 30 do //Цикл, рисующий 30 квадратов
         begin
 
                Square(l, a); //Вызов функции построения и отрисовки квадрата
                a := a + pi/19;//изменяет угол поворота следующих квадратов
                l:=l*sin(pi/3);//изменяет размер следующих квадратов
         end;
 
end;
 
end.
 

Прикрепленный файлРазмер
Spir_Kvadrat.zip638.24 кб