Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: 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 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
1-1081235063
jenbond
2004-04-06 11:04
2004.04.25
Проблемма со сборкой проекта


6-1077166867
@ac
2004-02-19 08:01
2004.04.25
Как побайтово скачать файл c помощью NMHTTP? Можно скачать часть


14-1080633357
syte_ser78
2004-03-30 11:55
2004.04.25
Фильтр русских значений


6-1077880530
sucer
2004-02-27 14:15
2004.04.25
Поблема с NetMessageBufferSend


11-1064430678
miek
2003-09-24 23:11
2004.04.25
Кладову: утечка памяти в KOL