Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ГРАФИК ТРАКТРИСЫ [D7, WinXP]


Ivan ©   (2012-05-17 20:57:00) 

вообщем программа не работает.не рисует график трактрисы.Что-то не так. если что исправьте.убираю логарифм работает ,только это не трактриса...

чем быстрее поможете тем лучше.юлагодарю

<procedure TForm1.Button1Click(Sender: TObject);
var xc,yc,w,h,i:integer;
   a,t,r,mx,my,x,y:real;
begin
xc:=Width div 2;
yc:=ClientHeight div 2-30;
w:=(xc-10);
h:=(yc-10);
mx:=(w-10)/5;
my:=(h-10)/5;
with Canvas do
begin
 Brush.Color:=clWhite;
 Pen.Color:=clBlack;
 rectangle(5,5,2*w+5,2*h+5);
 Pen.Width:=3;
 MoveTo(10,yc);
 LineTo(2*w,yc);
 MoveTo(xc,10);
 LineTo(xc,2*h);
 textout(2*w-20,yc-20,'X');
 textout(xc-20,10,'Y');
 textout(xc+10,yc+10,'0');
 Pen.Width:=1;
 Pen.Style:=psDash;
 for i:=1 to 5 do
  begin
   MoveTo(xc+round(i*mx),10); LineTo(xc+round(i*mx),2*h);
   MoveTo(xc-round(i*mx),10); LineTo(xc-round(i*mx),2*h);
   textout(xc+round(i*mx),yc+10,Inttostr(i));
   textout(xc-round(i*mx),yc+10,Inttostr(-i));
   MoveTo(10,yc-round(i*my)); LineTo(2*w,yc-round(i*my));
   MoveTo(10,yc+round(i*my)); LineTo(2*w,yc+round(i*my));
   textout(xc-30,yc-round(i*my),Inttostr(i));
   textout(xc-30,yc+round(i*my),Inttostr(-i));
  end;
t:= 0; a:= 60;
while t<=2*pi+1e-8 do
 begin     {  if (cos(phi/2)<>0)and(sin(phi/2)<>0) then
 begin
            }
   x:=a*ln(sin(t/2)/cos(t/2))+cos(t);
  y:=a*sin(t);
  pixels[xc+round(x*mx),yc-round(y*my)]:=clred;
  t:=t+0.001;
 end;
end;
end;

end.>


Ivan   (2012-05-19 20:59:00) [1]

заработала машинка))))
формула правильная.  собака была зарыта в параметре и в пределах изменения этого же параметра t

получился график.

благодарю,<MBo> за вашу терпеливость.И вообще в помощи.

<Вот и подошли к самому главному.>    //разве нельзя с пониманием отнестись.

Я же не с пустым кодом пришёл на форум.


MBo   (2012-05-19 18:19:00) [2]

В [10] посту я описал все изменения, после которых график стал нормальным


Inovet   (2012-05-19 18:08:00) [3]

> [17] Ivan   (19.05.12 15:42)
> (скинь текс чтоб посмотреть тогда)

Вот и подошли к самому главному.


Ivan   (2012-05-19 15:42:00) [4]

график значит рисует?
(скинь текс чтоб посмотреть тогда)


MBo   (2012-05-19 11:54:00) [5]

у меня работает


Ivan   (2012-05-19 11:21:00) [6]

<дело не в тангенсе, а в неправильной формуле>

это ваша формула x:=a*(ln(tan(t/2))+cos(t));
Она тоже на работает.какая же будет формула правильная тогда?


Германн   (2012-05-19 02:12:00) [7]


> MBo ©   (18.05.12 21:01) [13]

Я всего лишь хотел сказать автору, что функция tan в Дельфи есть. Но в отличие от функций sin и cos она не зашита в "magic compile" модуль system.
А в математике я даже и не пытаюсь соревноваться  вами "дальневосточниками" :)


MBo   (2012-05-18 21:01:00) [8]

дело не в тангенсе, а в неправильной формуле


Германн   (2012-05-18 17:28:00) [9]


> дело втом что делфи выдает ошибку.что типа тангенса нет.

uses Math


Ivan   (2012-05-18 17:00:00) [10]

<x:=a*(ln(tan(t/2))+cos(t))>  

дело втом что делфи выдает ошибку.что типа тангенса нет.

Поэтому я взял x:=a*ln(sin(t/2)/cos(t/2))+cos(t);
Почему график недорисовывает?


MBo   (2012-05-18 13:33:00) [11]

t= Pi/12...11*Pi/12
a = 5 (для данной шкалы)
x:=a*(ln(tan(t/2))+cos(t));


Ivan   (2012-05-18 10:21:00) [12]

<логарифм от нуля чему равен?>
в коде один из вариантов который я написал переменной t.при значении 1 и т.д. тоже не канает


Ivan   (2012-05-18 10:20:00) [13]

<Правильно запиши формулу для X, поставь адекватные пределы по t, и разумное значение a, и всё получится>

разве формула для x неправильная?

поставил t<pi,при t=1;2;(для остальных значений не удовлетворяет) работает .благодарю за подсказку.     А график не симметричен относительно оси ОY/(не дорисовывает в отрицательной полуплоскости).в чём тут причина?

И можете заодно прояснить ситуацию с TChArt/


RWolf   (2012-05-18 09:59:00) [14]

логарифм от нуля чему равен?


Ivan   (2012-05-18 09:51:00) [15]

Попробовал.через TChart/    снова в чем-то ошибка.не выводит график.Люди добрые, отзовитесь?

<procedure TForm1.Button1Click(Sender: TObject);

const th=0.01;
var
t,a,tmax:real;
begin

a:=strtofloat(edit1.text);
tmax:=strtofloat(edit2.text);

t:=0;
while t<tmax//максимальное время
do
begin

chart1.series[1].AddXY(a*sin(t),a*(cos(t)+ln(Sin(t/2)/Cos(t/2))),'', clBlue);

t:=t+th;
end;
end;

end.>


MBo   (2012-05-17 21:50:00) [16]

Правильно запиши формулу для X, поставь адекватные пределы по t, и разумное значение a, и всё получится


RWolf   (2012-05-17 21:49:00) [17]

фишка в масштабе.
этот график вылетает далеко за выбранные границы координатной сетки.


Ivan   (2012-05-17 21:22:00) [18]

...
begin       if (cos(t/2)<>0)and(sin(t/2)<>0) then
 begin
            ...


Ivan   (2012-05-17 21:13:00) [19]

НЕ Я СЕРЬЕЗНО.)))))В ЧЕМ ФИШКА А?


brother   (2012-05-17 21:06:00) [20]

> чем быстрее поможете тем лучше.юлагодарю

давай через месяц?
зы. скоро - толкько кошки родятся...


Наверх

Титульная страница Поиск, карта сайта Написать письмо