Introduction

CGLibPy

Hello All welcome to CGLibPy (Computational Geometry Library – Python) home page! CGLibPy is a Computational Geometry Library written in Python. Please visit CGLibPy Github Repository . I am a Software Developer by profession. I am a Mechanical Engineer and like Maths. I love Computational Geometry (that’s why I am still learning it!) and Development. I have created this library for STUDY purpose only!

I know there are other CAD libraries available online but, I come from a unique background with lots of experience in various fields such as CAD/CAM, CFD, FEA, Scientific Visualization and Virtual Reality/Gaming. Hence, I see a Computational Geometry library in different light. Being a developer I felt Python is the best language to develop this Computational Geometry library.

I have created this website as dedicated website for this particular library. I hope it will always be a work in progress because, everyday I learn something new. I will try to keep it as updated as possible.

I have chosen Python as my primary language of development. Basic reason for choosing Python for this library is the speed with which a code can be written in Python is way more than other languages, it is free to use, easy to deploy and can be scaled to be used in a web application (this will be a dream come true if I will be able to develop it. Of course it will take time and may be your help as well). Please visit my website to learn more about how to setup our machine for Python Development.

I want to make this a Public library so that, if you find this library interesting and worth your time, you can also collaborate with me!

Looking forward for your help, collaboration and suggestions..

Introduction

Computational Geometry is branch of computer science that deals with algorithms which can be expressed in terms of geometry. Computational Geometry evolved during 1970’s when computers started becoming more and more powerful. As computers evolved the needs of industries grew. With advancements in CAD/CAM (Computer Aided Design and Manufacturing) the designs became more complex and and problems more elaborate to solve. As part of evolution, programmers started applying mathematical theories in programming. This is how modern Computational Geometry was born!

Today, Computational Geometry can be found in CAD/CAM as well as in, PCB designs, GIS (Geographic Information System), Robotics, Graphic Visualizations, Computer Vision etc. Real world problems deal with huge data. Smaller enhancements for efficiency can lower the computation times by hours. For the same reason it is one of the most popular and fundamental computation techniques. Computational Geometry has two main branches, Combinational Computational Geometry and Numerical Computational Geometry.

Combinational Computational Geometry deals with geometrical entities and representing them in a certain way to solve a given problem. For example, let’s imagine there are several pillars showing boundary of a land as shown in the image below. Now, we want to create a fence of barb wire around these pillars. The question here is what will the length of wire required to wrap all the pillars? We simply use a Combinational Computational Geometry technique called Convex Hull! There are many such examples like shortest path problem, closest pair of houses etc.

Wrapping Barb Wire around Pillars using Convex Hull Technique

Numerical Computational Geometry on the other hand deals with mathematical representation of certain geometries which are more complex. Best example where Numerical Computational Geometry is used is freeform modeling. It is a branch of CAD/CAM where Bezier/Spline curves and surfaces. These curves can only be represented mathematical using equations.

Nurbs Surface (Source : Wikipedia)

In this series of posts I will be targeting some of the most popular Computational Geometry Algorithms in Python including Basics of Computational Geometry. So sit tight and Let’s Have Fun with CG! I have created a Python based Git library CGLibPy . I am going to have some snippets from this library. (Please note, target of this website is not about Learning Python. Please visit my Python Tutorials page to learn about setting up your machine for Python development). Click on Documentation to get started !