ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArray
Statistics: Posted by gthibert — 03 Mar 2011, 01:59 Statistics: Posted by nay-seven — 03 Mar 2011, 00:42 Statistics: Posted by senso — 02 Mar 2011, 23:59
It works !
The only thing, is that if you want to control angle with a value from 0 to 360 the formula should be :
x = distance * cos(angle/360*pi*2)
y = distance * sin(angle/360*pi*2)
]]>
]]>
x = distance*cos(angle)
y = distance*sin(angle)
]]>
Statistics: Posted by gthibert — 02 Mar 2011, 20:18
Statistics: Posted by nay-seven — 02 Mar 2011, 20:09
Statistics: Posted by gthibert — 02 Mar 2011, 20:08
CODE:
var xIn : Tparameter;var yIn : Tparameter;var angleOut: Tparameter;var distanceOut: Tparameter;procedure init;begin xIn := CreateParam('x',ptDataField); SetIsOutput(xIn,false);yIn := CreateParam('y',ptDataField); SetIsOutput(yIn,false);angleOut := CreateParam('angle', ptDataField ); setIsInput(angleOut,false);distanceOut := CreateParam('distance', ptDataField ); setIsInput(distanceOut,false);end;function sgn (a : real) : real;beginif a < 0 then sgn := -1else sgn := 1;end;function atan2 (y, x : real) : real;beginif x > 0 then atan2 := arctan (y/x)else if x < 0 then atan2 := arctan (y/x) + pielse atan2 := pi/2 * sgn (y);end;Procedure Callback(n:integer);var x:single;var y:single;var angle:single;var distance:single;beginif (n=xIn) or (n=yIn) then beginx := (getValue(xIn) - 0.5);y := (abs(getValue(yIn) - 1) - 0.5);//angleangle := atan2(x,y) * 180 / pi;if angle < 0 then angle:= angle + 360;setValue(angleOut, round(angle));//distancedistance := sqrt(x*x + y*y);setValue (distanceOut, distance);end;end;Statistics: Posted by gthibert — 02 Mar 2011, 19:44
Statistics: Posted by nay-seven — 01 Mar 2011, 08:30
Statistics: Posted by gthibert — 01 Mar 2011, 00:09
Statistics: Posted by gthibert — 03 Mar 2011, 01:59
Statistics: Posted by nay-seven — 03 Mar 2011, 00:42
Statistics: Posted by senso — 02 Mar 2011, 23:59
Statistics: Posted by gthibert — 02 Mar 2011, 20:18
Statistics: Posted by nay-seven — 02 Mar 2011, 20:09
Statistics: Posted by gthibert — 02 Mar 2011, 20:08
CODE:
var xIn : Tparameter;var yIn : Tparameter;var angleOut: Tparameter;var distanceOut: Tparameter;procedure init;begin xIn := CreateParam('x',ptDataField); SetIsOutput(xIn,false);yIn := CreateParam('y',ptDataField); SetIsOutput(yIn,false);angleOut := CreateParam('angle', ptDataField ); setIsInput(angleOut,false);distanceOut := CreateParam('distance', ptDataField ); setIsInput(distanceOut,false);end;function sgn (a : real) : real;beginif a < 0 then sgn := -1else sgn := 1;end;function atan2 (y, x : real) : real;beginif x > 0 then atan2 := arctan (y/x)else if x < 0 then atan2 := arctan (y/x) + pielse atan2 := pi/2 * sgn (y);end;Procedure Callback(n:integer);var x:single;var y:single;var angle:single;var distance:single;beginif (n=xIn) or (n=yIn) then beginx := (getValue(xIn) - 0.5);y := (abs(getValue(yIn) - 1) - 0.5);//angleangle := atan2(x,y) * 180 / pi;if angle < 0 then angle:= angle + 360;setValue(angleOut, round(angle));//distancedistance := sqrt(x*x + y*y);setValue (distanceOut, distance);end;end;Statistics: Posted by gthibert — 02 Mar 2011, 19:44
Statistics: Posted by nay-seven — 01 Mar 2011, 08:30
Statistics: Posted by gthibert — 01 Mar 2011, 00:09