Форум 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=154925)

lalala2 25.04.2011 02:27

Перпендикуляр к вектору
 
Есть вектор:
Код AS3:

v = {p0:{x, y}, 
    p1:{x, y}};

Есть объект:
Код AS3:

obj = {x, y};


Как мне построить перпендикуляр от объекта к вектору?

Gaen 25.04.2011 04:32

Вектор проходит через точки (x1, y1), (x2, y2)
Вектор лежит на прямой y = kx + b
Перпендикуляр к этой прямой y = (-1/k)x + с
Перпендикуляр проходит через точку (objX, objY)

Берем бумажку, составляем систему уравнений, выражаем k и c через координаты вектора и объекта, и прописываем полученные формулы в коде.

fish_r 25.04.2011 06:20

Исходя из тех данных которые вы дали - никак. Потому, что точка не может быть перпендикулярна линии в принципе.

silin 25.04.2011 10:52

экзотическое применение Bezier, из пушки по воробьям, такскть
хотя если класс уже 'в деле', то почему бы и нет
Код AS3:

var start:Point = new Point(0, 0);
var end:Point = new Point(300, 200);
var control:Point = new Point(0.5 * (start.x + end.x), 0.5 * (start.y + end.y) + 1e-9);
var bezier:Bezier = new Bezier(start, control, end);
bezier.isSegment = false;
 
var p:Point = new Point(end.x * Math.random(), end.y * Math.random());
var normal:Point = bezier.getPoint(bezier.getClosest(p));
 
graphics.lineStyle(0, 0x0);
graphics.moveTo(start.x, start.y);
graphics.lineTo(end.x, end.y);
graphics.lineStyle(0, 0xFF0000);
graphics.moveTo(p.x, p.y);
graphics.lineTo(normal.x, normal.y);


Ariel 25.04.2011 12:33

Шоб проверить перпендикулярность векторов, нужно померять их дот-продукт на равенство нулю. Если равен, то перпендикулярен один вектор другому. То бишь, является нормалью.


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

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