Показать сообщение отдельно
Старый 13.04.2002, 16:42
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 5  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
идея понятная, только нужно-то изобрести способ для общего случая... и хорошо бы математический а не ударно-механический

я щас попробую с хиттестом поизвращаться, но все равно эта идея мне не нравится... тормоза это, да еще в результате не окупающиеся...

а насчет середины аб - это не так, к сожалению

вот примерчик - я провожу биссектрису угла acb и перпендикуляр из точки c к отрезку ab... видно, что ни то ни другое ничего очевидно-полезного не дает

Код:
function cross(xy, th) {
	this.lineStyle(th, 0xFF66FF, 100);
	this.moveTo(xy.x-3, xy.y-3);
	this.lineTo(xy.x+3, xy.y+3);
	this.moveTo(xy.x-3, xy.y+3);
	this.lineTo(xy.x+3, xy.y-3);
}
//
a = {x:150, y:100};
b = {x:100, y:250};
c = {x:300, y:175};
m = {x: (a.x+b.x)/2, y: (a.y+b.y)/2};
//
cross(a, .1);
cross(b, .1);
cross(c, .1);
cross(m, .1);
this.lineStyle(2, 0x006600, 100);
this.moveTo(a.x, a.y);
this.curveTo(c.x, c.y, b.x, b.y);
this.lineStyle(.1, 0xCCCCCC, 100);
this.lineTo(a.x, a.y);
this.lineTo(c.x, c.y);
this.lineTo(b.x, b.y);
//
function norma(c, a, b) {
	var u = ((c.x-b.x)*(a.x-b.x)+(c.y-b.y)*(a.y-b.y))/((b.x-a.x)*(b.x-a.x)+(b.y-a.y)*(b.y-a.y));
	return {x:b.x+u*(a.x-b.x), y:b.y+u*(a.y-b.y)};
}
//
p = norma(c, a, b);
cross(p, .1);
this.lineStyle(1, 0xCC9933, 100);
this.moveTo(m.x, m.y);
this.lineTo(c.x, c.y);
this.lineStyle(1, 0x0000FF, 100);
this.lineTo(p.x, p.y);
//
stop();
ммм.... только что пришла мысль насчет средней линии ограничивающего треугольника... будем экспериментировать...


Последний раз редактировалось Nox Noctis; 13.04.2002 в 16:46.