Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.05.2011, 11:11
Мандрюля Мандрюля вне форума
Прохожий
 
Регистрация: 27.05.2011
Адрес: Екатеринбург
Сообщения: 13
Репутация: 10
По умолчанию Помогите с графиком функции

Разработать приложение, которое построит астроиду, задаваемую уравнениями:
x=a*cos3t, y=a*sin3t, где a>0, t от [0, 2pi).

cos3 и sin3 это в третьей степени.

вывожу систему координат, а график либо смещается, либо вообще не отображается.
помогите плизз
Ответить с цитированием
  #2  
Старый 27.05.2011, 13:45
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Тебе такое надо?



Если да, то вот
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  a: Integer;
  x, y, t: Real;
begin
  a := 10;
  t := 0;
  while t < 2*PI do
    begin
      x := a*((3*COS(t) + COS(3*t))) / 4;
      y := a*((3*SIN(t) - SIN(3*t))) / 4;
      Series1.AddXY(X, Y, '', clRed);
      t := t + 0.001;
    end;
end;
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.

Последний раз редактировалось Kailon, 27.05.2011 в 18:18.
Ответить с цитированием
  #3  
Старый 27.05.2011, 15:07
Ambassador Ambassador вне форума
Прохожий
 
Регистрация: 24.05.2009
Сообщения: 18
Репутация: 10
По умолчанию

О чем идет речь? паскаль? дельфи? способ реализации? можно и на канвасе точками натыкать...
Ответить с цитированием
  #4  
Старый 27.05.2011, 23:09
Мандрюля Мандрюля вне форума
Прохожий
 
Регистрация: 27.05.2011
Адрес: Екатеринбург
Сообщения: 13
Репутация: 10
По умолчанию

да да это)) а что такое Series1.AddXY(X, Y, '', clRed); мне ошибку выдает..

Последний раз редактировалось Мандрюля, 27.05.2011 в 23:21.
Ответить с цитированием
  #5  
Старый 27.05.2011, 23:22
Мандрюля Мандрюля вне форума
Прохожий
 
Регистрация: 27.05.2011
Адрес: Екатеринбург
Сообщения: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от Ambassador
О чем идет речь? паскаль? дельфи? способ реализации? можно и на канвасе точками натыкать...


да хоть как в принципе-то)) это из госов задача, а способ реализации любой, лишь бы решить
Ответить с цитированием
  #6  
Старый 28.05.2011, 00:10
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,036
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Мандрюля
да да это)) а что такое Series1.AddXY(X, Y, '', clRed); мне ошибку выдает..

Это добавление точки на графике в TChart.
На этапе дизайна надо в TChart создать серию.
Ответить с цитированием
  #7  
Старый 29.05.2011, 12:17
Мандрюля Мандрюля вне форума
Прохожий
 
Регистрация: 27.05.2011
Адрес: Екатеринбург
Сообщения: 13
Репутация: 10
По умолчанию

а если на канвасе просто сделать, то как?
Код:
procedure TForm1.FormPaint(Sender: TObject);
var
 x,y,t,a:real;
begin
a:=2;
Form1.Canvas.MoveTo(0, ClientWidth div 2);
Form1.Canvas.LineTo (ClientHeight, ClientWidth div 2);
Form1.Canvas.MoveTo(ClientHeight div 2,0);
Form1.Canvas.LineTo (ClientHeight div 2, ClientWidth);
{Form1.Canvas.Pixels[200,200]:=clRed; }
while t < 2*PI do
    begin
      x:= a*((3*COS(t) + COS(3*t))) / 4;
      y:= a*((3*SIN(t) - SIN(3*t))) / 4;
     Form1.Canvas.Pixels[round(X),round(Y)];
      t := t + 0.001;
      end;
Админ: Не забываем теги для оформления кода.

у меня система координат выводится, а сам график нет

Последний раз редактировалось Admin, 30.05.2011 в 16:30.
Ответить с цитированием
  #8  
Старый 30.05.2011, 13:54
Аватар для Моклев
Моклев Моклев вне форума
Новичок
 
Регистрация: 27.02.2009
Адрес: Лен. обл., г. Коммунар
Сообщения: 53
Версия Delphi: 7 и 2010
Репутация: 16
По умолчанию

потому что ты просто пишешь pixels, но ничего не присваиваешь
кст, еще ClientWidth и ClientHeight перепутал

Код:
procedure TForm1.FormPaint(Sender: TObject);
var
x,y,t,a:real;
begin
a:=200;
Form1.Canvas.MoveTo(0, ClientHeight div 2);
Form1.Canvas.LineTo (ClientWidth, ClientHeight div 2);
Form1.Canvas.MoveTo(ClientWidth div 2,0);
Form1.Canvas.LineTo (ClientWidth div 2, ClientHeight);
{Form1.Canvas.Pixels[200,200]:=clRed; }
t:=0;
while t < 2*PI do
begin
x:= a*((3*COS(t) + COS(3*t))) / 4;
y:= a*((3*SIN(t) - SIN(3*t))) / 4;
Form1.Canvas.Pixels[round(X)+ClientWidth div 2,round(Y)+ClientHeight div 2]:=clBlack;
t := t + 0.001;
end;
end;
Ответить с цитированием
  #9  
Старый 04.06.2011, 14:21
Мандрюля Мандрюля вне форума
Прохожий
 
Регистрация: 27.05.2011
Адрес: Екатеринбург
Сообщения: 13
Репутация: 10
По умолчанию

Спасибо большое)) все работает. я просто ступила чего-то)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:31.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter