Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 01.11.2014
Сообщений: 9
1

Изменение координат фигур. Как нарисовать пружину?

21.04.2015, 23:14. Показов 2234. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!Я сейчас на такой стадии решения своей задачи.
Нужно построить пружину, и честно говоря, я не знаю как. И надо сделать так, чтобы механизм перестраивался, я так понял, что левую часть особо перестраивать не надо, при увеличении круга, он расширяется вправо и вниз, с ним увеличивается ползунок, а вот с перемещением правой стойки проблемы. И проблема с прикреплением точки большого круга и центра меленького, центры как видно не совпадают.

Скрин механизма

Изменение координат фигур. Как нарисовать пружину?


Скрины формул

Название: 79a70258.jpg
Просмотров: 126

Размер: 6.3 Кб
Название: 8Edb3853.jpg
Просмотров: 126

Размер: 2.7 Кб
Название: 3ECd68D8.jpg
Просмотров: 126

Размер: 1.8 Кб

Код Делфи
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
Rk:=strtofloat(edit1.text);
  edit2.Text:=floattostr( 2*Rk+20);
 Dk:=strtofloat(edit2.text);
  edit3.Text:=floattostr( 2*Rk);
 Lp:=strtofloat(edit3.text);
    Dk1:=round(Dk);
    Lp1:=round(Lp);
    Lp2:=round(Lp);
    Rk:=round(Rk1);
     Circle.Height:=Dk1;
     Circle.Width:=Dk1;
     Shape5.Width:=Dk1;
Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2015, 23:14
Ответы с готовыми решениями:

Нарисовать и санимировать пружину (штопор)
Собственно задача такова что нужно нарисовать программно (не в xaml а в c#) обычную пружину...

Как использовать вместо числовых координат фигур переменные
Мне необходимо, чтобы в прямоугольнике указывались именно переменные, а не числовые координаты....

Как прочитать с файла параметры геометрических фигур и нарисовать их?
Необходимо создать простейшую программу на vs, считывает из файла параметры геометрических фигур,...

Как нарисовать систему координат?
Как нарисовать систему координат??

9
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,160
Записей в блоге: 20
22.04.2015, 00:14 2
приведенный кусок никак не соответствует ни картинке ни формулам
0
0 / 0 / 0
Регистрация: 01.11.2014
Сообщений: 9
22.04.2015, 13:36  [ТС] 3
А почему несоответствие? Диаметр круга и Lp?
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,160
Записей в блоге: 20
22.04.2015, 13:44 4
так тут нет никакого круга
вообще ничего нет
12 строк текста, чего-то делающего неизвестно с чем..
как это соотносится с картинкой?

Добавлено через 1 минуту
Цитата Сообщение от Sharon Посмотреть сообщение
построить пружину
нарисовать эту картинку надо или что вообще за задача?

построить дом - понятно, построить пружину - при чем тут круги?
0
843 / 738 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
22.04.2015, 14:34 5
Цитата Сообщение от Sharon Посмотреть сообщение
Нужно построить пружину, и честно говоря, я не знаю как. И надо сделать так, чтобы механизм перестраивался
Пружину можно рисовать из массива картинок сделанных заранее, а обработка например на движение TrackBar1.Position:=...
Или нарисовать одну секцию пружины (один виток) и затем используя канву копировать его в нужные места так же от позиции TrackBar-а например.
Теперь техническую часть своего вопроса реши, то есть определись когда нужно увеличивать пружину.
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,160
Записей в блоге: 20
22.04.2015, 15:19 6
и версию делфи..
0
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
23.04.2015, 11:00 7
Лучший ответ Сообщение было отмечено Sharon как решение

Решение

Sharon,

Вот посмотрите грубый вариант.
Динамика нарисована, но грубо , осталась статика
Необходимо довести до конца....

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.ExtCtrls, Vcl.StdCtrls,math;
 
type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    TrackBar1: TTrackBar;
    procedure PaintBox1Paint(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
With TrackBar1 do
 begin
 Min:=3;
 Max:=10;
 Position:=5;
 end;
end;
 
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
X1,Y1,X2,Y2,X3,Y3,P,R1:integer;
Gamma:Extended;
begin
P:= TrackBar1.Position;
X1:=300;
Y1:=660;
X2:= X1-50;
Y2:=  Y1-280;
R1:=30;
 
Gamma:= (TrackBar1.Position-3)*12.8572 ;
 
 
 With PaintBox1.Canvas do
 begin
   Fillrect(canvas.cliprect);
  // Пружина
   Moveto(X1-60,Y1);
   Lineto(X1,Y1);
   Lineto(X1-60,Y1-P);
   Lineto(X1,Y1-P*2);
   Lineto(X1-60,Y1-P*3);
   Lineto(X1,Y1-P*4);
   Lineto(X1-60,Y1-P*5);
   Lineto(X1,Y1-P*6);
   Lineto(X1-60,Y1-P*7);
   Lineto(X1,Y1-P*8);
   Lineto(X1-60,Y1-P*9);
   Lineto(X1,Y1-P*10);
   Lineto(X1-60,Y1-P*11);
   Lineto(X1,Y1-P*12);
 
 
  X3:=X2+Round(R1*sin(Gamma*2*pi/180));
  Y3:=Y2+Round(R1*cos(Gamma*2*pi/180));
 
 
 
   Moveto(X3,Y3);
   AngleArc(X3, Y3, 60,0, 360); //Окружность(Цилиндр)
   Rectangle(X1-120,Y1-275,X1-40,Y1-285);
   Rectangle(X1-100,Y3-p+65,X1+40,Y3-p+220);//Поршень
   Rectangle(X1-120,Y1-160,X1+60,Y1-180);
   Pixels[X2,Y2]:=clBlack;
   Moveto(X2,Y2);
   Lineto(X3,Y3);
 
  pen.Width:=2;
 end;
end;
 
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
 PaintBox1Paint(Sender);
 
end;
 
end.
Удачи...
1
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,160
Записей в блоге: 20
23.04.2015, 11:15 8
Цитата Сообщение от Narimanych Посмотреть сообщение
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
*PaintBox1Paint(Sender);
end;
тут подошло бы
PaintBox1.Repaint;

p.s.
параметр Sender не используется, передавать его нет никакого смысла
1
2724 / 1701 / 776
Регистрация: 23.03.2015
Сообщений: 5,388
23.04.2015, 11:51 9
krapotkin,
Спасибо ...
0
0 / 0 / 0
Регистрация: 01.11.2014
Сообщений: 9
01.05.2015, 23:01  [ТС] 10
Круг вращается, пружина деформируется, Rk- показует ось вращения

Добавлено через 47 секунд
Спасибо!
0
01.05.2015, 23:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2015, 23:01
Помогаю со студенческими работами здесь

Создание изображений в виде мелких фигур, изменение размера мелких фигур
Здравствуйте!Как создать изображение в виде кружков или других фигур? Как изменить размер...

Как нарисовать прямоугольную систему координат с сеткой?
чтобы были подписи осей и стрелочки на концах

Как происходит изменение координат вектора
изменение координат вектора при линейном отображении Можете объяснить как происходит изменение...

Изменение координат прямой при изменение угла наклона
Есть прямая координаты точек то есть линия лежит на оси х как изменятся координаты если один конец...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru