Ставки скрыты
Ставки пока отсутствуют
Ставки скрыты
Ставки скрыты
-
Богдан Ткачук 21 январяimport numpy as np
from scipy.spatial import Voronoi
import svgwrite
import random
def draw_puzzle_path(dwg, p1, p2, thickness=0.3):
"""Малює витончений замок пазла з плавними переходами"""
p1 = np.array(p1)
p2 = np.array(p2)
dist = np.linalg.norm(p2 - p1)
# Якщо лінія занадто коротка, малюємо просто пряму
if dist < 5:
dwg.add(dwg.line(start=p1, end=p2, stroke='black', stroke_width=thickness))
return
v = (p2 - p1) / dist
n = np.array([-v[1], v[0]]) # Перпендикуляр
side = random.choice([-1, 1])
# Пропорції замка (можна змінювати для дизайну)
base_w = 0.35 # Де починається звуження (35% від довжини)
neck_w = 0.10 # Ширина вузької частини
head_w = 0.25 # Ширина самої "головки"
head_h = 0.20 # Висота вильоту вушка
# Ключові точки вздовж лінії
m = (p1 + p2) / 2
q1 = p1 + v * dist * (0.5 - base_w/2)
q2 = p1 + v * dist * (0.5 + base_w/2)
# Точки вигину вушка
h1 = m - v * (dist * neck_w) + n * (dist * head_h * side)
h2 = m + v * (dist * neck_w) + n * (dist * head_h * side)
# Формування кривої: Пряма -> Плавний вхід -> Головка -> Плавний вихід -> Пряма
path_data = f"M {p1[0]},{p1[1]} L {q1[0]},{q1[1]} "
path_data += f"C {q1[0]+n[0]*2},{q1[1]+n[1]*2} {h1[0]},{h1[1]} {h1[0]},{h1[1]} "
path_data += f"S {q2[0]+n[0]*2},{q2[1]+n[1]*2} {q2[0]},{q2[1]} "
path_data += f"L {p2[0]},{p2[1]}"
dwg.add(dwg.path(d=path_data, stroke='black', fill='none', stroke_width=thickness))
def generate_final_puzzle(filename, width=300, height=300, n_pieces=110):
dwg = svgwrite.Drawing(filename, size=(f"{width}mm", f"{height}mm"), viewBox=f"0 0 {width} {height}")
# Генерація випадкових центрів деталей
points = np.column_stack((
np.random.uniform(2, width-2, n_pieces),
np.random.uniform(2, height-2, n_pieces)
))
# Додавання технічних точок за межами для гарних країв
margin = 100
outer_points = [
[-margin, -margin], [width+margin, -margin],
[-margin, height+margin], [width+margin, height+margin],
[width/2, -margin], [width/2, height+margin],
[-margin, height/2], [width+margin, height/2]
]
points = np.append(points, outer_points, axis=0)
vor = Voronoi(points)
# Малювання ліній
for ridge in vor.ridge_vertices:
if -1 not in ridge:
v1 = vor.vertices[ridge[0]]
v2 = vor.vertices[ridge[1]]
# Малюємо тільки те, що потрапляє в робочу область
if (0 <= v1[0] <= width and 0 <= v1[1] <= height) and \
(0 <= v2[0] <= width and 0 <= v2[1] <= height):
draw_puzzle_path(dwg, v1, v2)
# Зовнішня рамка
dwg.add(dwg.rect(insert=(0,0), size=(width, height), stroke='black', fill='none', stroke_width=0.5))
dwg.save()
if __name__ == "__main__":
generate_final_puzzle("puzzle_layout_v2.svg")
print("Файл 'puzzle_layout_v2.svg' успішно згенеровано.")
Актуальные фриланс-проекты в категории C и C++
Разработка кроссплатформенного десктопного приложения для управления персональными задачами и проектами (Task Manager). Нужно написать саму программу и отчет диплома. Нужно успеть до 3 августа
Что нужно сделать: разработать EXE-приложение на C++; создать современный графический интерфейс в соответствии с моим дизайном; реализовать логику работы программы; обеспечить стабильную работу на Windows 10 и Windows 11; предоставить исходный код Visual Studio (.sln, .vcxproj). У меня уже есть: дизайн интерфейса (скриншоты прикладываю); концепция работы программы; перечень функций, который обсудим с исполнителем. Требования к исполнителю: уверенное знание C++; опыт работы в Microsoft Visual Studio; опыт разработки Windows Desktop-приложений; аккуратный и читаемый код; готовность поддерживать связь во время разработки. Пожалуйста, в ответе отправьте: примеры ваших EXE-программ; опыт работы с C++; ориентировочный срок выполнения; стоимость работы.
Добрый день Необходимо создать модуль, который будет работать с БД Firebird на C++ для продажи товаров. Есть примеры готовых решений и описание функционала модуля. Основные функции: авторизация, выбор товара на экране из групп/подгрупп, переход в корзину, оплата картой и печать чека. Программа должна работать на Windows 10 и выше, использовать существующую базу данных.
Требуется разработать патч для драйвера видеокарты, расширяющий возможности управления графическим адаптером за счёт добавления дополнительных пользовательских настроек. Патч должен интегрироваться в существующую архитектуру драйвера без нарушения его основной функциональности и обеспечивать совместимость с поддерживаемыми версиями операционной системы. Основной целью является предоставление более гибкого доступа к параметрам, которые недоступны в стандартной панели управления драйвера, с возможностью их изменения через пользовательский интерфейс или программный API. Патч должен предусматривать модульную структуру, позволяющую в дальнейшем добавлять новые параметры без существенной переработки кода. Необходимо обеспечить корректную обработку ошибок, журналирование изменений, возможность отката настроек к значениям по умолчанию, а также сохранение совместимости с будущими обновлениями драйвера, насколько это возможно. Решение должно сопровождаться технической документацией с описанием архитектуры, реализованных возможностей, ограничений и рекомендаций по тестированию.
Автоматизация на сайте - echerha
Мы являемся крупной логистической компанией, которая имеет собственный экспорт. В нашем распоряжении большой автопарк, и мы постоянно отправляем собственные транспортные средства на экспорт в страны Европы.Описание Сайт: https://echerha.gov.ua/ На этом сайте мы ставим наши автомобили в электронную очередь для пересечения государственной границы. Во время регистрации необходимо ввести следующие данные: имя и фамилия водителя; номер заграничного паспорта; электронный адрес (email); номер телефона логиста для получения уведомлений; тип транспортного средства (грузовой); название производителя автомобиля; государственный номерной знак тягача; государственный номерной знак прицепа; номер таможенной декларации. Для каждого автомобиля заранее определен конкретный день и время пересечения границы. Например, автомобиль должен пройти пункт пропуска «Рава-Русская» в понедельник в 10:00.Наша проблема - Очередь на сайте https://echerha.gov.ua/ движется непредсказуемо. - Например, сегодня пятница, а автомобиль должен пересечь границу в понедельник в 10:00. - Мы не знаем, когда именно начнет продвигаться очередь. Это может произойти в пятницу вечером, в любое время в субботу или воскресенье, рано утром, днем или поздно вечером. - Когда очередь начинает двигаться, это сразу видно на сайте. Иногда всего за несколько минут она может продвинуться с пятницы до понедельника или даже до вторника. - Из-за этого логисты вынуждены постоянно контролировать мобильное приложение или вебсайт, чтобы не пропустить момент, когда очередь дойдет до нужной даты и времени. Если этот момент будет упущен, мы физически не успеваем поставить автомобиль в очередь на нужный временной слот.Задача - После внесения данных о автомобиле (например, в таблицу или другой интерфейс, в зависимости от реализации программиста) система должна автоматически отслеживать движение очереди. - Когда очередь дойдет до заранее определенных даты и времени, система должна автоматически заполнить необходимые данные и поставить автомобиль в очередь без участия логиста.