Как сделать программу для расчета и построения выкройки

Решил рассказать о программной части проекта расчета и построения чертежей (выкроек) и поделиться исходниками и примерами. Поэтому данная статья будет интересна web-программистам, а не любителям шитья.Предположим, что Вы знаете что такое web-сервер, PHP, графический формат SVG, и слышали что-то о аналитической геометрии.

Ищем и находим координаты

Итак для построения чертежа с использованием web-технологий необходимо разобраться с несколькими базовыми геометрическими задачами. Для облегчения будем использовать ряд готовых функций (библиотеку gfp.php).

Скачать архив с библиотекой и примерами.

Image Title

Функция midpoint() возвращает массив со значениями координаты середины отрезка.
Пример:
$F_Array=midpoint($x_a,$y_a,$x_b,$y_b);
$x_c=$F_Array[0];
$y_c=$F_Array[1];

Online пример:

Отрезок:

Точка1: X: Y:
Точка2: X: Y:


Image Title

Функция length_segment() возвращает значение длины отрезка.
Пример:
$L=length_segment($x_a,$y_a,$x_b,$y_b);

Online пример:

Отрезок:

Точка1: X: Y:
Точка2: X: Y:


Image Title

Функция point_on_distance() возвращает массив со значениями координаты точки на отрезке.
Пример:
$F_Array=point_on_distance($x_a,$y_a,$x_b,$y_b,$D);
$x_c=$F_Array[0];
$y_c=$F_Array[1];

Online пример:

Отрезок:

Точка1: X: Y:
Точка2: X: Y:
Растояние:


Image Title

Функция perpendicular() возвращает массив со значениями координаты перпендикуляра.
*Если необходимо построить перпендикуляр в другую сторону параметр $D указываем с отрицательным знаком -$D.
Пример:
$F_Array=perpendicular($x_a,$y_a,$x_b,$y_b,$D);
$x_c=$F_Array[0];
$y_c=$F_Array[1];

Online пример:

Отрезок:

Точка1: X: Y:
Точка2: X: Y:
Растояние:


Image Title

Функция perpendicular_base() возвращает массив со значениями координаты основания перпендикуляра.
Пример:
$F_Array=perpendicular_base($x_a,$y_a,$x_b,$y_b,$x_c,$y_c);
$x_d=$F_Array[0];
$y_d=$F_Array[1];

Online пример:

Отрезок:

Точка1: X: Y:
Точка2: X: Y:
Точка3: X: Y:


Image Title

Функция point_intersection() возвращает массив со значениями координаты точки пересечения отрезков.
Пример:
$F_Array=point_intersection($x_a,$y_a,$x_b,$y_b,$x_c,$y_c,$x_d,$y_d);
$x_f=$F_Array[0];
$y_f=$F_Array[1];

Online пример:

Отрезок1:
Точка1: X: Y:
Точка2: X: Y:

Отрезок2:

Точка3: X: Y:
Точка4: X: Y:


Image Title

Функция SegmentCircleIntersection() возвращает массив со значениями координат пересечения отрезка и окружности.
Пример:
$F_Array=SegmentCircleIntersection($x_a,$y_a,$x_b,$y_b,$x_c,$y_c,$R);
$x_d=$F_Array[0];
$y_d=$F_Array[1];
$x_f=$F_Array[2];
$y_f=$F_Array[3];

Online пример:

Отрезок1:
Точка1: X: Y:
Точка2: X: Y:

Окружность:

Центр: X: Y:
Радиус:


Image Title

Функция CircleIntersection() возвращает массив со значениями координат пересечения окружностей.
Пример:
$F_Array=CircleIntersection($x_c,$y_c,$R_c,$x_c1,$y_c1,$R_c1);
$x_d=$F_Array[0];
$y_d=$F_Array[1];
$x_f=$F_Array[2];
$y_f=$F_Array[3];

Online пример:

Окружность1:
Центр: X: Y:
Радиус:

Окружность2:

Центр: X: Y:
Радиус:


Построение чертежа шаг за шагом

Для примера возьмем чертеж выкройки картонной коробки треугольной формы. Размеры коробки задаются двумя значениями: ширины и высоты.

Image Title

Online пример:

Ширина:
Высота:


Шаг 1

Немного нужно поработать на бумаге карандашом.

На наброске будущей выкройки отмечаем ключевые точки. Желательно нумерацию точек выполнять в порядке построения (расчета) чертежа.

Image Title

Шаг 2

Определяем метод построения ключевых точек. Например точку 5 находим путем пересечения двух окружностей с радиусом равным ширине коробки и центрами в точках 3 и 4.

Image Title

Скосы уголков определяем фиксированными смещая углы на 5мм относительно временных точек 14а и 13а.

Image Title

В результате проделанной работы у Вас должна получиться схема на которой изображено Ваше понимание алгоритма построение чертежа. Это серьезно облегчит работу в будущем.

Image Title

Шаг 3

Делаем HTML форму для ввода параметров (см. box.html в архиве с примерами).

Шаг 4

Приступаем к написанию PHP скрипта и рассчитываем координаты точек используя вышеупомянутые функции (см. box.php в архиве с примерами).

Шаг 5

Чертим линии чертежа и оформляем чертеж.

На основе базовых элементов, изложенных в данной статье, Вы можете реализовывать собственные проекты построения чертежей онлайн.