At 11/4/05 03:12 PM, fwe wrote:
At 11/4/05 02:26 PM, Rantzien wrote:
function limit(v:Number, low:Number, high:Number):Number {
if (v<low) {
return low;
} else if (v>high) {
return high;
} else {
return v;
}
}
function limit(v:Number, low:Number, high:Number):Number {
return v<low?low:v>high?high:v
}
)
function limit(v:Number, low:Number, high:Number):Number {
return Math.max(low,Math.min(high,v))
}
trace([limit(2,1,3),limit(0,1,3),limit(4,1
,3)])
function scramble(num:Number) {
var arr = new Array(num);
var added = 0;
while (added < num) {
ran = random(num);
unUsed = true;
for (var n in arr) {
unUsed *= ran != arr[n];
}
if (unUsed) {
arr[added] = ran;
added++;
}
}
return arr;
}
trace(scramble(5))
this next one was hard to do, it takes 3 coordinates and creates a circle that passes through all 3, i made this about a year ago, but i used a for loops to check the distances to get a mid point, now it's done with pure algebra, and it runs alot better. this function probly serves no purpose at all, but i love a challenge.
function distance(x1:Number, y1:Number, x2:Number, y2:Number):Number {
var xc:Number = x2 - x1;
var yc:Number = y2 - y1;
return Math.sqrt(xc * xc + yc * yc);
}
function circle(x1:Number, y1:Number, x2:Number, y2:Number, x3:Number, y3:Number) {
var xM1:Number = (x1 + x2) / 2;
var yM1:Number = (y1 + y2) / 2;
var xM2:Number = (x3 + x2) / 2;
var yM2:Number = (y3 + y2) / 2;
var m1:Number = (x2 - x1) / (y2 - y1) * -1;
var m2:Number = (x3 - x2) / (y3 - y2) * -1;
var b1:Number = (m1 * -xM1) + yM1;
var b2:Number = (m2 * -xM2) + yM2;
var xInt:Number = (b2 - b1) / (m1 - m2);
var yInt:Number = (m1 * xInt) + b1;
var radius:Number = distance(x1, y1, xInt, yInt);
_root.createEmptyMovieClip("line", 1);
_root.line.lineStyle(2, 0x00FF00);
_root.line.moveTo(x1, y1);
_root.line.lineTo(xInt, yInt);
_root.line.lineTo(x2, y2);
_root.line.moveTo(x3, y3);
_root.line.lineTo(xInt, yInt);
_root.line.lineStyle(2, 0xFF0000);
_root.line.moveTo(x1, y1);
_root.line.lineTo(x2, y2);
_root.line.lineTo(x3, y3);
_root.line.lineTo(x1, y1);
_root.line.lineStyle(2, 0x0000FF);
_root.line.moveTo(xInt + radius, yInt);
for (var angle = 1 / radius; angle < 360; angle += 100 / radius) {
var drawX:Number = Math.cos(angle / 180 * Math.PI) * radius;
var drawY:Number = Math.sin(angle / 180 * Math.PI) * radius;
_root.line.lineTo(xInt + drawX, yInt + drawY);
}
}
circle(75, 50, 100, 150, 25, 125);
I cleaned it up with them there fancy "var" indentifiers that y'all love so much. try it with 3 dragging buttons to really understand it.