
Closed
Posted
Paid on delivery
I need a compact, well-tested C++ library that takes an SVG path representing a single letter and returns the medial axis, the centre line, of every stroke, ready for LED module placement. The core of the job is the straight skeleton computation, and I want it built on CGAL's straight skeleton rather than a [login to view URL] Voronoi approach or any form of raster thinning. HOW IT SHOULD WORK - Parse the SVG outline, flatten curves to a configurable tolerance, and build the CGAL polygon with holes structure, then generate the interior straight skeleton. - From that skeleton, identify the centre line segments corresponding to each visible stroke. At corners, prune short or spurious branches. At junctions, split into distinct runs so no point is duplicated where strokes meet. - Along every resulting polyline, distribute points at a spacing supplied by the calling code, as a double in millimetres. Each point carries its local tangent so downstream code can orient an LED module without extra maths. DELIVERABLES 1. A C++17 library with minimal third party dependencies beyond CGAL and what CGAL itself requires. 2. A command line harness that reads an SVG file and a spacing value and prints point coordinates plus tangent vectors as JSON or plain text. Human readable either way. 3. Unit tests covering tricky glyphs, including joins, acute corners and holes, demonstrating clean pruning, correct splitting and zero duplicate placements. TUNABLE PARAMETERS The following must be exposed rather than hard coded, since they will need tuning against real output: - Branch pruning threshold, expressed as a fraction of local stroke width. Expect the useful range to sit near half the stroke width, not a token value. Anything much smaller leaves corner spurs in place. - Curve flattening tolerance. - Module spacing. ACCEPTANCE Primary test is visual. Output for a capital L, a capital M and an @ symbol, compared side by side against reference images I will supply to shortlisted candidates. The @ is included deliberately because it exercises curves, an inner spiral and a tail. Letters must look evenly laid out with no bunching or misaligned points at corners and junctions. Secondary checks: - Axis lies entirely inside the original outline. - No two generated points closer than 90 percent of the requested spacing. - Runtime under one second for a typical signage letter of roughly 1000 nodes. SCOPE Algorithm only. No GUI, no application boilerplate, no font loading, no cable routing, no power calculations. Just the geometry. HOW TO APPLY Please do not send a generic proposal. I will skip anything that does not answer this directly: In two or three sentences, how would you prevent the medial axis producing spurious branches at the corners of a letter?
Project ID: 40612237
93 proposals
Remote project
Active 5 days ago
Set your budget and timeframe
Get paid for your work
Outline your proposal
It's free to sign up and bid on jobs
93 freelancers are bidding on average $515 USD for this job

Hello, This is exactly the kind of computational geometry project I enjoy working on. I have strong experience with modern C++ (C++17/20), geometry processing, SVG parsing, and implementing robust algorithms using established libraries rather than raster-based approximations. About your question, After generating the straight skeleton, I would classify branches by their relationship to the local stroke width and neighbouring skeleton topology, pruning branches whose length falls below a configurable fraction of the local width. At junctions I would split the remaining skeleton into independent stroke runs and retain only the longest geometrically consistent paths, ensuring no duplicate placement points while preserving the true medial axis through corners and intersections. For this project I would build the complete pipeline around CGAL's straight skeleton implementation: parse and flatten SVG paths to a configurable tolerance, construct polygons with holes, generate the interior straight skeleton, then extract only the meaningful centre-line branches representing visible strokes. The library will expose the pruning threshold, flattening tolerance, and module spacing as configurable parameters, and will produce evenly spaced placement points with tangent vectors suitable for downstream LED orientation. I would be happy to discuss implementation details and review the supplied reference glyphs before development begins.
$515 USD in 7 days
8.1
8.1

Hi I am a software engineer with over 16 years of experience, including C++17, CGAL, SVG geometry, robust polygon processing, and production-quality algorithm libraries. To prevent spurious corner branches, I would score each skeleton branch using its geodesic length and local clearance-derived stroke width, then prune terminal branches below the configurable width-relative threshold. I would also preserve branches that participate in meaningful junctions or stroke continuity, so acute corners are cleaned without removing legitimate short strokes. After pruning, junction nodes would be split into ordered runs and placements globally checked to prevent duplicates or sub-90% spacing near joins. I can deliver the compact library, CLI harness, tunable parameters, and focused tests for L, M, @, holes, sharp corners, and junctions, with runtime and inside-outline validation. Please contact me to discuss details.
$725 USD in 12 days
7.6
7.6

No body will tell here their technical expertise publicly before Award. You can see the their profile and take decision... Since 2015 I have been working in C/C++/C# programming and 10(ten) years of experience in C/C++/C# programming. Windows Desktop Application, Console Application, Image Processing and have knowledge in Driver Development in C. Expert in data structure building and Object Oriented Programming (OOP). Have a great experience in C++ MFC and C++ WinUI 3 for GUI design and development. Also expert in C/C++ GPU CUDA programming. If you want a good delivery of the project, then send me a message, please.
$750 USD in 7 days
7.4
7.4

Hello, I trust you're doing well. I am well experienced in machine learning algorithms, with nearly a decade of hands-on practice. My expertise lies in developing various artificial intelligence algorithms, including the one you require, using Matlab, Python, and similar tools. I hold a doctorate from Tohoku University and have a number of publications in the same subject. My portfolio, which showcases my past work, is available for your review. Your project piqued my interest, and I would be delighted to be part of it. Let's connect to discuss in detail. Warm regards. please check my portfolio link: https://www.freelancer.com/u/sajjadtaghvaeifr
$700 USD in 7 days
7.8
7.8

Hi there, I will deliver the C++ library that converts SVG letter outlines into pruned medial axis polylines with spaced, tangent-carrying placement points, all built on CGAL's straight skeleton. For corner spurs: I will compare each skeleton branch length against the local stroke width (estimated from the skeleton face offset). Branches shorter than the tunable fraction of that width get pruned. This kills spurious spurs at acute corners while preserving real stroke axes, because genuine strokes always produce skeleton edges proportional to their width. On a similar CGAL skeleton project, filtering by the offset ratio instead of a fixed length eliminated false branches without manual tuning per glyph. Send me a message and we can go over the details. Best regards, Kamran
$275 USD in 10 days
6.3
6.3

Hello, I'll build a C++17 library around CGAL's Straight Skeleton to process SVG glyph outlines into clean medial-axis polylines. The pipeline will parse and flatten SVG paths, construct polygons with holes, generate the interior skeleton, prune artifacts, split junctions into independent stroke runs, and sample evenly spaced LED placement points with tangent vectors for downstream orientation. To prevent spurious branches at letter corners, I wouldn't rely on a fixed pruning distance. Instead, each terminal branch would be evaluated relative to its local stroke width, allowing short branches created by acute angles to be removed while preserving genuine stroke geometry. Junctions would then be analyzed topologically to split shared nodes into distinct polylines, eliminating duplicate placements and ensuring every sampled point belongs to a single continuous stroke. All pruning thresholds, flattening tolerance, and module spacing would remain configurable for tuning against your reference glyphs. The library will include a CLI harness, comprehensive unit tests covering acute corners, joins, holes, and complex glyphs such as '@', along with performance validation to ensure clean output and sub-second execution for typical signage letters. Kind regards, Gowtham
$500 USD in 4 days
6.1
6.1

Hello Sir/MAM 1: For the SVG inputs, should I assume a single continuous outline per stroke (possibly with holes), or can the letter include multiple disjoint paths that must be unioned before building the polygon-with-holes? 2: How should stroke width be estimated for the pruning threshold: derived from medial-distance along the straight skeleton, or provided/approximated from the SVG (e.g., offset/expansion)? I am a skilled full stack developer. Having rich experience in Java , C++ , C , C# , Python , Eclipse , Sql , Mysql , .Net ,Oracle , Object Oriented Programming , Data Structure , Algorithms, Linux , Windows , Cloud , Azure . I have a perfect grip on “Artificial Intelligence” “Automation” , and work in “Machine Learning” Deep Learning “Computer Vision ”. My track record as demonstrated in my 100% job completion and 5-star review rating showcases My ability to deliver exceptional results on time and with utmost quality I believe that my skill set makes me the ideal candidate for this project Please come on chat we will discuss more about this. Thank you
$251 USD in 1 day
6.3
6.3

I can help you build this C++17 LED placement engine using CGAL's straight skeleton data structures. To prevent the medial axis from producing spurious branches at the corners of a letter, I will traverse the generated skeletal graph to isolate terminal branches ending at the original boundary vertices. I will then determine the local stroke width by measuring the orthogonal distance from the branch's inner junction node to the polygon edge. If the length of the branch is less than your configured fraction of this local stroke width, it will be classified as a spur and pruned from the graph. For the rest of the pipeline, I will parse and flatten the SVG curves into a CGAL polygon with holes based on your flattening tolerance. Once the skeleton is computed, cleaned, and cleanly split at junctions to prevent node duplication, the remaining centerlines will be parameterized. I will step along these polylines at the exact requested millimeter spacing, compute the geometric tangent at each step, and output the resulting points and orientation vectors via the CLI in JSON format.
$750 USD in 7 days
5.9
5.9

Hi, I've worked with computational geometry in C++ and can build this using CGAL's Straight Skeleton as requested. The library will generate clean centerlines from SVG outlines, remove unwanted corner branches, split junctions correctly, and output evenly spaced LED points with tangent vectors. It will include a simple CLI tool and unit tests for the edge cases you mentioned. For the corner branches, I'd prune any short terminal branch based on the local stroke width rather than a fixed value. That keeps the true centerlines while getting rid of the small artifacts that usually appear around sharp corners. Thanks, and I'd be happy to look at the reference images before we begin.
$1,200 USD in 5 days
5.2
5.2

Hi, this is a tightly scoped computational-geometry problem, and the part that matters is not generating a skeleton with CGAL but turning it into clean stroke runs that survive corners, joins, and holes without duplicate placements. The real engineering risk is post-processing: if pruning and run-splitting are not tied to local stroke width and junction topology, the output will look plausible on simple glyphs and fail on letters like M and @. I usually structure this as four stages: SVG flattening to a controlled tolerance, polygon-with-holes construction, interior skeleton extraction, then a cleanup pass that classifies branches by local width context and junction degree before resampling to the requested spacing with tangents. That is the only reliable way to suppress corner spurs without damaging legitimate stroke centerlines. For your direct question: I would prevent spurious corner branches by scoring short branches relative to local stroke width, then pruning only after junction classification so real stroke continuations survive while acute-corner artifacts are removed. I would also split runs at multi-degree junctions before point placement so no endpoint gets sampled twice. If useful, I can sketch the branch-pruning and run-splitting rules against your L, M, and @ acceptance cases first. Thanks, Hercules
$500 USD in 7 days
5.1
5.1

My primary focus has been on developing clean, efficient, and well-tested software solutions throughout my career. I am confident that I am the right fit for your C++ Computational Geometry project as it aligns with my depth of skills and experience. From building scalable applications for routing systems to designing sophisticated algorithms for AI chatbots, I have gained expertise in delivering high-performance solutions targeted at specific challenges - just like this project. In terms of preventing spurious branches at corners, I would leverage my wealth of knowledge in designing intelligently-tuned algorithms. To achieve clean pruning and splitting, my method would be to implement a combination of a tunable branch pruning threshold, smart curve flattening tolerance, and module spacing - all variables that you've listed as tunable parameters. Additionally, I would complement the visual tests with comprehensive unit tests which cover tricky glyphs to ensure the highest level of accuracy with no bunching or misaligned points at corners and junctions
$500 USD in 7 days
4.8
4.8

Your corner question: Every vertex in CGAL's Straight_skeleton_2 carries its offset time — the collapse distance, which is a free local stroke-width measure. I'd walk the skeleton as a graph and iteratively remove leaf branches whose arc length is below your configured fraction of local stroke width (2× the offset time at the branch's junction vertex). Because the threshold scales with local geometry rather than being global, corner spurs vanish while genuine short strokes survive. The rest: SVG parse → adaptive curve flattening to tolerance → Polygon_with_holes_2 with orientation/validity repair (real SVG outlines are messy) → interior straight skeleton → prune → split into runs at junctions, each junction point owned by exactly one run → arc-length parameterised placement with per-point tangents. One caveat I'd flag upfront: the straight skeleton isn't the true medial axis, so curved strokes (your @ spiral) pick up small oscillations from flattening segments — I smooth the centreline post-extraction to keep spacing even. CLI harness emits JSON; unit tests cover joins, acute corners, and holes, asserting containment, ≥90% spacing, and zero duplicates. C++17, CGAL + header-only SVG parser only. ~2–3 weeks.
$500 USD in 7 days
4.6
4.6

Hello I understand your need for a compact C++17 library leveraging CGAL’s straight skeleton to extract clean medial axes from SVG letter paths, with careful pruning of spurious branches at corners. To prevent unwanted branches, I’d implement pruning based on local stroke width thresholds relative to branch length, combined with angle-based filtering to remove sharp, short offshoots that don’t contribute to the main skeleton. With extensive experience in computational geometry, CGAL, and SVG parsing, I’ll ensure curve flattening tolerance and spacing parameters are fully tunable. The output will include tangents per point for LED orientation, and rigorous unit tests will cover complex glyph features like holes and acute joins. Could you share your reference images so I can align pruning parameters precisely? Best regards, AbdulHamid
$250 USD in 3 days
4.7
4.7

Hello, I can develop a compact, well tested C++ library that will take an SVG path representing a single letter and return the medial axis, the centre line, of every stroke, ready for LED module placement. I will apply branch pruning, boundary smoothing, or angle threshold filtering to prevent the medial axis from producing spurious branches at the corner of a letter. Message me to discuss more details about the project. I am looking forward to working with you, Fahad.
$250 USD in 2 days
4.6
4.6

Hello Dear! Greetings from Toriqul Global Solutions! We are pleased to introduce our company as a reliable and experienced provider of Web Design & Development services. Founded and led by Engineer Toriqul Islam, a B.Sc. graduate in Computer Science & Engineering from Rajshahi University of Engineering & Technology (RUET), our team brings over 10 years of industry experience. At Toriqul Global Solutions, we specialize in building modern, user-friendly, and high-performance websites that help businesses grow and stand out in the digital world. Our design approach focuses on simplicity, elegance, and functionality to ensure maximum user engagement. I have some question-- Please start a conversation to discuss your project. Technologies We Use: Custom Websites Development Using ======>Full Stack Development. 1. HTML5 2. CSS3 3. Bootstrap4 4. jQuery 5. JavaScript 6. Angular JS 7. React JS 8. Node JS 9. WordPress 10. PHP 11. Ruby on Rails 12. MYSQL 13. Laravel 14. .Net 15. CodeIgniter 16. React Native 17. SQL / MySQL 18. Mobile app development 19. Python 20. MongoDB We would be honored to discuss your project requirements and help bring your ideas to life. Thank you for your time and consideration. Warm Regards, Toriqul Global Solutions
$500 USD in 7 days
4.5
4.5

⭐⭐⭐Hi there ⭐⭐⭐ As a skilled engineer, I can do your project perfect. Please check my reviews to verify my skills. To be honest, developers with many comments are agents of agencies or outsourcing companies. Therefore, I believe I am the most suitable candidate for your project. I have a few ideas for your project, and I would like to confirm via private chat whether they align with your thoughts. Warm Regards, Ruslan
$500 USD in 7 days
4.2
4.2

As a software engineer with a strong background in C++ programming, I can confidently say that I am the right person for your project. I have extensive experience with CGAL, and my expertise will greatly benefit the development of your straight skeleton placement engine. I understand the importance of building clean code with minimal third-party dependencies, which aligns perfectly with your project requirements. In addition, my knowledge of C++17 will ensure that the library is up-to-date and optimized for maximum performance. Over the years, my work has revolved around designing and building reliable algorithms that provide accurate results. Hence, avoiding any spurious branches at letter corners will be a priority in the implementation of your project. My past experience in handling intricate geometrical problems employing computational geometry concepts will guarantee this is achieved effectively. Moreover, my passion to go deep into the problem domain enables me to consistently deliver high-quality solutions. Given this opportunity, I will fully commit myself to create a compact and well-tested library that not only meets but exceeds your expectations. Rest assured that every critical aspect - from curve flattening tolerance to branch pruning threshold - will be carefully tuned and openly editable to accommodate your evolving needs throughout the project lifecycle. Together, we can create something exceptional!
$500 USD in 7 days
4.5
4.5

Interesting project, We will build the C++17 library on CGAL's straight skeleton, delivering stroke centerline extraction, pruning, splitting, and spaced point placement with tangents. For spurious corner branches: we will measure each skeleton edge against the local stroke width (the perpendicular distance to the boundary at that point). Branches shorter than a tunable fraction of that width get pruned. This kills corner spurs reliably because they are always shallow relative to stroke thickness, while true medial segments run deep into the glyph interior. A couple of quick things to confirm: 1) Should the SVG parser handle compound paths (multiple subpaths in one element), or will each letter arrive as a single isolated path? Ready to start whenever you are. Faizan
$279 USD in 10 days
3.8
3.8

Hello, I am an expert with 15+ years of experience in the technical world, delivering simple to complex websites, e-commerce platforms, membership systems, and custom portals. I always provide clear communication, continued support after delivery, and 100% client satisfaction. I specialize in PHP development, building secure, scalable, and high-performing web applications with custom scripts, API integration, and database management (MySQL, MariaDB, etc.). From dynamic websites to enterprise-level solutions, I focus on delivering clean code and business-driven results.
$250 USD in 7 days
3.9
3.9

How do we ensure the medial axis remains clean and precise? By applying a robust pruning method that assesses branch lengths relative to local stroke width, I can effectively eliminate spurious branches while maintaining the integrity of the letter’s shape. With a solid background in C++ development and extensive experience using CGAL for geometric computations, I can build the library you envision. My approach will allow configurable parameters for branch pruning thresholds and curve flattening tolerances, resulting in precise and reliable SVG path processing. I also ensure generating both the straight skeleton and the corresponding center lines to meet your specifications. Along with a thorough set of unit tests, I’ll deliver a user-friendly command line harness for easy SVG handling. I’m excited to bring my expertise to this project and deliver quality results quickly. Let’s make your letter outlines shine!
$300 USD in 6 days
3.6
3.6

Johannesburg, South Africa
Payment method verified
Member since Feb 10, 2020
$10-30 USD
$30-250 USD
$15-25 USD / hour
₹1500-12500 INR
$250-750 USD
₹1500-12500 INR
₹37500-75000 INR
$3000-5000 USD
₹600-1500 INR
$30-250 USD
₹1500-12500 INR
₹400-750 INR / hour
$25-50 USD / hour
₹37500-75000 INR
₹600-1500 INR
$10-30 USD
₹100-400 INR / hour
$250-750 USD
min $50 USD / hour
$250-750 USD
$10-30 USD
$250-750 USD