Вопрос по геометрии...

From
Evgeniy Jirnov (2:5030/1230.13)
To
Andrei Novikov
Date
2002-10-07T11:33:12Z
Area
RU.ALGORITHMS
Мир твоему дому, Andrei.


04 Окт 02 20:09, Andrei Novikov -> Evgeniy Jirnov:

 EJ>> Есть отрезок. Известны его начальные и конечные координаты
 EJ>> (x1,y1),(x2,y2). Хочется на одном конце отрезка нарисовать стрелочку.
 EJ>> Как? Что-нибудь типа:
 EJ>> ------------>
 EJ>> То есть дополнительные две линии, одна на 225 градусов повернута, а
 EJ>> другая на 70
 AN> Опpеделяешь, какой yгол составляет твоя стpелка с лyчом, yходящим
 AN> гоpизонтально впpаво (анализиpyя пpиpащения отpезков по X и Y и их
 AN> знаки). Полyчаешь yгол A (в вышепpиведенном пpимеpе он pавен 0). Тепеpь
 AN> стpоишь из конечной точки отpезка еще два дополнительных отpезочка, один
 AN> под yглом A+B, а дpyгой A-B, где B - остpота твоей стpелки. Длины этих
 AN> отpезков опpеделят длинy наконечника твоей стpелки.
 AN> P.S. Хоть что-то понятно? :-)

Угу... Но я сделал по-другому... :) Чуть-чуть наоборот...

Если кому надо, то вот исходник:
//───────────────────────────────────────────────────────────────────────────
void linestr(int x1,int y1,int x2,int y2,int c=WHITE)
{
 line(x1,y1,x2,y2,c);
 long double x3=0,x4=200;
 long double r=atanl(((x4-x3)*(y2-y1))/((x2>x1?(x2-x1):1)*(x4-x3)));
 int a=10;
 long double d=(15+(x2>=x1?180:0))*M_PI/180;
 line(x2,y2,x2+a*cos(r+d),y2+a*sin(r+d),c);
 d=(360-15+(x2>=x1?180:0))*M_PI/180;
 line(x2,y2,x2+a*cos(r+d),y2+a*sin(r+d),c);
};
//───────────────────────────────────────────────────────────────────────────

С уважением _Evgeniy_

... 83 AB E3 AF A0 EF 20 E2 E0 A0 E2 A0 20 A2 E0 A5 AC A5 AD A8 21
--- np: silence (Winamp is not active ;-)
 * Origin: И женщина, как буря, улеглась (2:5030/1230.13)