Oferty ukryte
Aktualnie brak ofert
Oferty ukryte
Oferty ukryte
-
Bohdan Tkachuk 21 styczniaimport 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' успішно згенеровано.")
Aktualne zlecenia dla freelancerów w kategorii C i C++
Opracowanie aplikacji desktopowej na wiele platform do zarządzania osobistymi zadaniami i projektami (Menadżer Zadań). Należy napisać samą program oraz raport dyplomowy. Należy zdążyć do 3 sierpnia
Co należy zrobić: opracować aplikację EXE w C++; stworzyć nowoczesny interfejs graficzny zgodnie z moim projektem; zrealizować logikę działania programu; zapewnić stabilne działanie na Windows 10 i Windows 11; udostępnić kod źródłowy Visual Studio (.sln, .vcxproj). Już mam: projekt interfejsu (załączam zrzuty ekranu); koncept działania programu; listę funkcji, którą omówimy z wykonawcą. Wymagania dla wykonawcy: pewna znajomość C++; doświadczenie w pracy z Microsoft Visual Studio; doświadczenie w tworzeniu aplikacji Windows Desktop; staranny i czytelny kod; gotowość do utrzymywania kontaktu podczas rozwoju. Proszę, w odpowiedzi prześlij: przykłady twoich programów EXE; doświadczenie w pracy z C++; orientacyjny czas realizacji; koszt pracy.
Dzień dobry Należy stworzyć moduł, który będzie działał z bazą danych Firebird w C++ do sprzedaży towarów. Są przykłady gotowych rozwiązań oraz opis funkcjonalności modułu. Główne funkcje: autoryzacja, wybór towaru na ekranie z grup/podgrup, przejście do koszyka, płatność kartą oraz druk paragonu. Program powinien działać na Windows 10 i wyżej, korzystać z istniejącej bazy danych.
Wymagana jest разработка łatki do sterownika karty graficznej, rozszerzającej możliwości zarządzania adapterem graficznym poprzez dodanie dodatkowych ustawień użytkownika. Łatka powinna integrować się z istniejącą architekturą sterownika bez naruszania jego podstawowej funkcjonalności i zapewniać zgodność z obsługiwanymi wersjami systemu operacyjnego. Głównym celem jest zapewnienie bardziej elastycznego dostępu do parametrów, które są niedostępne w standardowej panelu sterowania, z możliwością ich zmiany przez interfejs użytkownika lub programowe API. Łatka powinna przewidywać modułową strukturę, umożliwiającą w przyszłości dodawanie nowych parametrów bez istotnej przeróbki kodu. Należy zapewnić poprawne przetwarzanie błędów, rejestrowanie zmian, możliwość przywrócenia ustawień do wartości domyślnych, a także zachowanie zgodności z przyszłymi aktualizacjami sterownika, o ile to możliwe. Rozwiązanie powinno być dostarczone z dokumentacją techniczną opisującą architekturę, zrealizowane możliwości, ograniczenia oraz zalecenia dotyczące testowania.
Jesteśmy dużą firmą logistyczną, która ma własny eksport. Dysponujemy dużym parkiem samochodowym i nieustannie wysyłamy nasze pojazdy na eksport do krajów Europy.Opis Strona: https://echerha.gov.ua/ Na tej stronie umieszczamy nasze samochody w elektronicznej kolejce do przekroczenia granicy państwowej. Podczas rejestracji należy wprowadzić następujące dane: imię i nazwisko kierowcy; numer paszportu zagranicznego; adres e-mail; numer telefonu logisty do otrzymywania powiadomień; typ pojazdu (ciężarowy); nazwa producenta samochodu; numer rejestracyjny ciągnika; numer rejestracyjny przyczepy; numer deklaracji celnej. Dla każdego samochodu z góry określono konkretny dzień i godzinę przekroczenia granicy. Na przykład, samochód musi przejść przez punkt kontrolny „Rawa-Ruska” w poniedziałek o 10:00.Nasz problem - Kolejka na stronie https://echerha.gov.ua/ porusza się nieprzewidywalnie. - Na przykład, dzisiaj jest piątek, a samochód musi przekroczyć granicę w poniedziałek o 10:00. - Nie wiemy, kiedy dokładnie kolejka zacznie się posuwać. Może to nastąpić w piątek wieczorem, w dowolnym momencie w sobotę lub niedzielę, wcześnie rano, w ciągu dnia lub późno wieczorem. - Kiedy kolejka zaczyna się poruszać, jest to od razu widoczne na stronie. Czasami w ciągu zaledwie kilku minut może przesunąć się z piątku na poniedziałek lub nawet na wtorek. - Z tego powodu logistycy muszą nieustannie kontrolować aplikację mobilną lub stronę internetową, aby nie przegapić momentu, gdy kolejka dojdzie do potrzebnej daty i godziny. Jeśli ten moment zostanie utracony, fizycznie nie zdążamy umieścić samochodu w kolejce na odpowiedni slot czasowy.Zadanie - Po wprowadzeniu danych o samochodzie (na przykład do tabeli lub innego interfejsu, w zależności od realizacji programisty) system powinien automatycznie śledzić ruch kolejki. - Kiedy kolejka dojdzie do wcześniej określonej daty i godziny, system powinien automatycznie wypełnić wymagane dane i umieścić samochód w kolejce bez udziału logisty.