| CrazyPHP |
05.10.2012 17:33 |
Всё отлично работает, выкладываю решение:
решение уравнения:
Цитата:
R1^2 = (x01 - x)^2 + (y01 - y)^2
R2^2 = (x02 - x)^2 + (y02 - y)^2
|
вот тут: http://mathforum.org/library/drmath/view/51836.html
Функция:
Код AS3:
/**
* точка соприкосновения окружностей
*/
public function intersect_circles(circle_1:Point, circle_2:Point, radius_1:Number, radius_2:Number):Point {
var a:Number = circle_1.x;
var b:Number = circle_1.y;
var c:Number = circle_2.x;
var d:Number = circle_2.y;
var r:Number = radius_1;
var s:Number = radius_2;
var e:Number = c - a;
var f:Number = d - b;
var p:Number = Math.sqrt(Math.pow(e,2) + Math.pow(f,2));
var k:Number = (Math.pow(p, 2) + Math.pow(r, 2) - Math.pow(s, 2)) / (2 * p);
var x:Number = a + e * k / p + (f / p) * Math.sqrt(Math.pow(r, 2) - Math.pow(k, 2));
var y:Number = b + f * k / p - (e / p) * Math.sqrt(Math.pow(r, 2) - Math.pow(k, 2));
return new Point(x,y);
}
Чтобы получить обе точки просто меняем координаты и радиусы местами:
Код AS3:
//первая точка пересечения
var point_1:Point = intersect_circles(circle_1_position, circle_2_position, circle_1_radius, circle_2_radius);
//вторая точка пересечения
var point_2:Point = intersect_circles(circle_2_position, circle_1_position, circle_2_radius, circle_1_radius);
Цитата:
видимо то, что после OR - вторая
|
присмотрись они одинаковые.
|