Вниз
Скачать: CL | DM;

Вопрос про определение градуса с картинкой.   Найти похожие ветки 

← →
Феликс ©   (2004-04-04 23:23) [0]

Один мой знакомый, не разбирающийся в Делфи попросил меня плохо разбирающегося в Делфи выполнить следующую задачу:
При нажатии кнопки "вверх" линия АВ поднимается вверх и соответсвенно угол между горизонтом (он выделен красным цветом) и линией АВ увеличивается.  
При нажатии кнопки "вниз" линия АВ опускается вниз к горизонту и соответсвенно угол между ними уменьшается также.
Вопрос в том, что необходимо программно найти градус между линией АВ и горизонтом (на рисунке угол альфа). Красная линия (горизонт) является виртуальной линией и не прорисовывается на форме.
Из известных данных есть только координаты точки b (она базовая и не меняется) и точки а (а вот она меняется в зависимости от того поднимается прямая АВ или опускается относительно горизонта).
Прилгаю ссылку ( http://www.xatka.vov.ru/f.gif ), на которой изображена вся ситуация. Еще раз скажу, что задача узнать угол альфа с учетом имеющихся данных (координат 2 точек).

Заранее благодарен и очень сильно нужен исходник.


← →
Кулясов ©   (2004-04-05 00:35) [1]

По рисунку:

sin альфа = abs(a.y-b.y) div sqrt(sqr(abs(a.y-b.y)) + sqr(abs(a.x-b.x)))


← →
Stratos ©   (2004-04-05 02:28) [2]

эээ
alpha:= arctan(abs(a.y-b.y)/abs(a.x-b.x));


← →
Nous Mellon ©   (2004-04-05 06:45) [3]


>  [1] Кулясов ©   (05.04.04 00:35)

Таких совпадений Имени и фамилии не бывает. Да еще и города.. может это я вчера ночью написал или кто подкалывает...


← →
Nous Mellon ©   (2004-04-05 06:51) [4]


> Таких совпадений Имени и фамилии не бывает. Да еще и города..
> может это я вчера ночью написал или кто подкалывает...

господи боже у нас еще и образование одинаковое... у меня наверно раздвоение личности...


← →
тихий вовочка ©   (2004-04-05 07:18) [5]

Дело не в в знании или незнании Delphi, тут просто кто-то про функцию арктангенса никогда не слышал.
Когда-то передо мной стояла задача определения угла, между точкой где мышкой кликнули и полярной диаграммой. Делал это так:
{X,Y - координаты мыши(точки а в вашем случае}
{center,center - координаты центра(точки б в вашем случае}

var
x,y,Angle : real;
begin
x:=X-center;
y:=center-Y;

if(x=0) then Angle:=90
else
begin
Angl:e=RadToDeg(atan(y/x));
if(x<=0)then Angle:=Angle+180 else
if(y<0)then Angle:=Angle+360;
end;

ShowMessage("angle="+FloatToStrF(Angle,ffFixed,3,1)+ deg, RCS="+FloatToStrF(x+pMin,ffFixed,3,1)+" dB");


← →
Феликс ©   (2004-04-05 21:04) [6]

Господа, большое спасибо за ваши ответы... особые благодарности участникам с никами:
тихий вовочка
Nous Mellon
Stratos
Кулясов
Еще раз спасибо.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
14-1080983615
Chahpa
2004-04-03 13:13
2004.04.25
Мышь


14-1080933735
Феликс
2004-04-02 23:22
2004.04.25
Траектория минометного снаряда?


1-1081245559
killer
2004-04-06 13:59
2004.04.25
TStringList и ListBox.Items


4-1077900302
PVR
2004-02-27 19:45
2004.04.25
Как получить список импортируемых модулей


7-1078403652
mike_g
2004-03-04 15:34
2004.04.25
Работа с com портами




   Наверх