Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   координаты точки пересечения (http://www.flasher.ru/forum/showthread.php?t=136366)

greegreeman 15.02.2010 19:02

координаты точки пересечения
 
как узнать координаты точки пересечения прямой и мувиклипа? я проверил при помощи hitTestObject() пересеклась ли моя прямая и мувик. если пересеклась, то в какой точке? помоги, плиз, разобраться

Psycho Tiger 15.02.2010 19:28

Математикой.

greegreeman 15.02.2010 19:35

наверняка уже есть все давно высчитанное до меня. подскажите, где можно найти формулы и применить их

Добавлено через 56 секунд
т.к. у меня опыт во Flash не большой, то я надеялся, что я просто не знаю функцию, которая вернет мне координату точки пересечения... эх...

Crenth 15.02.2010 19:41

Если в двумерном пространстве (на плоскости) искать - то у вас серьезные проблемы :)
Если в трехмерном (т.е. пересечение плоскости мувика и прямой) - то смотрите по ссылке


http://ru.wikipedia.org/wiki/%D0%9D%...80%D0%B8%D1%8F

wvxvw 15.02.2010 19:57

Код AS3:

public static function intersectionPoint(p0:Point, p1:Point, p2:Point, p3:Point):Point
{
    var rX:Number = ((p0.x * p1.y - p0.y * p1.x) * (p2.x - p3.x) -
                    (p0.x - p1.x) * (p2.x * p3.y - p2.y * p3.x)) /
                    ((p0.x - p1.x) * (p2.y - p3.y) - (p0.y - p1.y) * (p2.x - p3.x));
    var rY:Number = ((p0.x * p1.y - p0.y * p1.x) * (p2.y - p3.y) -
                    (p0.y - p1.y) * (p2.x * p3.y - p2.y * p3.x)) /
                    ((p0.x - p1.x) * (p2.y - p3.y) - (p0.y - p1.y) * (p2.x - p3.x));
    return new Point(rX, rY);
}

Только надо дооптимизировать :)

greegreeman 15.02.2010 20:11

я так понимаю "слегка" дооптимизировать :)

silin 15.02.2010 20:34

о пересечении прямой(геометрическое понятие) и мувиклипа (программный объект) и говорить-то не очень серьезно, хотя понятно, что под мувиклипом подразумевается некая фигура, но если неизвестно какая, то какие тут могут быть формулы..

как вариант: прошагать по прямой с каким-то шагом (точностью), походу проверяя hitTestPoint мувика с каждой точкой,
затратно, но будешь все знать: где пресекается, сколько раз и т.д.

Psycho Tiger 16.02.2010 00:12

Однако же, если шаг будет больше, чем линия пересечения - можно тупо перескочить её. Везде свои плюсы и минусы.

wvxvw 16.02.2010 00:17

Цитата:

Сообщение от greegreeman (Сообщение 886739)
я так понимаю "слегка" дооптимизировать :)

Ну, формула-то рабочая - вычисляет точку пересечения двух прямых, а если вам нужны пересечения с кривыми - это уже считаете сами, мой слабый интеллект не справится :)

greegreeman 16.02.2010 01:21

всем спасибо. похоже придется достать конспект по матану и сдуть пыль :) почитать про аппроксимацию. любую (практически любую) сложную фигуру можно свести к простой с определенной степенью точности... а пока что попробую вариант, который предложил silin. буду шагать :)


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

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