Вопрос по геометрии...
- 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)