This shows you the differences between two versions of the page.

developer:sdksamples:curveinflectionpoints [2015/09/14] 127.0.0.1 external edit |
developer:sdksamples:curveinflectionpoints [2016/03/22] (current) sandy |
||
---|---|---|---|

Line 1: | Line 1: | ||

- | ====== Inflection point plugin ====== | + | ====== Inflection Point Plug-in ====== |

====== .NET ====== | ====== .NET ====== | ||

> **Summary:** //An implementation of a binary searcher for 3D curve inflection points.// | > **Summary:** //An implementation of a binary searcher for 3D curve inflection points.// | ||

- | Inflection points are those points on a curve where the second derivative equals zero (where the curvature changes sign). Visually, it is where the CurvatureGraph intersects the actual curve. However, since the CurvatureGraph is an interpolated curve, the intersections are not accurate enough (that's not even to mention you can't actually get at the graph), hence this separate plugin. | + | Inflection points are those points on a curve where the second derivative equals zero (where the curvature changes sign). Visually, it is where the CurvatureGraph intersects the actual curve. However, since the CurvatureGraph is an interpolated curve, the intersections are not accurate enough (not to mention you can't actually get at the graph), hence this separate plug-in. |

- | \\ | + | This plug-in implements a simple binary search algorithm to find the inflection points on 3D curves. |

- | This plugin implements a simple binary search algorithm to find the inflection points on 3D curves. | + | [[http://wiki.mcneel.com/_media/legacy/en/InflectionPoints.zip|Download the plug-in (Rhino 4).]] |

- | \\ | + | [[http://wiki.mcneel.com/_media/legacy/en/InflectionPoints_Rhino4VBPlugin.zip|Download the source code (VB.NET 2005).]] |

- | | + | |

- | [[http://wiki.mcneel.com/_media/legacy/en/InflectionPoints.zip|Download the plugin (Rhino4)]] | + | |

- | | + | |

- | [[http://wiki.mcneel.com/_media/legacy/en/InflectionPoints_Rhino4VBPlugin.zip|Download the source code (VB.NET 2005)]] | + | |

- | | + | |

- | \\ | + | |

- | \\ | + | |

---- | ---- | ||

- | \\ | ||

- | \\ | ||

- | The algorithm works as follows. Every curve is converted to a [[rhino:nurbs|NURBs]] curve. Then, every [[rhino:nurbs|NURBs]] curve is broken up into individual spans. Each span is sampled at 10 regular intervals, and whenever two adjacent samples yield different signs for the second derivative, the little bit of curve between those two samples is subdivided again. This goes on until a inflection point value very close to zero is found (1E-20 accuracy), or until the recursion depth exceeds 100 levels. | + | The algorithm works as follows. Every curve is converted to a [[rhino:nurbs|NURBS]] curve. Then, every NURBS curve is broken up into individual spans. Each span is sampled at 10 regular intervals, and when two adjacent samples yield different signs for the second derivative, the little bit of curve between those two samples is subdivided again. This goes on until an inflection point value very close to zero is found (1E-20 accuracy), or until the recursion depth exceeds 100 levels. |

- | Linear spans are ignored and the curvature computation always happens towards the interior of the span in order to avoid faulty values at the extremes. | + | Linear spans are ignored and the curvature computation always happens towards the interior of the span to avoid faulty values at the extremes. |

- | \\ | + | [[David@McNeel.com|Contact]] the [[people:davidrutten|author.]] |

- | \\ | + | |

- | | + | |

- | ---- | + | |

- | [[David@McNeel.com|Contact]] the [[people:davidrutten|author]] | + | |

developer/sdksamples/curveinflectionpoints.txt · Last modified: 2016/03/22 by sandy