such-kursach

Тема в разделе "Железо и софт", создана пользователем Bubu, 9 апр 2014.

  1. Bubu

    Bubu Старожил

    В общем то мне нужно построить эпитрохоиду при помощи Delphi
    [​IMG]
    [​IMG]
    [​IMG]
    Осталась небольшая часть(если учитывать, что построил два "калькулятора" для ввода переменных, месье знает толк в извращениях)
    Суть в том, что осталось приписать кнопку, которая будет переводить значения из edit'a в значения, с которыми можно оперировать, после чего связать кнопку с chart'ом, где и пошла моя затупка, ведь я затупок.
    Код:
    procedure TForm1.Button26Click(Sender: TObject);
    begin
    if edit1.Text<>'' then R:=strtofloat(edit1.Text);
    if edit2.Text<>'' then h:=strtofloat(edit2.Text);
    r:=h;
    m:=r/R;
    t:=1;
    case x of
    o:=R*(m+1)*cos(m*t)-h*cos((m+1)*t));
    end;
    case y of
    p:=R*(m+1)*sin(m*t)-h*sin((m+1)*t));
    end;
    chart1.serieslist[0].addxy(R*(m+1)*cos(m*t)-h*cos((m+1)*t)));
    chart1.serieslist[1].addxy(R*(m+1)*sin(m*t)-h*sin((m+1)*t)));
    end;
     
    @dept и ZiDaDoN нравится это.
  2. momus

    momus *Придумайте название*

    скобку забыл
     
  3. Echo

    Echo Фаворит форума

    что это за набор букав?
     
  4. Bubu

    Bubu Старожил

    Какую?
    Да и вообще он что-нить то нарисует, а то у меня демка что ли какая-то, которая не дает запускать и отлаживать -_-
     
  5. tequilafamily

    tequilafamily Коренной житель

    ну ты и затупок, это же элементарно
     
  6. Nervious

    Nervious Коренной житель

    то черчение то программирование))загнался по учёбе ?
     
  7. Bubu

    Bubu Старожил

    Ну я внезапно осознал, что осталось около полутора месяцев до сессии, пора хоть что-то сделать
     
  8. momus

    momus *Придумайте название*


    [​IMG]
     
  9. Mikel

    Mikel Ангел у Истока

    Зачем оно тебе надо? В ЛоЛ играй лучше, а то мозги забиваешь ерундой, не надо так.
     
    kirillm86 нравится это.
  10. Echo

    Echo Фаворит форума

  11. momus

    momus *Придумайте название*

  12. Echo

    Echo Фаворит форума

    а не. жив-цел-орел. надо еще малипусенький пред. например за офф-топ в этой теме, чтоб выловить бан)
    --- добавлено: 9 апр 2014 ---
    монти потер. ты мб не увидел последнее.
     
  13. vanilla.ninja

    vanilla.ninja Фаворит форума

    что
    это
    за
    говно?

    Код:
    if edit2.Text<>'' then h:=strtofloat(edit2.Text);
    r:=h;
    зачем нужна переменная h?
    Код:
    t:=1;
    ты вообще не отдупляешь, что такое t, верно? :)
    Код:
    case x of
      #присваивание
    end;
    тут просто без комментариев
    Код:
    o:=R*(m+1)*cos(m*t)-h*cos((m+1)*t));
    p:=R*(m+1)*sin(m*t)-h*sin((m+1)*t));
    по лишней скобке (логику этих строк даже не будем пытаться понять)
    Код:
    chart1.serieslist[0].addxy(R*(m+1)*cos(m*t)-h*cos((m+1)*t)));
    параметров не маловато?

    очевидно, что даже то, что есть, написано не собственноручно, значит, желание разбираться отсутствует.
    вердикт: в безвозмездной помощи отказано.
     
    Seiron и ED8290 нравится это.
  14. Bubu

    Bubu Старожил

    1) h- и в правду, не знаю зачем, лучше ввести r
    2) Опять верно, ввел просто как данность, чтобы не пропадала.
    3) Я и не скрывал, что это переделанный калькулятор, там это описывает математические действия, не знаю, зачем я использовал case, ведь переменная одна, как и действие.
    4) Тут даже не понимаю, о чем речь.

    Я же лойсы ставлю за помощь :(
     
  15. vanilla.ninja

    vanilla.ninja Фаворит форума

    ну окей, вот тебе алгоритм:

    // N - константа, количество точек в графике,
    цикл (t от 0 до N) {
    чарт1.сериеслист[0].добавитьху(x(2пи*t/N), y(2пи*t/N), '', clRed) // рисуем эпитрохоиду
    чарт1.сериеслист[1].добавитьху(х1(2пи*t/N), y1(2пи*t/N), '', clBlue) // рисуем окружность радиусом R
    }

    и бтв, у тебя два входных параметра, разве их не три должно быть - R, r, h?
    точнее, так как ты приравниваешь r к h, то у тебя выходит эпициклоида - частный случай эпитрохоиды.
     
    Demonitrii и Bubu нравится это.
  16. Bubu

    Bubu Старожил

    Верно, это эпициклоида, спасибо, сейчас проверю
     
  17. Darksalt

    Darksalt Старожил



    Oh... GOSH! Это эпик. ^_^
     
    Seiron и EvilCora нравится это.
  18. Bubu

    Bubu Старожил

    Все же, что такое t? и за что отвечает x(2пи*t/N)?
     
  19. EvilCora

    EvilCora Старожил

    То самое чувство, когда ты биолог-генетик, и уже разобрался в алгоритме. Аж горжусь собой. Но помогать не буду, помощь дилетанта явно не к месту.

    Поистине Эпик. Думаю вот после трёх лет регистрации даже подпись себе забацать. Но так лень.
     
  20. Bubu

    Bubu Старожил

    При нужном соотношении радиусов, получает кардиоида, думаю биологам это ближе всего ^_^
     
  21. elenhil

    elenhil Коренной житель

    очевидно, счетчик
    --- добавлено: 10 апр 2014 ---
    таки в чем проблема то, там две элементарнейшие формулы, работы на 30 минут даже мне с нулевыми скиллами кодинга
     
  22. EvilCora

    EvilCora Старожил

    Скорее, к биоаналитикам. Не знаю, как по-русски называется профессия, но это специальный раздел, которым активно занимаются биологи-криминалисты. А вот медики, и, тем более, чуть более приземлённые биологи, изучают подобные вещи в очень ограниченных объёмах. И так есть чем забить голову.
    Ты там как, не разобрался ещё в алгоритме?
     
  23. Bubu

    Bubu Старожил

    Все было бы проще, если бы я мог запустить то, что написал. Тогда, методом проб и ошибок, я бы к чему-нить, да пришел бы.
     
  24. EvilCora

    EvilCora Старожил

    Но сэр, не изволите ли представить готовый алгоритм? Не я, так кто-то из вызвавшихся помочь уж точно скажет, что следует превратить в код, а что продумать ещё раз. Метод проб и ошибок слегка ущербен. Метод использования головы призван сильно сократить время бездумного подбора.
     
  25. elenhil

    elenhil Коренной житель

    таки а в чем проблема запустить?
     
  26. @dept

    @dept Старожил

    Мало что понял, но картинка понравилась и лайкнул.
     
  27. Bubu

    Bubu Старожил


    Код:
    unit Unit1;
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, VCLTee.TeEngine, VCLTee.Series,
      Vcl.ExtCtrls, VCLTee.TeeProcs, VCLTee.Chart, Vcl.StdCtrls;
     
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Chart1: TChart;
        Series1: TLineSeries;
        Series2: TLineSeries;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Button5: TButton;
        Button6: TButton;
        Button7: TButton;
        Button8: TButton;
        Button9: TButton;
        Button10: TButton;
        Button11: TButton;
        Button12: TButton;
        Button13: TButton;
        Button14: TButton;
        Button15: TButton;
        Button16: TButton;
        Button17: TButton;
        Button18: TButton;
        Button19: TButton;
        Button20: TButton;
        Button21: TButton;
        Button22: TButton;
        Button23: TButton;
        Button24: TButton;
        Button25: TButton;
        Button26: TButton;
        procedure Edit1Change(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Edit2Change(Sender: TObject);
        procedure Edit2KeyPress(Sender: TObject; var Key: Char);
        procedure Edit1KeyPress(Sender: TObject; var Key: Char);
        procedure Button5Click(Sender: TObject);
        procedure Button10Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Button6Click(Sender: TObject);
        procedure Button7Click(Sender: TObject);
        procedure Button8Click(Sender: TObject);
        procedure Button9Click(Sender: TObject);
        procedure Button22Click(Sender: TObject);
        procedure Button11Click(Sender: TObject);
        procedure Button12Click(Sender: TObject);
        procedure Button13Click(Sender: TObject);
        procedure Button14Click(Sender: TObject);
        procedure Button15Click(Sender: TObject);
        procedure Button16Click(Sender: TObject);
        procedure Button17Click(Sender: TObject);
        procedure Button18Click(Sender: TObject);
        procedure Button19Click(Sender: TObject);
        procedure Button20Click(Sender: TObject);
        procedure Button23Click(Sender: TObject);
        procedure Button21Click(Sender: TObject);
        procedure Button24Click(Sender: TObject);
        procedure Button25Click(Sender: TObject);
        procedure Button26Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
      R, r:extended;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button10Click(Sender: TObject);
    begin
    edit1.Text:=edit1.Text+'9';
    end;
     
    procedure TForm1.Button11Click(Sender: TObject);
    begin
    edit1.Text:=edit1.Text+'0';
    if edit1.Text='00' then edit1.Text:='0';
    end;
     
    procedure TForm1.Button12Click(Sender: TObject);
    begin
    edit2.Text:=edit2.Text+'1';
    end;
     
    procedure TForm1.Button13Click(Sender: TObject);
    begin
    edit2.Text:=edit2.Text+'2';
    end;
     
    procedure TForm1.Button14Click(Sender: TObject);
    begin
    edit2.Text:=edit2.Text+'3';
    end;
     
    procedure TForm1.Button15Click(Sender: TObject);
    begin
    edit2.Text:=edit2.Text+'4';
    end;
     
    procedure TForm1.Button16Click(Sender: TObject);
    begin
    edit2.Text:=edit2.Text+'5';
    end;
     
    procedure TForm1.Button17Click(Sender: TObject);
    begin
    edit2.Text:=edit2.Text+'6';
    end;
     
    procedure TForm1.Button18Click(Sender: TObject);
    begin
    edit2.Text:=edit2.Text+'7';
    end;
     
    procedure TForm1.Button19Click(Sender: TObject);
    begin
    edit2.Text:=edit2.Text+'8';
    end;
     
    procedure TForm1.Button20Click(Sender: TObject);
    begin
    edit2.Text:=edit2.Text+'9';
    end;
     
    procedure TForm1.Button21Click(Sender: TObject);
    begin
    edit2.Text:=edit2.Text+'0';
    if edit2.Text='00' then edit2.Text:='0';
    end;
     
    procedure TForm1.Button22Click(Sender: TObject);
    begin
    edit1.Text:=edit1.Text+',';
    end;
     
    procedure TForm1.Button23Click(Sender: TObject);
    begin
    edit2.Text:=edit2.Text+',';
    end;
     
    procedure TForm1.Button24Click(Sender: TObject);
    begin
    edit1.Clear
    end;
     
    procedure TForm1.Button25Click(Sender: TObject);
    begin
    edit2.Clear
    end;
     
    procedure TForm1.Button26Click(Sender: TObject);
    var
    N,t,x,x1,y,y1:integer;
    p: real;
    begin
    if edit1.Text<>'' then R:=strtofloat(edit1.Text);
    if edit2.Text<>'' then r:=strtofloat(edit2.Text);
    // N - константа, количество точек в графике
     
    N:=50;
    p:=3.14
    for t:=0 to N do
    Chart1.SeriesList[0].AddXY(x(2*p*t/N), y(2*p*t/N), '', clRed) // рисуем эпитрохоиду
    Chart1.SeriesList[1].AddXY(х1(2*p*t/N), y1(2*p*t/N), '', clBlue) // рисуем окружность радиусом R
     
     
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    edit1.Text:=edit1.Text+'1';
    end;
    procedure TForm1.Button3Click(Sender: TObject);
    begin
    edit1.Text:=edit1.Text+'2';
    end;
     
     
    procedure TForm1.Button4Click(Sender: TObject);
    begin
    edit1.Text:=edit1.Text+'3';
    end;
     
    end;
     
    procedure TForm1.Button5Click(Sender: TObject);
    begin
    edit1.Text:=edit1.Text+'4';
    end;
     
    procedure TForm1.Button6Click(Sender: TObject);
    begin
    edit1.Text:=edit1.Text+'5';
    end;
     
    procedure TForm1.Button7Click(Sender: TObject);
    begin
    edit1.Text:=edit1.Text+'6';
    end;
     
    procedure TForm1.Button8Click(Sender: TObject);
    begin
    edit1.Text:=edit1.Text+'7';
    end;
     
    procedure TForm1.Button9Click(Sender: TObject);
    begin
    edit1.Text:=edit1.Text+'8';
    end;
     
     
    end.
     
  28. vanilla.ninja

    vanilla.ninja Фаворит форума

    че т в голос
     
  29. elenhil

    elenhil Коренной житель

    мой бывший препод по программированию оторвал бы мне руки за такой код
    потом забил бы меня ими до смерти и повесился на патчкорде спрыгнув с коллекции томиков Кнута
     
  30. EvilCora

    EvilCora Старожил

    Стоп-стоп, остановись. Это не алгоритм. Это код. Алгоритма хочу. Как ты решаешь задачу? Как слелаешь две эпициклоиды? Говорю же, если сначала хорошо поработать головой, то стена кода сокращается вдвое, а ты делаешь шажок к становлению задротом-программистом.