Danny Kodicek wrote:
I can email an image to anyone that wants it, or you can draw it like
this...
I think this is what you want...
Draw a point and a line vertically upwards of length R.
Draw a large letter V (inverted cone) upwards from the point.
Draw an arc, radius R to cut the V.
Where the arc cuts the vertical draw a circle, radius r, to meet the edges
of V.
The edges of V are tangents.
Draw radii to these tangents, making 90 degree angles with them.
Mark r and R on the diagram.
Now r/R = sin(A), where A is half the angle at the bottom of the V.
Let's say there are n of these small circles, so that
n*2*A = 360 (degrees)
or
n*2*A = 2*pi (radians)
You can decide n and find A and then find r/R (the angles are usually in
radians).
You can then decide R and find r (or other way around).
Each time through the loop for <=n the new angle measured from
the vertical
in a clockwise direction is n*2*A.
The place to draw each circle is x=Rsin(n*2*A) and y=Rcos(n*2*A)
I enjoyed this one, so I came back to it and wrote a complete solution. Put
a symbol in the library with id 'circle', then run this script:
function getRingRadius(tArray:Array):Number {
var tMaxError = 0.1
var tMax = 1024
var tMin = 0
do {
var tCheck = (tMax + tMin) / 2
var tSum = 0
for (var i = 0; i<tArray.length; i++) {
tSum += Math.atan2(tArray[i],tCheck)
}
if (tSum>Math.PI) {
tMin = tCheck
} else {
tMax = tCheck
}
} while (Math.abs(tSum - Math.PI)>tMaxError)
return tCheck
}
var tRadii = new Array()
for (var i=0; i<10 ; i++) {
tRadii.push(Math.random()*20+1)
}
var tRingRadius = getRingRadius(tRadii)
var tSquaredRadius = tRingRadius * tRingRadius
var tAngle = 0
for (var i=0; i<10 ; i++) {
tCircle = this.attachMovie("circle", "circle"+i,
this.getNextHighestDepth())
tCircle._width = tCircle._height = tRadii[i]*2
tThisAngle = Math.atan2(tRadii[i], tRingRadius)
tAngle += tThisAngle
tDistance = Math.sqrt(tRadii[i]*tRadii[i] + tSquaredRadius)
tCircle._x = 200 + tDistance * Math.cos(tAngle)
tCircle._y = 200 + tDistance * Math.sin(tAngle)
tAngle += tThisAngle
}
NB: my previous script had my max and min mixed up so it didn't work. This
one is correct.
Danny
_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com
You guys are gods :)
Thanks so much! My problem was solved completely by slight modifications
to Danny's script. What i'd do without this list i don't know.
- Andreas
_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com