How to bulid a spiral?

Aruna Quadri has set up a new personal record for Nigeria and himself as he is ranked 21 in the end-of-the-year ranking.

The standing has been released on Thursday from the entire table tennis judgment body.

The Nigeria Table Tennis Federation, NTTF, in a statement on Friday, said Quadri has surpassed his finest of 25th at the ranking.

"It has helped him to reestablish Egypt's Omar Assar as the continent's best-ranked participant in the world.

"Despite not matching the record set by Assar since the primary African ranked among the top 20 in the world, Quadri finishes the year since the highest-ranked African at the most recent rating," the Nigerian sport ruling body said.

After successes over players in the Swedish Open, Quadri amassed 50 points to improve to be rated 21.

Prior to this ranking, the best attained by Quadri on earth rating was 25 and for this, he has set a record for also himself and Nigeria.

Assar's failure to become more active appears to have influenced his evaluation, as the Egyptian dropped from 20 to 26 in the latest ranking.

"The feat is commendable as Quadri continues to place Nigeria and Africa on the world map with his scintillating performance at global stage.

"We're excited about this latest ranking and this goes to show that our efforts are paying off and what we just need to do is to ensure we unearth and nurture more players such as Quadri.

"Additionally, the youthful players must take a cue from Quadri with regard to their diligence, professionalism and dedication to the transaction.

"I really hope and believe they may follow his footsteps in their career to make it on the top," the President of Nigeria Table Tennis Federation (NTTF), Ishaku Tikon, said.

Roman Lygin's picture

Hi Dan,

OCC does not have a helix as a natively supported type, so you have to approximate it with a B-Spline.
This post explains how you could do that -

Hope this helps. Good luck!

Dan Tony's picture


Mauro Mariotti's picture

Very interesting, Roman.

I suppose the same thing could be done with surfaces, but what about faces?
We used a modified ShapeCustom_BSplineRestriction, which wants a TopoDS_Shape, but can one make a TopoDS_Face with an adaptor?


Roman Lygin's picture

Hi Mauro,

True for surfaces - the blog post elaborates on that.

Not sure if I fully got the second part of the question, so let me offer two thoughts.

First, if you just need to represent a TopoDS_Face via an adaptor then you could use BRepAdaptor_Surface (which is an Adaptor3d_Surface subclass). Under the cover it effectively just uses the underlying Geom_Surface, so no real magic here.

Second, if you really want to modify the topology (e.g. solid), not just a single curve or surface then this would be closer to the so called 'space warping' - see enclosed images. That should also be possible with OCC. For that you would need to derive from BRepTools_Modification and redefine its virtual methods to implement warping.

Hope at least one of these corresponds to your inquiry. Please let me know otherwise.

Best regards,


Shing Liu's picture

Use the PCurve of a surface it is easy to construct a helix curve, you can refer to:

Lincoln Nxumalo's picture

Hi Roman,

Can the same approach in your blog be used for an arbitrary "equation-driven" curve? i.e. rather than having to create an adapter for each curve (helix etc.), have a single adapter which you supply parametric equation(s)?

Thanks in advance.



Roman Lygin's picture

Hi Lincoln,

The way you would design this is totally up to you. The only thing to provide is a subclass of Adaptor3d_Curve (or _Surface in a surface-related scenario). Whether you use multiple subsclasses (e.g. one for each curve type) or a single subclass with some evaluator inside is up to you. You just need to provide polymorphism - by redefining evaluation-related methods.

Hope this helps.


Lincoln Nxumalo's picture

Hi Roman,

Thank you for your response. I will give it a try.