<div dir="ltr">Hi Dr. Thomposon,<div><br></div><div>I have made it support 3D ellipse with function</div><div> </div><div><div>void vtkPatchInterpolation::GenerateEllipseCtrlPt(</div><div>  vtkDataArray* P_i,</div><div>  vtkVector3d center, vtkVector3d majorAxis, vtkVector3d minorAxis,</div><div>  int quadrant)</div></div><div><br></div><div>As you can see in the python test, I call this function 4 times for each quadrant to generate the entire ellipse. Since we need to support multiple patches, I think it's better to define a new dataset class for bezier patches as you mentioned before about<span style="font-size:12.8000001907349px">  creating a new vtkControlPoints class that inherits from vtkPoints and allows for an extra coordinate.</span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">Another question is that currently the domain of parameter coordinate is [0, 1] for each patch. Do you think it's better to make the domain continuously, namely [0, 0.25] for the first quadrant, [0.25, 0.75] for the second quadrant, etc?</span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">Best,</span></div><div><span style="font-size:12.8000001907349px">Lin</span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 4, 2015 at 10:38 AM, David Thompson <span dir="ltr"><<a href="mailto:david.thompson@kitware.com" target="_blank">david.thompson@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Lin,<br>
<span class=""><br>
> I have written a helper function to generate control points for arbitrary ellipse and modified the PatchInterpolation.py test to image test which contains line, circle and ellipse.<br>
<br>
</span>Excellent! I will do a detailed review of the changes this evening. At a quick glance, some things that would be nice are:<br>
<br>
1. Being able to specify ellipses in 3D with vectors (see Common/DataModel/vtkVector.h) representing the center, major axis, and minor axis (both direction and length). The minor axis would have to be orthogonalized using Gram-Shmidt orthonormalization ( <a href="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process" target="_blank">https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process</a> ).<br>
<br>
2. Being able to return multiple patches so that an entire ellipse could be generated at once. Then, besides the 3 vectors (center, major, minor), two angles could be accepted indicating where the patch could start and stop. This would mean outputting multiple patch points. It will also require a subdivision algorithm to split a patch at a given parameter value (which we will use in several other places later this summer).<br>
<br>
In terms of further development, in order to render 2-D splines properly, we will need a method to evaluate surface normals for patches. More generally, it would be nice to have an additional evaluation method that computes the derivative as well as the coordinates of the Bézier patch at the input points. (Note that the derivative is a vector with the same dimension as the parameter-space of the patch.)<br>
<span class=""><br>
> A question about the push the data. I followed the instruction in <a href="https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/data.md" target="_blank">https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/data.md</a>, but I didn't see the message when doing the commit step.<br>
<br>
</span>That's OK, we'll figure it out when it comes time to submit the patch for review and inclusion into VTK. Hopefully we can do that next week.<br>
<br>
        Thanks,<br>
        David</blockquote></div><br></div>