Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Графики, Построение графиков на одной форме 
:(
    Опции темы
Morgenstern
  Дата 22.3.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 17.3.2007
Где: Мелитополь

Репутация: нет
Всего: нет



Необходимо на одной форме изобразить следующее:

y=5/Cos(x) на интервале [-25;25] и Четырехлепестковую розу R=a*Sin(2*t)    0<=t<=360 градусов
Построить именно точечный график функций на заданном интервале. Шаг изменения переменной Х выбрать таким образом, чтобы график выглядел непрерывной кривой. Цвет кривой чтобы выбирал пользователь. Интервал изменения переменной Х указывает пользователь. Выдавать сообщение, если график на заданном интервале нельзя построить. При необходимости выполнять масштабирование графика.

С первым я чуть разбиралась. Не могу понять, как сделать другие указания, которые перечислены выше. Исправьте\добавьте\объясните, плиз.

Код

var
  Form1: TForm1;

implementation

{$R *.DFM}

Function f(x:real):real;
 begin
    f:=5/cos(x);
 end;

procedure TForm1.Button1Click(Sender: TObject);

var
 x1,x2:real;    // границы изменения аргумента функции
 y1,y2:real;    // границы изменения значения функции
 x:real;        // аргумент функции
 y:real;        // значение функции в точке x
 dx:real;       // приращение аргумента
 l,b:integer;   // левый нижний угол области вывода графика
 w,h:integer;   // ширина и высота области вывода графика
 mx,my:real;    // масштаб по осям X и Y
 x0,y0:integer; // точка - начало координат

begin
 // область вывода графика
 l:=10;                      // X - координата левого верхнего угла
 b:=Image2.Height-20;        // Y - координата левого верхнего угла
 h:=Image2.ClientHeight-40;  // высота
 w:=Image2.Width-40;         // ширина
 x1:=-25;      // нижняя граница диапазона аргумента
 x2:=25;    // верхняя граница диапазона аргумента
 dx:=0.04;   // шаг аргумента

 // найдем максимальное и минимальное значения
 //  функции на отрезке [x1,x2]
 y1:=f(x1); // минимум
 y2:=f(x1); // максимум
 x:=x1;
 repeat
   y := f(x);
   if y < y1 then y1:=y;
   if y > y2 then y2:=y;
   x:=x+dx;
 until (x>=x2);

 // вычислим масштаб
 my:=h/abs(y2-y1);  // масштаб по оси Y
 mx:=w/abs(x2-x1);  // масштаб по оси X
 // оси
 x0:=l;
 y0:=b-Abs(Round(y1*my));

 with image2.Canvas do
 begin
   // оси
   MoveTo(l,b);LineTo(l,b-h);
   MoveTo(x0,y0);LineTo(x0+w,y0);
   TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));
   TextOut(l+5,b,FloatToStrF(y1,ffGeneral,6,3));
   // построение графика
   x:=x1;
   repeat
     y:=f(x);
     Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;
     x:=x+dx;
   until (x>=x2);
 end;

end;

end.


Вот, а второй вообще не могу понять, как сделать.  smile 
PM MAIL WWW ICQ   Вверх
Farmazon
Дата 22.3.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Разработчик
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 7.7.2006

Репутация: нет
Всего: 5



 R=a*Sin(2*t)

x = R*sin(t+c)
y = R*cos(t+c)

наверное так... 4х лепестковую это 4 таких графика где c одно из значений {0;45;90;135} градусов



Это сообщение отредактировал(а) Farmazon - 22.3.2007, 19:49


--------------------
Таково моё общее мнение.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0380 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.