r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[View] discuss view related issues

Maxim
24-May-2009
[8887x4]
I have a strange reaction in some AGG code...  calling show on the 
face is actually appending the new AGG drawing to previous such that 
the image is the result of all prior draws... but the draw stroke 
(verified) isn't growing!


anyone know what is causing this... AFAFIK I am not using the draw 
command, but setting the face/effect and calling to-image on the 
face.
DOH!  never mind... just found it... I was setting the face/image 
to that new image  ...  heheheh  obvious.
anyone have some spline (bezier, nurbs, anything) math converted 
to rebol code?


I want do to some point on spline stuff, using control vertices to 
orient the curve.
if it has tangent functions for the points that would even be better!
Steeve
24-May-2009
[8891]
did you check rebol.org ?
Maxim
24-May-2009
[8892x2]
yep.. didn't find anything with spline or curve in it... is there 
something there?
but I could have done more searching...
Steeve
24-May-2009
[8894]
you can"t use draw dialect ?
Maxim
24-May-2009
[8895x2]
how do I get the x,y coordinate on the curve from a spline I draw 
with AGG?
I need the math, the main use isn't for AGG, but it will eventually 
have to be displayed anyways.
Steeve
24-May-2009
[8897x2]
well i've done some smouth functions to interpolates coordinates, 
but i don't know if it's your need.
What is your input and what output are you expecting ?
you're starting from some points i guess, and you want to construct 
a smouth curve with them...
Maxim
24-May-2009
[8899]
yes... bezier, b-spline, or nurbs, if possible... cause I can easily 
match them with other applications if I need to eventually.
Steeve
24-May-2009
[8900x5]
ok, i give you a hint
i download a script wait...
the most common know function (i guess) to interpolate 2 points is 
to use this cosine function.

(1 - cosine a * 180) / 2
i use it in my plasma script
a is a value between 0,1
Maxim
24-May-2009
[8905x3]
I know bezier really is just an iterated break up of an algorythm 
between control points..  I could implement the math, but if you've 
got some stuff all done  ;-)
all the algorythms are available on the web via siggraph and other 
sources, but coding that stuff usually isn't very fun.
I was asking, cause I saw a demo once of someone rebuilding the AGG 
spline manually right over the AGG one.. so some code definitely 
exists.
Steeve
24-May-2009
[8908x2]
no, i use it to interpolate colors, not coordinates, so it is no 
use as it is in my script.

But it's easy to figure how to interpolate coordinates instead of 
colors gradiants, i gues...
Giving 2 points as input , i can write it if you want, but give me 
the paremeters you want and the result expected (an image, a block 
of coordinates ?).
Give the specs
Maxim
24-May-2009
[8910]
for linear interpolation its pretty easy.
  
this is the complicated use...

give me the (x.y)  at length z of (bezier, nurbs, quadratic, etc) 
spline defined by points  p1, p2, p3, p4, pn
Reichart
24-May-2009
[8911]
We wrote our own spline (arc function for a Paint program we did). 
 

DPaint had this, which implies John's RPaint has this code too, no?
Steeve
24-May-2009
[8912x2]
ho i see, your input is a length and you want the coordinates in 
return ?
tricky need
Reichart
24-May-2009
[8914x2]
The nice thing is that it works backwards, which is, you give it 
XY, and a control point, and it draws thorugh the control point.
Of note, if you want another way to think of an arc.

Think of drawing 3 points A B C (C is the "pull")

Now, you have what looks like a triangle.


If you make a tic halfway between A and C, and B and C, and draw 
a line been these tics, then keep doing this, you will eventually 
make an Arc.

The last tic is where your Mouse cursor would end up.

That is why Arc in RPaint is "backwards".

Cool, eh?
Steeve
24-May-2009
[8916]
Wow, i understood nothing...
Reichart
24-May-2009
[8917]
What do you mean?
Maxim
24-May-2009
[8918]
reichart  that is the exact bezier algorythm.
Reichart
24-May-2009
[8919]
Yup.
Maxim
24-May-2009
[8920x2]
ok, so I should bother john for his function... he probably profiled 
it and such... I'm just lazy.
now I have a real math problem... I didn't even find a direct solution 
on wolfram mathematica site.


do you know of an algorythm (expressed in code, not in math) that 
can give me the ellipse with two supplied coordinates.
center and one point which touches the ellipse?
Reichart
24-May-2009
[8922x3]
Steeve, was there something you wanted described?
Maxim, probably not, since you need to first find an example in a 
real program that uses that UI.  Perhaps GIMP though?
My paint program let you draw a start point, and drag a line in some 
direction, then show an ellipse on that "angle".

Then, you could size the width and length, in real time, then when 
you released the mouse it snapped perfect....it was VERY fast, and 
very cool.
Maxim
24-May-2009
[8925]
some graphic app I'm writting ;-) does the ellipse dragging in real 
time, but uses x-radius and y-radius which is snapped to the edge 
of the ellipse... 


I just prefer single point editing... but for that to be intuitive, 
the point really has to be exactly on the ellipse... and since ellipse 
have 2 center points... ellipse seem to be very complex challenge, 
by what I've read, there isn't even today an exact method to calculate 
the arclen of an ellipse... only very close approximations!
Reichart
24-May-2009
[8926x3]
Yup, all circles (ellipses) are doe with an error correction routine.
We too had to correct "to a pixel"
How will you set the "width" of your ellipse?
Maxim
24-May-2009
[8929x4]
basically, two points reside on the major and minor axis and a reference 
center is used.  if rotation is needed, I can easily calculate the 
vector from any of the axis to the center.
but right now the rotation is locked, cause I'm not sure its a good 
thing to rotate the ellipse for this specific application.
but the powerfull thing, is that you can drag the ellipse itself, 
by clicking on any part of the line itself, no cvs to drag the shape. 
 :-)
and just hovering over the line (the arc) the cvs appear, so they 
don't clutter the drawing while you're editing other parts of it.
Geomol
25-May-2009
[8933]
A REBOL Bezier algorithm:

do http://www.fys.ku.dk/~niclasen/rebol/fysik/bezier.r

Move the points around with the mouse.
Maxim
25-May-2009
[8934x3]
that's the demo I was talking about   ;-)
so you don't mind if I use that code in my own projects?
first use will be to build a keyframe editor, which will be distributed 
with liquid-paint, with MIT license.