Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2017, 19:03   #11
goto ∞
Форумчанин
 
Аватар для goto ∞
 
Регистрация: 21.12.2010
Сообщений: 155
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Как раз косоугольная проекция выходит.
Коэффициенты k1, k2 - как раз проекции орта направления проектирования
Я не вижу коэффициенты в вышеописанной программе или я что то не понимаю.
goto ∞ вне форума Ответить с цитированием
Старый 13.11.2017, 21:00   #12
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от goto ∞ Посмотреть сообщение
Я не вижу коэффициенты в вышеописанной программе или я что то не понимаю.
Я про тот код, который приводил я. В нём лично я коэффициенты вижу:
Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Код:
Xэкр = Xцентр + X + Y*k1 
Yэкр = Yцентр - Z + Y*k2
Black Fregat вне форума Ответить с цитированием
Старый 13.11.2017, 22:29   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Здесь куб по оси X бегает. Сообрази как переделать на ось Y
Код:
type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    Timer1: TTimer;
    procedure PaintBox1Paint(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
    a: Integer;
    k: Real;
    tStart,tFinish,tCenter: TPoint;
    ToRight: Boolean;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  a:=60; //сторона куба
  k:=0.6; //коеф.искажения
  tStart.X:=50;   tStart.Y:=200;   //точка старта
  tFinish.X:=550; tFinish.Y:=200;  //точка финиша
  tCenter.X:=50;  tCenter.Y:=200;  //положение центра куба
  PaintBox1.Width:=600;
  PaintBox1.Height:=400;
  ToRight:=True;
  Timer1.Enabled:=True;
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
var d: Real;
begin
  d:=k/Sqrt(2);
  with PaintBox1.Canvas do begin
    Rectangle(0,0,PaintBox1.Width,PaintBox1.Height);
    MoveTo(tStart.X,tStart.Y);
    LineTo(tFinish.X,tFinish.Y);

    MoveTo(Round(tCenter.X-a*(1+d)*0.5),Round(tCenter.Y-a*(1-d)*0.5));
    LineTo(Round(tCenter.X-a*(1+d)*0.5),Round(tCenter.Y+a*(1+d)*0.5));
    LineTo(Round(tCenter.X+a*(1-d)*0.5),Round(tCenter.Y+a*(1+d)*0.5));
    LineTo(Round(tCenter.X+a*(1-d)*0.5),Round(tCenter.Y-a*(1-d)*0.5));
    LineTo(Round(tCenter.X-a*(1+d)*0.5),Round(tCenter.Y-a*(1-d)*0.5));

    LineTo(Round(tCenter.X-a*(1-d)*0.5),Round(tCenter.Y-a*(1+d)*0.5));
    LineTo(Round(tCenter.X+a*(1+d)*0.5),Round(tCenter.Y-a*(1+d)*0.5));
    LineTo(Round(tCenter.X+a*(1-d)*0.5),Round(tCenter.Y-a*(1-d)*0.5));

    MoveTo(Round(tCenter.X+a*(1+d)*0.5),Round(tCenter.Y-a*(1+d)*0.5));
    LineTo(Round(tCenter.X+a*(1+d)*0.5),Round(tCenter.Y+a*(1-d)*0.5));
    LineTo(Round(tCenter.X+a*(1-d)*0.5),Round(tCenter.Y+a*(1+d)*0.5));
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if ToRight then begin
    Inc(tCenter.X,5);
    if tCenter.X>tFinish.X then begin tCenter.X:=tFinish.X; ToRight:=False; end;
  end
  else begin
    Dec(tCenter.X,5);
    if tCenter.X<tStart.X then begin tCenter.X:=tStart.X; ToRight:=True; end;
  end;
  PaintBox1.Repaint;
end;

end.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.11.2017 в 22:32.
Аватар вне форума Ответить с цитированием
Старый 16.11.2017, 15:18   #14
goto ∞
Форумчанин
 
Аватар для goto ∞
 
Регистрация: 21.12.2010
Сообщений: 155
По умолчанию

Всем спасибо за помощь, программу newerow1989 после коррекции приняли. Может препод не совсем разбирается в теме но поставили оценку 5, потому что никаких проекции тут не было и матриц переноса тем более.
goto ∞ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу движения небольшой фигуры (крестик) вдоль отрезка P1P2. raitox1 Фриланс 2 18.03.2013 16:02
Написать программу движения небольшой фигуры (крестик) вдоль отрезка P1P2. Ferz27 Фриланс 1 29.04.2012 08:57
Прграммка: движение крестика вдоль отрезка G16 Фриланс 3 04.11.2010 19:57
Как реолизовать построение отрезка в 3D пространстве, как в SketchUp? Dima6120 Мультимедиа в Delphi 6 23.06.2010 19:55
Движение окружности и отрезка. Ev@ngel Компоненты Delphi 0 18.04.2008 22:16