powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Матем. вопрос. Расчет угла противолежащего катета.
19 сообщений из 44, страница 2 из 2
Матем. вопрос. Расчет угла противолежащего катета.
    #35925527
x:= x0 + speed * cos(angle*180/PI) * time;
y := y0 - speed * sin(angle*180/PI) * time; - еще вариант
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #35925535
Dumfl_ME,
x:= x0 + speed * cos(angle*180/PI) * time;
y := y0 - speed * sin(angle*180/PI) * time; - еще вариант
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #35925761
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dumfl_MEmaytonВ этом форуме есть хоть один человек, который может открыть справочник Делфи и посмотреть????
Согласно вашей логике, этот форум не нужен вовсе. Достаточно книжек...
Вопрос задан не по Дельфи а по математике, никто не заставляет Вас дорогой на него отвечать, если Вы считаете что это ниже вашего достоинства отвечать на глупые вопросы, то зачем отвечаете грозными словами RTFM?
Человек не может в чем то разобраться... пытается найти информацию, идёт за помощью на форум, если вы не можете или не хотите оказать помощь то нет необходимости писать о том что вы не хотите этого делать делая вид что всё знаете.

Здесь не любят таких как я да?!

Сформулируй чёткую задачу, что надо сделать... Просто лично я в твоих мыслях путаюсь :) На вопрос как найти угол тебе уже ответили в самом начале, а далее задача стала непонятной? Куда надо сдвинуть точку? По какой траектории? типа вдоль гипотенузы (увеличивая/уменьшая гипотенузу)?
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #35926181
ss18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa ss18 , потому как

автор Синус - одна из тригонометрических функций, обозначется sin. Синусом угла в треугольнике называют отношение катета, лежащего против этого угла (противолежащего катета), к гипотенузе.
Взято тут ...

Если вспомнить условие автора значения гипотенузы у нас нет.

Как это нет???? а куда она делать из прямоугольного треугольника ????
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #35941142
Serhio1985
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А это всё в аксиомах еклидовой геометрии нужно считать ?
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #35966395
Dumfl_ME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Короче... вот что я хотел сделать. Сделал в тот же день, но сейчас нарвался на свою тему и решил выложить что получилось.
Спасибо всем врединам за участие:
Проблема была при расчете полёта не взорвавшегося снаряда.
Можете ещё разок обкакать код :)

На форму нужно кинуть paintbox и timer.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
 unit  Unit1;

 interface 

 uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

 type 
  TPix =  record 
    x:  array [ 1 .. 255 ]  of  real;
    y:  array [ 1 .. 255 ]  of  real;
    s:  array [ 1 .. 255 ]  of  real;
    a:  array [ 1 .. 255 ]  of  integer;
   end ;

  TRPix =  record 
    x:  array [ 1 .. 4 ]  of  Real;
    y:  array [ 1 .. 4 ]  of  Real;
    x0:  array [ 1 .. 4 ]  of  Real;
    y0:  array [ 1 .. 4 ]  of  Real;
    r:  array [ 1 .. 4 ]  of  Real;
    a:  array [ 1 .. 4 ]  of  Integer;
    t:  array [ 1 .. 4 ]  of  Real;
   end ;

  TForm1 =  class (TForm)
    Timer2: TTimer;
    PaintBox1: TPaintBox;
     procedure  FormKeyDown(Sender: TObject;  var  Key: Word;
      Shift: TShiftState);
     procedure  Timer2Timer(Sender: TObject);
     procedure  FormPaint(Sender: TObject);
   private 
     { Private declarations } 
     procedure  RocketStart(ni: SmallInt);
   public 
     { Public declarations } 
   end ;

 var 
  Form1: TForm1;
  buff: Tbitmap;

  Sb:  record 
    boom:  array [ 1 .. 10 ]  of  Boolean;
    color:  array [ 1 .. 10 ]  of  TColor;
    elem:  array [ 1 .. 10 ]  of  TPix;
    relem:  array [ 1 .. 10 ]  of  TRPix;
    time:  array [ 1 .. 10 ]  of  Real;
    x0:  array [ 1 .. 10 ]  of  Real;
    y0:  array [ 1 .. 10 ]  of  real;
    rx:  array [ 1 .. 10 ]  of  real;
    ry:  array [ 1 .. 10 ]  of  Real;
    rx0:  array [ 1 .. 10 ]  of  real;
    ry0:  array [ 1 .. 10 ]  of  Real;
    ra:  array [ 1 .. 10 ]  of  real;
    tarx:  array [ 1 .. 10 ]  of  Real;
    tary:  array [ 1 .. 10 ]  of  real;
    allout:  array [ 1 .. 10 ]  of  Boolean;
   end ;

  i, j: integer;  //cycle 
  fcolor: TColor;
  colorchik: SmallInt;
  nrelem: Integer;

 implementation 

 uses  Math;

 {$R *.dfm} 
 const 
  colp =  255 ;
  colv =  10 ;
  colRE =  4 ;
  TimeStep =  0 . 7 ;
  G =  0 . 2 ;
  RSpeed =  5 ;
  RESpeed =  0 . 5 ;
  txt = 'Hello world!';

 procedure  TForm1.FormKeyDown(Sender: TObject;  var  Key: Word;
  Shift: TShiftState);
 begin 
   if  key =  27   then  close;
 end ;

 procedure  TForm1.Timer2Timer(Sender: TObject);
 var  th, tw: Integer;
  kh: Integer;  //cycle 
 begin 
  buff.Canvas.Brush.Color := clBlack;
  buff.Canvas.Pen.Color := clBlack;
  buff.Canvas.Rectangle( 0 ,  0 , buff.Width, buff.Height);

  buff.Canvas.Font.Color := fcolor;
  buff.Canvas.Font.Size :=  76 ;
  buff.Canvas.Font.Name := 'Monotype Corsiva';
   if  fcolor =  0   then  colorchik :=  1 ;
   if  fcolor =  255   then  colorchik := - 1 ;
  TW := buff.Canvas.TextWidth(txt);
  TH := buff.Canvas.TextHeight(txt);
  buff.Canvas.TextOut(Round(buff.Width /  2 ) - round(tw /  2 ), Round(buff.Height /  2 ) - round(th /  2 ), txt);
  fcolor := fcolor + colorchik;

   for  i :=  1   to  colv  do 
   begin 
     if  Sb.boom  then 
     begin   [i]//BOOM! 
      Sb.allout := true;
       for  j :=  1   to  colp  do 
       begin 
         begin 
          Sb.elem[i].x[j] := Sb.x0[i] + Sb.elem[i].s[j] * cos(Sb.elem[i].a[j] * PI /  180 ) * Sb.time[i];
          Sb.elem[i].y[j] := Sb.y0[i] - Sb.elem[i].s[j] * sin(Sb.elem[i].a[j] * PI /  180 ) * Sb.time[i] + G * Sb.time[i] * Sb.time[i] /  2 ;
          buff.Canvas.Pen.Color := SB.color[i];
          buff.Canvas.Brush.Color := SB.color[i];
          buff.Canvas.Ellipse(round(Sb.elem[i].x[j] -  2 ), round(Sb.elem[i].y[j] -  2 ), round(Sb.elem[i].x[j] +  2 ), round(Sb.elem[i].y[j] +  2 ));
           if  (Sb.elem[i].y[j] < buff.Height)  then 
            Sb.allout[i] := false;
         end ;
       end ;
       if  sb.allout[i]  then 
        RocketStart(i);
     end 
     else 
     begin   [i]//ROCKET 

      Sb.rx := Sb.rx0[i] + RSpeed * cos(Sb.ra[i] * PI /  180 ) * Sb.time[i];
      Sb.ry[i] := Sb.ry0[i] - RSpeed * sin(Sb.ra[i] * PI /  180 ) * Sb.time[i];
       if  sb.ry[i] <= sb.tary[i]  then 
       begin 
        Sb.x0[i] := sb.tarx[i];
        Sb.y0[i] := sb.tary[i];
        Sb.time[i] :=  0 ;
        Sb.boom[i] := true;
       end ;
      buff.Canvas.Pen.Color := SB.color[i];
      buff.Canvas.Brush.Color := SB.color[i];
      buff.Canvas.Ellipse(round(Sb.rx[i] -  3 ), round(Sb.ry[i] -  3 ), round(Sb.rx[i] +  3 ), round(Sb.ry[i] +  3 ));

       [i]//--------------------------------------------------------------------- 
       for  kh :=  1   to  colRE  do   //ELEM 
       begin 
         if  sb.relem.r[kh] <  0   then 
         begin 
          Sb.relem[i].r[kh] :=  6 ;
          Sb.relem[i].t[kh] :=  0 ;
          Sb.relem[i].x0[kh] := Sb.rx[i];
          Sb.relem[i].y0[kh] := Sb.ry[i];
          Sb.relem[i].a[kh] := Round(SB.ra[i]) +  180  + random( 180 ) -  90 ;
         end ;

        Sb.relem[i].x[kh] := Sb.relem[i].x0[kh] + RESpeed * cos(Sb.relem[i].a[kh] * PI /  180 ) * Sb.relem[i].t[kh];
        Sb.relem[i].y[kh] := Sb.relem[i].y0[kh] - RESpeed * sin(Sb.relem[i].a[kh] * PI /  180 ) * Sb.relem[i].t[kh];
        sb.relem[i].r[kh] := sb.relem[i].r[kh] -  0 . 1 ;
        buff.Canvas.Ellipse(round(Sb.relem[i].x[kh] - Round(Sb.relem[i].r[kh] /  2 )),
          round(Sb.relem[i].y[kh] - Round(Sb.relem[i].r[kh] /  2 )),
          round(Sb.relem[i].x[kh] + Round(Sb.relem[i].r[kh] /  2 )),
          round(Sb.relem[i].y[kh] + Round(Sb.relem[i].r[kh] /  2 )));
        Sb.relem[i].t[kh] := Sb.relem[i].t[kh] + TimeStep;
       end ;
       [i]//--------------------------------------------------------------------- 
     end ;
    Sb.time[i] := Sb.time[i] + TimeStep;
   end ;

  BitBlt(PaintBox1.Canvas.Handle,  0 ,  0 , PaintBox1.Width, PaintBox1.Height, buff.Canvas.Handle,  0 ,  0 , SRCCOPY);
 end ;

 procedure  TForm1.RocketStart(ni: SmallInt);
 var 
  aTR, bTR: Integer;
  Ji: Integer;
 begin 
   for  ji :=  1   to  colp  do 
   begin 
    Sb.elem[ni].a[ji] := Random( 359 );
    Sb.elem[ni].s[ji] := Random( 1000 ) /  100  +  1 ;
   end ;
  Sb.rx0[ni] := Random(buff.Width) +  1 ;
  Sb.ry0[ni] := buff.Height;
  Sb.rx[ni] := SB.rx0[ni];
  Sb.ry[ni] := SB.ry0[ni];
  Sb.tarx[ni] := Random(buff.Width) +  1 ;
  Sb.tary[ni] := Random(buff.Height - round(buff.Height /  3 )) + round(buff.Height /  3 ) - round(buff.Height /  5 );
  aTR := (round(Sb.tarx[ni] - Sb.rx0[ni]));
  bTR := (round(Sb.ry0[ni] - Sb.tary[ni]));
  Sb.ra[ni] := (ArcTan2(btr, atr) / PI *  180 );

   for  Ji :=  1   to  colRE  do 
   begin 
    Sb.relem[ni].a[ji] := Round(SB.ra[ni]) +  180  + random( 180 ) -  90 ;
    Sb.relem[ni].r[ji] := Random( 5 ) +  1 ;
    Sb.relem[ni].t[ji] :=  0 ;
    Sb.relem[ni].x0[ji] := Sb.rx0[ni];
    Sb.relem[ni].y0[ji] := Sb.ry0[ni];
   end ;

  Sb.boom[ni] := false;
  Sb.allout[ni] := false;
  Sb.color[ni] := Random( 6 ) +  1 ;
   case  Sb.color[ni]  of 
     1 : Sb.color[ni] := clRed;
     2 : Sb.color[ni] := clYellow;
     3 : Sb.color[ni] := clLime;
     4 : Sb.color[ni] := clPurple;
     5 : Sb.color[ni] := clBlue;
     6 : Sb.color[ni] := clAqua;
   end ;
  Sb.time[ni] :=  0 ;
 end ;

 procedure  TForm1.FormPaint(Sender: TObject);
 begin 
  PaintBox1.Left :=  0 ;
  PaintBox1.Top :=  0 ;
  PaintBox1.Width := form1.Width;
  PaintBox1.Height := form1.Height;
  buff := TBitmap.Create;
  buff.Width := PaintBox1.Width;
  buff.Height := PaintBox1.Height;
  buff.PixelFormat := pf32bit;
  fcolor :=  0 ;
  randomize;
   for  i :=  1   to  colv  do 
   begin 
    RocketStart(i);
   end ;
  Timer2.Enabled := true;
 end ;

 end .
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #35966603
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первая какашка в тебя:

Обилие статических массивов в структурах. Обычно так не делают. Надо создавать массив из однотипных структур.
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #35966653
Dumfl_ME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonПервая какашка в тебя:

Обилие статических массивов в структурах. Обычно так не делают. Надо создавать массив из однотипных структур.

Не до конца понимаю о чем вы говорите.
Точнее я наверное понял идею того что ограничения в массивах это не есть гуд. Вы предлагаете напрямую выделять память?
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #35966724
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясню. Ты пишешь.

Код: plaintext
1.
2.
3.
4.
5.
TPix = record
    x: array[ 1 .. 255 ] of real;
    y: array[ 1 .. 255 ] of real;
    s: array[ 1 .. 255 ] of real;
    a: array[ 1 .. 255 ] of integer;
  end;

Создал 4 вектора по 255 элементов. Очевидно для моделирования движения множества частиц или хр. знает еще чего-то.

Но я-бы сделал так.

Код: plaintext
1.
2.
3.
4.
5.
TPix = record
    x: real;
    y: real;
    s: real;
    a: integer;
  end;

И где-нибудь в коде создал-бы статический (или лучше динамический) массив этих частиц.

Я не специалист в Delphi, но недеюсь что паттерны правильного проектирования, которые я использую в C++/Java/C# можно переносить и сюда.
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #35996312
Jester_Skovorodker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dumfl_MEКороче... вот что я хотел сделать. Сделал в тот же день, но сейчас нарвался на свою тему и решил выложить что получилось.
Спасибо всем врединам за участие:
Проблема была при расчете полёта не взорвавшегося снаряда.
Можете ещё разок обкакать код :)

На форму нужно кинуть paintbox и timer.


Красиво, молодец!
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #36632792
Sergey81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы забыли вспомнить область определения тангенса и всякое другое:
var
x, y : real;
alpha : real;
begin
read(x, y);
if x=0 then
if y>0 then alpha:=pi / 2
else if y<0 then alpha:= 3 * pi / 2
else write(‘угол неопределен’) {для точки (0,0) нет полярного угла}
else begin
alpha:=arctan(y/x);
if x<0 then alpha := alpha + pi; {проверим, находится ли угол в левой части координатной плоскости}

if alpha<0 then alpha := alpha + 2 * pi; {обеспечим чтобы найденный угол лежал в интервале (0; 2π)}
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #36632795
Sergey81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
var
x, y : real;
alpha : real;
begin
read(x, y);
if x=0 then
if y>0 then alpha:=pi / 2
else if y<0 then alpha:= 3 * pi / 2
else write(‘угол неопределен’) {для точки (0,0) нет полярного угла}
else begin
alpha:=arctan(y/x);
if x<0 then alpha := alpha + pi; {проверим, находится ли угол в левой части координатной плоскости}
if alpha<0 then alpha := alpha + 2 * pi; {обеспечим чтобы найденный угол лежал в интервале (0; 2π)}
end;
end.
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #36632960
Dumfl_ME
Человек не может в чем то разобраться... пытается найти информацию, идёт за помощью на форум, если вы не можете или не хотите оказать помощь то нет необходимости писать о том что вы не хотите этого делать делая вид что всё знаете.

Хотим оказать помощь, но не можем, тк. тригонометрии учат малых детей в школе, а мы не учителя. Ты хочешь написать программу, не зная ОСНОВ математики. Там нет ничего сложного, бери учебники, справочники и изучай. Нельзя написать роман не выучив азбуку.

Dumfl_ME
x:= x0 + speed * cos(angle*PI/180) * time;
y:= y0 - speed * sin(angle*PI/180) * time;

Сдается мне, что ты собрался писать игру
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #36633323
Gys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gys
Гость
ТС это наверно один из тех кто говорит математика программистам не нужна)))
п.с. хотя математика за школьный курс нужна всем.
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #36633558
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gysхотя математика за школьный курс нужна всем.хотя бы для того, чтобы посмотреть на дату исходного сообщения и сопоставить с нынешней
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #36635088
Gys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Gys
Гость
egorychGysхотя математика за школьный курс нужна всем.хотя бы для того, чтобы посмотреть на дату исходного сообщения и сопоставить с нынешней

1.Я видел дату до написания свого поста
2.Не я поднял топик
3.Я не обращался к ТС...а выступил в роле голоса за кадром для всех смотрящих эту тему(т.к. её уже подняли, смотреть её будут другие).
Так что садитесь два! =)
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #36635137
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GysТак что садитесь два! =)да я и не вставал, не переживайте =)
ЗЫ анонимус какой обидчивый нынче пошёл, право ))
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #36635270
egorychпосмотреть на дату исходного сообщения и сопоставить с нынешней
А и то правда. Из 19 мая вычесть 10 апреля. Это будет... Будет это... Ровно 1 мес и 9 дней. А из 2010 года вычесть 9-й, это получится... Получается у нас, 2001 год 1 месяц и 9 дней. Много.
...
Рейтинг: 0 / 0
Матем. вопрос. Расчет угла противолежащего катета.
    #36635288
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Унрегистеред, а что вы хочите, это очень древний форум. бывают сообщения и 9го года, и 4го, совсем в архивах, небось, сохранились ещё темы, поднятые ещё до рождества Христова.
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Матем. вопрос. Расчет угла противолежащего катета.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]