Deriving an angle from three points

Pierre Sahores psahores at free.fr
Wed Dec 16 06:58:08 EST 2009

```Hi Friends,

Did'nt follow all the present thread so don't know if this can help
but in case, here is the general  way i would use to process such

on mouseUp
set the style of the templateGraphic to "polygon"
set the opaque of the templateGraphic to "true"
set the filled of the templateGraphic to "true"
set the backgroundcolor of templateGraphic to "blue" # or what
set the textcolor of templateGraphic to "blue"  # or what ever

if there is a grc "new_grc"
then delete grc "new_grc"
create grc "new_grc"
ask "How many sectors do you want to display"
if it is not "" then put it into secteurs_nb
else exit to top

# random example values you will have to replace with the real
values you want to display

put "" into les_valeurs33
repeat with c = 1 to secteurs_nb
put -1+random(2) & return & return after les_valeurs33
end repeat
put char 1 to -3 of les_valeurs33 into les_valeurs33

put -40+the height of this cd into graph_diametre
put graph_diametre div 2 into graph_rayon
put the width of this cd div 2 into x1
put the height of this cd div 2 into y1

put 2*pi / secteurs_nb into langle
put langle / 2 into langlecalcule
repeat with c = 1 to secteurs_nb
put cos((x1*2*pi) + langlecalcule)  & "," after the_cos_1
put sin((y1*2*pi) + langlecalcule) & "," after the_sin_1
end repeat
put the_cos_1 after the_cos_1
put the_sin_1 after the_sin_1

put pi / secteurs_nb into langle
put "0" into langlecalcule
repeat with c = 1 to 2*secteurs_nb
put cos((x1*2*pi) + langlecalcule)  & "," after the_cos_2
put sin((y1*2*pi) + langlecalcule) & "," after the_sin_2
end repeat
put the_cos_2 after the_cos_2
put the_sin_2 after the_sin_2

# draw the graphic

set the points of grc "new_grc" to
points_cosin
(secteurs_nb
,les_valeurs33
,x1,y1,the_cos_1,the_sin_1,the_cos_2,the_sin_2,graph_rayon)
end mouseUp

function points_cosin
secteurs_nb
,les_valeurs,x1,y1,the_cos_1,the_sin_1,the_cos_2,the_sin_2,graph_rayon
put "" into points_nb
put "0" into d
repeat with c = 1 to 2*secteurs_nb
put (1 / 11) + ((line c of les_valeurs*10) / 11) into
active_rayon
if c mod 2 = 1 then
put x1 & "," & y1 & return & round(x1-(item c of
the_cos_2*active_rayon*graph_rayon)),round(y1-(item c of
the_sin_2*active_rayon*graph_rayon)) & return & \
round(x1-(item d of
the_cos_1*active_rayon*graph_rayon)),round(y1-(item d of
the_sin_1*active_rayon*graph_rayon)) & return & \
round(x1-(item 2+c of
the_cos_2*active_rayon*graph_rayon)),round(y1-(item 2+c of
the_sin_2*active_rayon*graph_rayon)) & return after points_nb
else put x1 & "," & y1 & return & round(x1-(item c of
the_cos_2*active_rayon*graph_rayon)),round(y1-(item c of
the_sin_2*active_rayon*graph_rayon)) & return & \
round(x1-(item 2+c of
the_cos_2*active_rayon*graph_rayon)),round(y1-(item 2+c of
the_sin_2*active_rayon*graph_rayon)) & return after points_nb
end repeat
return points_nb & line 1 of points_nb
end points_cosin

just put this script inside a new stack's button and run it to display
the "new_graph" test graph. Just tested and seems to work fine there.

Have fun !

Pierre

Le 16 déc. 09 à 11:56, Jacques Hausser a écrit :

> I really should re-read my mails before sending them :-(
> I cannot copy and paste scripts directly into mails (I don't know
> why) so I rewrite them... with bugs !
>
> in function calcangle the line
>
> if SurfaceTriangle (a,c,b) then
>
> should be
>
> if SurfaceTriangle(a,c,b) > 0 then
>
> ... but you corrected it already !
>
> Jacques-in-the-moon
>
> ******************************************
> Prof. Jacques Hausser
> Department of Ecology and Evolution
> Biophore / Sorge
> University of Lausanne
> CH 1015 Lausanne
> 6 route de Burtigny
> CH-1269 Bassins
> tel/fax: 	++ 41 22 366 19 40
> mobile:	++ 41 79 757 05 24
> E-Mail:	jacques.hausser at unil.ch
> *******************************************
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
>

--
Pierre Sahores
mobile : (33) 6 03 95 77 70

www.woooooooords.com
www.sahores-conseil.com

```