GH: Eval Curve of Circle1-->Circle2, but Circle2 Flips its Seam

OK, so I was trying to rotate a point about a smaller Circle which follows a greater Circle (carried by a PerpFrame) by evaluating the curves of the circles, but, the PointAt(t) on the smaller Circle doesn’t seem to evaluate correctly, instead it seems stuck at some (t) and then flips diagonally to the other side of the circle (see picture). Very strange behavior

To produce the sneaky IK chain’s winding movement I had to use a Rotation component instead :

To me it looks like a bug has crept into the Eval component somehow (or am I just plain stoopid?). In any case, can anyone explain what happens with the flippin’ second Eval component?

IK Inverse Kinematic Segments Forum.gh (15.4 KB)

// Rolf

BTW, there was a reference to a .dll in that component, so if a warning is shown, just delete the reference (it isn’t actually used by the component).

// Rolf

feel hard to understand。。。。。。

Try connect as shown in the picture below and start the Slider Animation by clicking the “Animation” option in the menu shown at the right- mouse button:

The magic essentially happens in the Follow() method. I store the Segment start and end positions in a Line, where point A stores its value in Line.From, and B stores its value in Line.To (I used A and B just to have shorter syntax, but it may appear confusing).

Anyway, each IKSegment is actually defined by that Line, which stretches between point A and B.

I separated the connecting of the segments (see ConnectToTarget()) since an IKSegment, if it is first in chain, can follow “any point”, like the mouse position or whatever, not only the previous IKSegment. Other than that, everything interesting is happening in the Follow() method. The rest (the properties etc) is just “convenience code”.

You can also drag the snake around manually by connecting the GoalPt component located in the blue round Group. Select that GoalPt component and then drag the Gumball in the Viewport, then the snake should follow your mouse moves.

Also try extend the snake, and add more or remove segments using the sliders.

// Rolf

Start espresso (lot’s) ASAP, quit the other thing.

QuitVodka_StartEspresso.gh (10.2 KB)

Ho Peter,

OK. so when the plane doesn’t move, the method PointAt(i) works, but when constructing the Circle based on a rotating plane, then the plane axes stars flippin’like crazy, and so does the Circle which was constructed from the plane, and in turn, so does the Eval component. An evil chain of events.

// Rolf

That’s another animal. Use Dot, Cross and the likes (against C1 plane ZAxis and/or some other “datum” thingy [required anyway if you want to control the C1 seam etc etc]) and put things where you want them to be.

Same type of control is required if you want to to do recursion: C1 yield a rotating C2 that yield a rotating C3 … that yield a rotating Cn , that yield a rotating point.At … the sum of them yield a freaky nurbs.

And here comes the pain (no pain, no gain):

QuitVodka_StartEspresso_V1.gh (16.7 KB)

A simple recursion does circles in circles (yikes). Scope is … well … who knows? (and who cares?).

Anyway the point here is the who knows/who cares rotate options. But why?

Answers: the Lord, District 9, North Pole, Zorg.

This mess starts to look a bit like Fourier Transforms… I bet the circles tries to draw The Lord, or something. :wink:


// Rolf

1 Like