This looks pretty great, I'll play with it. Can you explain this from the Readme?
Unfortunately, it's difficult to compute the joint formed at the boundaries of these combined shapes, so sufficient texturing is needed on the original solids for a decent result.
What is hard about computing the joint? Why does texturing help? My question is from a perspective of curious ignorance, not arrogance (i.e. me saying "don't be silly, it's easy.")
The texturing just helps your eye "fill in the gaps." As far as difficulty, I just don't know of a general way to do it. The only thing that comes to mind is some sort of iterative approximation or something.
If I understand correctly, we want to compute co-edges here. I believe there are algorithms to do this, I know SketchUp has this feature [1]; also Gmsh [2]; and I remember seeing Blender plugins that do the same thing (can't seem to find them now...) (edit: Actually Blender does this without plugins: "Join" 2 intersecting objects, use the "Intersect" feature, and it will generate and select the exact co-edges.)
unless you're dealing with sufficiently large integers computing the intersect between a line and a plane with any robustness is impossible on modern computers with float or double. sometimes when you intersect meshes that have nearly coplanar faces, the intersection might shoot vertices near some infinity because of division inaccuracy.
If you run into limitations with the Cairo binding you're using, I'd like to shamelessly plug the one I wrote, which covers much more of the Cairo API: https://godoc.org/github.com/martine/gocairo/cairo
brew install cairo pkg-config
go get github.com/ungerik/go-cairo
Ubuntu
sudo apt-get install libcairo2-dev pkg-config
go get github.com/ungerik/go-cairo
... I always think there should be a "default" instruction page linked to somewhere that explains what brew and apt-get are (and other things). I mean, I know you can't be expected to go to the lengths of explaining this stuff for every single project, but this is the kind of thing that will inspire the next generation. So maybe we, as a community could come up with a, "you don't know what this is? look here..." kind of page that people can put on their github projects.
Wholeheartedly agreed. When I was learning about OSS, I had no idea what a "pull request" was but people kept mentioning it. A standard guide on how OSS works with Github, Linux, and related tools would be immensely helpful in welcoming new developers into the OSS world.
I completely agree. If you were linked to a github page out of the blue or for the first time its incredibly intimidating. Most notably is the first text you read on the page isn't a title, but a list of folders/files. Why not put the dam title and description at the top?
One line of, "Hows this work?" would help a lot of people. I took the git lesson from code academy and have messed around in ubuntu but am still very intimidated by github and the brutal installation instructions every project has (or doesn't have).
That's pretty cool. A commandline app that just takes an .OBJ file and renders it to an .SVG would actually be pretty useful (viewport position / orientation would of course need to be options as well).
Hughes Hoppe has done a variety of research that depends on finding interesting parameterizations of meshes. His papers aren't exactly lightweight on the math, but you may find some ideas there:
if you check out the CGAL library, they have code that solves surface parameterization problems. the least squares conformal mapping is pretty nice for creating uv maps.
I thought I remembered seeing your graphics work before in go posted on HN. Yep: https://github.com/fogleman/pt Is this an evolution of that work, at least in terms of the learning process?
It might be an interesting idea to use similar algorithms to create vector plots in scientific PDF documents, instead of having embedded raster images that don't scale well.
Same here - Nice job.
Craft (Minecraft in C / opengl) is a really cool project. I didn't realize it was the same person until I went back through the github repo just now.
That's pretty rad! I wonder what it would like to bake pre-rendered color information onto the vector geometry. Even without textures on the models some nice ambient occlusion could look cool.
Unfortunately, it's difficult to compute the joint formed at the boundaries of these combined shapes, so sufficient texturing is needed on the original solids for a decent result.
What is hard about computing the joint? Why does texturing help? My question is from a perspective of curious ignorance, not arrogance (i.e. me saying "don't be silly, it's easy.")