# [vtk-developers] GSoC 2015-CAD Model and Simulation Spline Visualization

DEEVANKSHU GARG deevankshu096 at gmail.com
Tue Mar 24 07:11:31 EDT 2015

```Hello,

Sorry for that little break in between but I was really stuck in my
mid-semester exams.

About the project,now I am concentrating more on the implementation of the
IGA solver and post-processing techniques rather than understanding the IGA
solver.Basically, it would be up to the IGA solver to provide us with
Bezier patches.The data provided from the patches about the control points
and vertices of the curve will be stored in arrays using the
{vtkAbstractArray ,vtkDataArray,vtkDoubleArray} classes.And then composed
into datasets using the classes {vtkDataObject, vtkDataSet,
vtkUnstructuredGrid, vtkMultiBlockDataSet}.Then the main work starts.These
datsets will be processed by further filters present in the new mesh
rendering class.The main tasks in our hand are-interpolation,point
inversion and finally,tesselation and rendering.Here's a rough
implementation of the methods used to perform these tasks.

Interpolation-
-The algorithm here I am thinking of implementing here is DeBoor's
algorithm which is , of course ,a generalization of de casteljau's
algorithm for bezier curves.
-The main thing to do here is to write the knot insertion as a matrix
product operation done by DeBoor algorithm.We can then create these local
matrices that allow us to go from a B-spline representation to a Bernstein
definition (only a change of the polynomial basis).
-We can also use Oslo algorithm-a more general and complex insertion
algorithm permitting insertion of multiple knots into a B-spline knot
vector.

Point inversion-
For point inversion, we extract candidate Bézier subcurves based on the
strong convex hull property, and then find the approximate candidate points
and their corresponding parameter values already present in our stored
arrays. Finally, by comparing the distances between the test point and
candidate points, we can find the closest point. We improve its accuracy by
using the Newton-Raphson method.

Tesselation and Rendering-
I have always loathed the necessity of flow charts.I am attaching one here
too explaining the implementation of the tesselation method.A brief
-Tesselation Control Shader-Determines how much to tesselate,per-vertex
attributes,new patch vertices in xyz.
-Tesselation primitive generator-Tessellates the curve or surface into uvw
coordinates.
-Tesselation evaluation shader-Evaluate the curve or surface. Possibly
apply a displacement map.
After tesselation,finally rendering takes place which involves writing
interpolated values out at the nodes of the
simplices(lines,triangles,tetrahedra).

For the cutting part,I still have to see what changes will have to be made
to the already existing code.I will get to that soon.

Please tell me what you think about it.Would it be a good idea to divide
the whole timeline into these three parts or do you recommend something
else?

Bests,
Deevankshu Garg.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20150324/fc824baa/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tesselate.jpg
Type: image/jpeg
Size: 128573 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20150324/fc824baa/attachment-0001.jpg>
```