THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 08/11/2009 at 06:44, xxxxxxxx wrote:
Cinema 4D Version: 10
Platform: Windows ; Mac OSX ;
Language(s) : C++ ;
I want to iterate over all segments of a spline and retrieve the length of each segment. It seems GetSegmentLength() would be the function to use, but I get stupid results. Maybe it's not documented correctly.
Here's the code:
// Iterate Segments, treat each segment like a separate spline (as in the old function)
for (s = C_ZERO; s < SegmentCount; s++)
// Get this segment's length
ThisSegmentLength = sp->GetSegmentLength(s, s+1);
GePrint("Segment " + LongToString(s) + ": " + RealToString(ThisSegmentLength) + " units.");
So what are those two parameter that I have to pass to GetSegmentLength()? In the documentation it sais:
But that doesn't seem to be correct. For example, my spline only has one segment, and a total length of some hundred units. But GetSegmentLength() returns a length of only 0.134 units, which is definitely wrong. And if I pass the same segment index to a and b, the returned length is always zero.
Are a and b rather point indexes instead of segments?
Thanks for any tipps!
On 08/11/2009 at 06:47, xxxxxxxx wrote:
I also tried to use the SplineHelp class, but it can't be found.
On 08/11/2009 at 06:58, xxxxxxxx wrote:
Another addition: I included "lib_splinehelp.h", so I can now use the SplineHelp class. Using its GetSegmentLength() function, I can get the length of a segment by just passing the segment's index. And it works!!
But one strange thing remains: I have a spline with only one segment. I call GetSegmentLength() on this one segment and it returns a length of 482.564 units, which sounds quite reasonable. Just to check this, I looked up the length of the same spline with Xpresso (ObjectNode -> SplineNode -> ResultNode) and there it returns 482.392 units.
Funny, isn't it?