JCSG icon indicating copy to clipboard operation
JCSG copied to clipboard

[FEATURE ADD] Add a bezier extrude

Open madhephaestus opened this issue 7 years ago • 4 comments

I wrote a Bezier extursion, that lets you extrude along a bezier curve for making complex geometry, would you be interested in me pulling it out to make a clean PR for your upstream system?

It is a lot of work to pull it out to make the PR work, so ill only do it if you are interested in merging that feature (without having to pull all the rest of stuff iv been working on)

Here is the function i would be adding (along with its helper functions) https://github.com/NeuronRobotics/JCSG/blob/master/src/main/java/eu/mihosoft/vrl/v3d/Extrude.java#L365

madhephaestus avatar Dec 01 '16 16:12 madhephaestus

Bezier extrusion is a very nice feature! Currently, it is very important to keep the API in its current state since we are working on a different CSG renderer that might reuse the current API. What changes would you introduce? Would the API changes involve other classes, in addition to the Extrude class?

miho avatar Dec 01 '16 18:12 miho

I can make it clean room, but it would be convenient if i can add my helper functions to CSG such as:

https://github.com/NeuronRobotics/JCSG/blob/master/src/main/java/eu/mihosoft/vrl/v3d/CSG.java#L1592

and

https://github.com/NeuronRobotics/JCSG/blob/master/src/main/java/eu/mihosoft/vrl/v3d/CSG.java#L288

I generally have not changed any of your API's only extended them with cleaner syntax for user level code by adding pass through helper functions that are syntactically simpler and consistent. I have been doing a lot of development on this API and always am careful to make it so it merges with your upstream. I would have to make a 3rd fork, and in there hand tease out changes, then merge them into my system and yours in turn. I think thats likely worth the effort if we can agree on feature add paths and a development pipeline.

madhephaestus avatar Dec 01 '16 19:12 madhephaestus

So heres an idea, any chance you can check your projects that use JCSG to see if they work with my changes by simply changing the build.gradle to import:

compile "com.neuronrobotics:JavaCad:0.8.2"

and check if it breaks your builds. If it works, then i have not changed any API that you are using.

madhephaestus avatar Dec 14 '16 16:12 madhephaestus

I have started to build up clean-room PR's for this, at this time this issue is blocked by #31 and PR #33

madhephaestus avatar Dec 14 '16 20:12 madhephaestus