Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   точка соприкосновения двух окружностей (http://www.flasher.ru/forum/showthread.php?t=92492)

baka 26.02.2007 18:50

точка соприкосновения двух окружностей
 
имеются 2 шара (тобиш окружности) которые соприкасаются в одной точке, известны координаты их центров - X1 Y1 и X2 Y2 и радиусы R1 R2, как найти координаты точки их спорикосновения?

Вот что я придумал:
Код:

// Расстояния между кругами по Х и У
var dx = (x1 - x2);
var dy = (y1 - y2);
// Угол
var alpha = Math.atan2(dy, dx);
var cosalpha = Math.cos(alpha);
var sinalpha = Math.sin(alpha);
//собственно координаты точки соприкосновения
x3 = x2 + cosalpha * R2
y3 = y2 + sinalpha * R2

Работает не во всех положениях шаров относительно друг друга.
Чего тут нехватает?

etc 26.02.2007 18:52

http://bezier.ru/rus/articles/math/intersections/
Почитай, может поможет.

techno 26.02.2007 18:58

математика!
Код:

d=r1/r2;
x3=(x1-x2)*d+x2;
y3=(y1-y2)*d+y2;

будет работать на все 100%:)
(даже когда не соприкосаются)

Mr. Fixit 26.02.2007 19:51

2baka:
ты определил R2?
в коде не видно

Cruser 27.02.2007 11:37

Код:

// Расстояния между кругами по Х и У
var dx = (x1 - x2);
var dy = (y1 - y2);
// Угол
var alpha = -Math.atan2(dx, dy)/(Math.PI/180)+90;

y3 = y2 - R2 * Math.sin(alpha *(Math.PI/180));
x3 = x2 - R2 * Math.cos(alpha *(Math.PI/180));

А если так?

CorC 27.02.2007 14:17

Цитата:

Сообщение от Mr. Fixit
2baka:
ты определил R2?
в коде не видно

что ж ты тогда еще про x1 x2 y1 y2 не спросил?

в любой книжке по геометрии это написано :)


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

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