Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.10.2012, 17:12
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 11  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
x = a + ek/p + (f/p)sqrt(r^2 - k^2)
y = b + fk/p - (e/p)sqrt(r^2 - k^2)
OR
x = a + ek/p - (f/p)sqrt(r^2 - k^2)
y = b + fk/p + (e/p)sqrt(r^2 - k^2)
видимо то, что после OR - вторая

Старый 05.10.2012, 17:33
CrazyPHP вне форума Посмотреть профиль Отправить личное сообщение для CrazyPHP Найти все сообщения от CrazyPHP
  № 12  
Ответить с цитированием
CrazyPHP

Регистрация: Sep 2008
Сообщений: 27
Всё отлично работает, выкладываю решение:

решение уравнения:
Цитата:
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 - вторая
присмотрись они одинаковые.

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:27.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.