Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

How to get inflection points without using Porcupine Curvature Analysis? 2

Status
Not open for further replies.

gvi70000

New member
May 2, 2014
17
0
0
NO
Can any one help me in getting the inflection points for a 3D curve without using Porcupine Curvature Analysis? I need a way to get them using other commands or even VBA (i will develop the algorithm any way for VBA)
 
Replies continue below

Recommended for you

Hi,

so....one solution is
I project the curve in XY and YZ planes then for each projection i create 3 points on curve with 0.1mm distance between them. I create a circle through these points and make the difference between X or Y(depending on the projection) of the mid point and circle center. When the difference changes the sign i got an inflection point. Because the curve is long, i have a recursive function to move the mid point along the curve with different step size (1mm and 0.01mm). Tested on 10 curves and the biggest difference between catia exacted inflection points and those created by script is 0.2mm, maybe i will put the small step to 0.001mm
 
takes about 3-4 min to compute a 600mm curve, but is better than nothing

here are 2 solutions received on LinkedIn


Chris

Chris Holtorf

Retired Boeing Technical Designer

Hi,
If you have access to the Product Engineering Optimizer workbench try the following:
1. Put a point on your curve using "Ratio of curve length".
2. Create a Real parameter and then add a formula using Measures+Curvature. Select your curve and then select the point on the curve.
3. Go to Product Engineering Optimizer and select "Optimization".
4. For Optimization Type, select Minimization.
5. For the Optimized Parameter, select the Real parameter that measures the curvature.
6. For the Free Parameter, double click the point in the Spec tree and expand the point listing. Select the Ratio parameter under the point.
7. Run the Optimization. This will find your inflection point.

I've only tried this on curves with a single inflection point. I'm not sure what will happen if there is more than one inflection point.

Like
Reply privately
Flag as inappropriate
21 hours ago

Andras Eberfalvi

Andras

Andras Eberfalvi

Automotive Professional

Hi Ion,

Thanks for this difficult task. It took me several hours before I came up with an idea :).
My approach would be the following.

I'm thinking some kind of macro which contains the following steps:

- Creating 3 points on curve with ratio (initial 0, 0.01, 0.02)
- Creating 3 lines tangent to curve in each point
- Creating 2 planes with two lines (for the first two point, the first two lines for the first point)
- Creating 2 more lines (Point-Direction) using the first two point and the two planes
-Now you can create two additional lines or an axis system based on the the fist two points (as origin point) and the 4 lines created prior (as X and Y dir)
- Creating an intersection between the normal axis (Z axis) you can get the center of the osculating circle
- Measuring the distance between its center point and the first point you get the length of the radius
- The curvature could be computed by 1/length of the radius

Going through all points of the curve and monitoring the curvature you can detect the inflection points where the curvature is tending to 0 (e.g.: smaller than 0.005 mm-1).

The only problem is the last point (ratio 1.0) where you can't get the next point (1.01) to create the plane, but the last point if this is an open curve could't be an inflection point. Or you can use the previous plane I don't think it makes too much mistakes.

I'm not sure how time consuming is this, but I think it could work.

Please let me know if it helps or not I'm curious :).

Thanks
Andras

Thank you for reply's, i will try both solutions and i will compare the computing time. let the fastest solution win :)
As a side note, the final result will be used for this Link.

When i will finish the code i will also make a short movie to show how it works
 
Status
Not open for further replies.
Back
Top