What is Picture to People ?
"Picture to People" (P2P) is a huge Computer Graphics project. It was started to create new softwares able to make 2D drawing, 3D rendering, vexel drawing, text effects, photo effects, image filtering and other complex Computer Graphics operations. It has been made from scratch, including its low level Computer Graphics libraries like Maccala. Nowadays, most final features produced for this project are released as free online tools available from its official website. This blog talks about Computer Graphics, mainly concerning Picture to People development.
Wednesday, April 30, 2008
Now the simplifying algorithm I have created is perfect. Well ... at least I couldn't find a counter example in my massive and complex tests.
Self-crossing shapes are a nightmare for a lot of vector based algorithms. Now, after hard work, I can transform any self-crossing shape in a set of non self-crossing shapes keeping the original math properties.
The example is simple on purpose. It shows a very clear case of simplification.
First image shows the original polygon. Second image shows the result after using my algorithm. Each resulting polygon has a different border color.
Monday, April 28, 2008
Now I can make a curve based on a set of line segments.
The emphasis is on curve continuity and format as closer as possible to original poly line.
The number of tools depending on a strong implementation of curves is uncountable. I'm trying to construct strong foundations for my software.
Friday, April 25, 2008
Now I can join a group of points in a continuous way, no mater how strange this points are.
I'm improving my dealing about splines. I need more power to achieve another desired tool: one to transform bitmaps in vector based objects.
More about curves soon.
Monday, April 21, 2008
I'm doing some tests about paths, warping, vector oriented bitmap filling and so on.
In some cases my anti-aliasing techniques are weak for a perfect result. I will try to create another approach in future. I will return to object simplifying problem soon.
Picture shows a kind of filling using a bitmap and based on a 100 points star.
Saturday, April 19, 2008
There is just one polygon in picture.
Before simplification: 1 polygon with 43 sides; 346 self-crossing points.
After simplification: 62 calculated polygons; zero self-crossing points.
But it's far from the end of work ... The new polygons need a complex priority engine to keep together the properties from the original polygon.
I'm trying to find a solution.
Thursday, April 17, 2008
The picture shows only one polygon. It has 14 sides and 34 self-intersection points. I'm developing an algorithm to process this kind of very complex and degenerated object and transform it in a group of simpler shapes.
The big point is: the group of calculated objects need to keep the topological properties of the original one.
When I have this kind of tool, I can make indirectly all set operations over self-intersection objects.
In the screenshot, different colors illustrate a method for degeneration reduction been tested.
Hard work these days.
Monday, April 14, 2008
I have just removed some minor bugs from my renderer concerning drawing of thick lines.
Picture shows a shape correctly drawn with a thick blue border.
Like I'm dealing with this part of the renderer, I will prepare some new functionalities that can be useful when thick lines are drawn.
Saturday, April 12, 2008
I'm trying to make my set operations work over polygons with self-intersections. It's has been a hard work, cause I lost a lot of tricks/assumptions used in my old algorithms.
It's possible to make it using pixel combinations among the drawn polygons and after making some kind of bitmap vectorization, but I don't want it. I want to make it just by euclidean geometry.
I'm making my model, my algorithm ... Sometimes it's hard even to make tests. Let's play a little bit more.
PS: image was drawn using Windows GDI.
Wednesday, April 9, 2008
Sometimes is hard to make algorithms to satisfy the very much generic situations. I intend reformulate my data structures and algorithms to allow set operations over polygons, curves, multi-curves and shapes.
Now is time to think about that, cause I'm going to project and code multi-curves.
My algorithms for set operations work well for polygons (the orthodox case). The picture shows in thick blue the difference between two very weird polygons.
Anyway, I still need to solve a very degenerated case for polygons before try to generalize for more complex objects: polygons with self-intersections. Let's work.
PS: this screenshot was drawn using Windows GDI.
Monday, April 7, 2008
I'm improving my sources concerning curves. Considering their math properties, splines are the classical choice.
I have been trying to do a very robust and modularized implementation. I'm preparing an infrastructure that will be used in future for interactive drawing of curves by the final user.
Interactive drawing is a very interesting challenge that asks special planning, cause it can require immediate answers for nontrivial operations.
The picture shows a multi-curve created by "self point parametrization". A curve can be created by "control point parametrization" as well.