![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Воощем у меня есть график для построения синуса и косинуса,а как мне его переделать для
построения графиков y=tg (x), y=ctg (x) построения графиков y=sec (x), y=cosec (x) построения графика циклоиды y=a (t-sin t) ?? Код:
unit ugraf;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons;
type
TFgraf = class(TForm)
Panel1: TPanel;
Image1: TImage;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure formcreate(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Fgraf: TFgraf;
implementation
{$R *.dfm}
procedure TFgraf.BitBtn1Click(Sender: TObject);
var
alpha1, alpha2: Integer; // переменные для начального
// и конечного значения угла
z: integer; // переменная для организации цикла
q: integer; // внутренний счетчик
fun: integer; // Значение функции в цикле
begin
alpha1:= StrToInt(Edit2.text); //Считываем начальное значение угла
alpha2:= StrToInt(Edit3.Text); // Конечное значение угла
q:= 2;
for z:= alpha1 to alpha2 do // Создаем цикл от начального до конечного
//значения угла
begin
if UpperCase(Edit1.text) = 'SIN' then
fun:= round(sin(z*3.14/180)*60);
if UpperCase(Edit1.text) = 'COS' then
fun:= round(cos(z*3.14/180)*80);
image1.canvas.pixels[q,fun+ image1.Height div 2]:= clBlack;
inc(q);
end;
end;
procedure TFgraf.BitBtn2Click(Sender: TObject);
var r: TRect;
begin
r:= rect(0, 0, image1.width, image1.height);
with Image1.canvas do
begin
brush.style:= bsSolid;
fillrect(r);
pen.color:= clRed;
rectangle(2, 2, image1.width-2, image1.height-2);
moveto(2,image1.Height div 2);
lineto(image1.width-2,Image1.Height div 2);
end;
end;
procedure TFgraf.formcreate(Sender: TObject);
begin
edit1.text:= 'SIN';
edit2.text:= '1';
edit3.text:= '1000';
end;
end. |
|
#2
|
||||
|
||||
|
Там надо подключить модуль Math для других мат. функций, возможно, ещё для этих функций шаг приращения к иксу уменьшить.
|
| Этот пользователь сказал Спасибо DelphiM0ZG за это полезное сообщение: | ||
cyber922 (24.01.2012)
| ||
|
#3
|
|||
|
|||
|
Цитата:
ООо, спасибо, я просто забыл формулы для этих значений, так как в математике не силен...) немножко переделаю) а так классно) |
|
#4
|
|||
|
|||
|
Цитата:
|
|
#5
|
|||
|
|||
|
Ну, циклоиду делать точно так же:
y = a* (x - sin(X)); |
|
#6
|
|||
|
|||
|
Цитата:
как то странно получается, под этой формулой идет просто прямая линия по центру... так и должно быть? |
|
#7
|
||||
|
||||
|
Код:
y = a * (x - sin(X)); |
|
#8
|
|||
|
|||
|
Цитата:
у меня А ничему не равно, я просто должен их сам задавать... |
|
#9
|
||||
|
||||
|
При а=0 будет умножение на ноль. Что тебя удивляет в прямой линии по центру?
|
|
#10
|
|||
|
|||
|
Цитата:
|