Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/26: Рейтинг темы: голосов - 26, средняя оценка - 4.85
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1

По классам: прямая линия в пространстве, её обход

19.03.2015, 10:59. Показов 6470. Ответов 97
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
unit Actions;
 
interface
uses
 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ExtCtrls;
type
 
  TPoint = record
    X: extended;
    Y: extended;
    Z: extended;
  end;
 
  TAction=class
   Function ExecuteAction():boolean; virtual; abstract;
  end;
  TLine = class(TAction)
    StartPoint, EndPoint: TPoint;
    Function ExecuteAction():boolean; override; // ÿ äîáàâèë
  end;
 
  TActionList=array of TAction;
  procedure ExecuteActions(ActionList: TActionList);
 
implementation
uses unit4;
 
procedure InitializaActions(ActionList: TActionList);
var
  Line: TLine;
begin
  SetLength(ActionList, 3);
  Line := TLine.Create;
  Line.StartPoint.X := 0.01;
  Line.StartPoint.Y := 0.05;
  Line.StartPoint.Z:= 0.4;
  Line.EndPoint.X := 0.07;
  Line.EndPoint.Y := 0.2;
  Line.EndPoint.Z := 2;
  ActionList[0] := Line;
 
  Line := TLine.Create;
  Line.StartPoint.X := 1;
  Line.StartPoint.Y := 0.5;
  Line.StartPoint.Z:= 0.04;
  Line.EndPoint.X := 1.7;
  Line.EndPoint.Y := 2.2;
  Line.EndPoint.Z := 5;
  ActionList[1] := Line;
 
  Line := TLine.Create;
  Line.StartPoint.X := 1;
  Line.StartPoint.Y := 2.5;
  Line.StartPoint.Z:= 5.1;
  Line.EndPoint.X := 0.77;
  Line.EndPoint.Y := 0.25;
  Line.EndPoint.Z := 0.54;
  ActionList[2] := Line;
end;
 
procedure TLine.ExecuteAction(StartPoint,EndPoint: TPoint);   // ÷åðòèì ïðÿìóþ
begin
   
end;
 
 
procedure ExecuteActions(ActionList: TActionList);
var
  i: integer;
begin
  InitializaActions(ActionList);
  for I := 0 to High(ActionList) do
  begin
    ActionList[i].ExecuteAction();
  end;
 
end;
 
end.
1)выдает [Error] Actions.pas(96): Declaration of 'ExecuteAction' differs from previous declaration
2) для уже существующего(открытого) Юнита форму создать/вызвать не могу, как это сделать?
3) подскажите алгоритм действий как из координат двух точек "пройти" от одной до другой с заданным шагом дискретизации(по типу 3d принтера чтоли, мб пример какой уже есть, мб не для прямой...)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.03.2015, 10:59
Ответы с готовыми решениями:

В автокаде прямая линия не всегда прямая
Почему то получается иногда в автокаде так, что прямая линия имеет дефекты, какие то шреховатости, хотя черчу ее через ОРТО, как это...

Прямая на плоскости и прямая в пространстве
Помогите пожалуйста решить, + желательно как их решать. 1) 16x^2+25y^2+32x-100y-284 = 0 2) y+2z^2 = 6x^2 + Построить график.

Прямая линия в гистограмме
Что означает, когда гистограмма отображается в виде прямой линии, а не привычных нам столбиков? (диаграмма построена верно.)

97
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1
11.04.2015, 20:52  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от krapotkin Посмотреть сообщение
это иллюстрация. не хотите писать - читайте
я записываю в классе Tline массив, внешний, т.е. так -
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
TLine = class(TGrObject)
  private
    Tx,Ty,Tz: Single; 
  public
    StartPoint: TPoint3;
    EndPoint: TPoint3;
    t : Single;
    DirXFlag,DirYFlag,DirZFlag: byte;
    procedure First; override;
    procedure Next; override;
  end;
 
  TGrObjects=class(TObjectList<TGrObject>)
  private
  public
    Scale : single;
    constructor Create(AOwnsObjects:boolean);
  end;
var
 
 ArrayOfDirective : array of  TMotorDirective;
я пишу тестово 2 экземпляра класса , вот так -
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Init();     // заполнение объектами
var
  Line: TLine;
begin
  GrObjects.Clear;
  Line := TLine.Create;
  Line.StartPoint:=Point3(-10, 50, 4);
  Line.EndPoint:=Point3(-90, 20, 2);
  GrObjects.Add(Line);
   Line := TLine.Create;
  Line.StartPoint:=Point3(11, -51, 41);
  Line.EndPoint:=Point3(71, 21, 21);
  GrObjects.Add(Line);
end;
надеюсь поняли, значит ли это что для каждого элемента класса будет записан свой массив? или как это сделать? тупо перенести объявление в public класса? верно?

Добавлено через 46 минут
а еще не подскажите что за проблема, компилирую проект, всё без ошибок, а окно формы не появляется в итоге?
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
11.04.2015, 21:12
конечно нет
свой массив - это тот, что объявлен внутри класса
вот тогда он свой, уникальный

Добавлено через 2 минуты
формы из юнитов не трогать
специально мы отсоединяли внутреннее представление от рисования на экране
форма - это прежде всего интерфейс
она производит действия с библиотечными объектами
а библиотека как может быть привязана к конкретной кнопке на экране ???
0
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1
11.04.2015, 22:32  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
конечно нет
свой массив - это тот, что объявлен внутри класса
вот тогда он свой, уникальный
вот такие ошибки почему то вылетают(одна за одной), даже уже после закрытия работающей программы(но не закрытия XE6)
Миниатюры
По классам: прямая линия в пространстве, её обход   По классам: прямая линия в пространстве, её обход  
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
11.04.2015, 22:41
av - налицо обращение к еще не созданным или уже разрушенным объектам
они же не просто так вылетают
программа заботливо останавливается и показывает место ошибки
ставим там breakpoint
выполняем заново до этого места и смотрим, чему равны переменные
0
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1
12.04.2015, 09:33  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
ставим там breakpoint
эмм, где там?)
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
12.04.2015, 09:52
Цитата Сообщение от krapotkin Посмотреть сообщение
программа заботливо останавливается и показывает место ошибки
там и ставим

Добавлено через 2 минуты
вообще надо просто корректно удалять объекты
все что входит в GrObjects вообще удаляется автоматом при разрушении GrObjects
0
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1
12.04.2015, 10:06  [ТС]
а когда "происходят" эти строки?
Delphi
1
2
3
4
5
6
initialization
  GrObjects:=TGrObjects.Create(true);
finalization
  GrObjects.Free;
  GrObjects:=NIL;
end.
Добавлено через 34 секунды
извините, но я не знаю же где эта ошибка!)
вот тут почемуто дальше не идёт в процедуру, почему?(
Миниатюры
По классам: прямая линия в пространстве, её обход  
0
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1
12.04.2015, 10:25  [ТС]
а вот еще
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure Tform1.WhatADir(obj:TGrObject);
var
ln:Tline;
Eny,EnX,EnZ,DegPinX,DegPinY,DegPinZ,DirX,DirY,DirZ:byte;
 
begin
 
EnY:=1; EnX:=2; EnZ:=16; DegPinY := 64; DegPinX := 1; DegPinZ := 8;
  if Obj is TLine then   // и далее тут может быть множество таких "взятий" из  классов
  begin
     ln:=Obj as TLine;
     DirX:=ln.DirXFlag;
     DirY:=ln.DirYFlag;
     DirZ:=ln.DirZFlag;
     timeOfFigure:=ln.t;
  end;
 
end;
[dcc32 Warning] MainProg.pas(213): W1036 Variable 'DirX' might not have been initialized
то же самое и про DirY DirZ выводит.
что это? а главное на ln.t не ругается вовсе, хотя берем мы её также и оттудаже.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
12.04.2015, 10:33
я так понимаю, здесь не весь текст процедуры
если Obj is TLine то DIRx = Ln.DirXFlag
а если нет?
а DirX явно используется далее
компилятор сообщает что dirx может собержать всякую фигню если что
0
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1
12.04.2015, 10:44  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
я так понимаю, здесь не весь текст процедуры
если Obj is TLine то DIRx = Ln.DirXFlag
а если нет?
а DirX явно используется далее
компилятор сообщает что dirx может собержать всякую фигню если что
добавил в процедуре

Delphi
1
2
3
dirx:=0;
diry:=0;
dirz:=0;
ругаться перестал.
0
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1
12.04.2015, 10:58  [ТС]
ответьте пожалуйста по предыдущей ошибке ...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button1Click(Sender: TObject);
begin
  shipping;
end;
 
procedure TForm1.shipping;
 var I:integer;
 begin
   for i := 0 to GrObjects.Count-1 do
   begin
    WhatADir(GrObjects[i]);
    ToTheEngine(GrObjects[i]);
   end;
 end;
не хочет заходить в shipping; пишет вот на картинке что.
кстати GrObjects я "создаю" в других процедурах, мб они там же и удаляются?( я не делал ничего такого)
Миниатюры
По классам: прямая линия в пространстве, её обход  
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
12.04.2015, 11:41
Цитата Сообщение от aypinki2 Посмотреть сообщение
GrObjects я "создаю" в других процедурах,
что-то я пугаюсь
grobjects - глобальный лист
нельзя его создавать

объекты, в него добавленые, явно разрушать не надо
достаточно GrObjects.delete(i) или GrObjects.Remove(obj)

Добавлено через 1 минуту
По поводу скриншота неясно, что дебаггер забыл в vcl.controls.pas
0
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1
12.04.2015, 11:41  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
что-то я пугаюсь
grobjects - глобальный лист
нельзя его создавать
я не создаю, я записываю туда т.е.
так что это может быть?)
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
12.04.2015, 11:57
по телефону тут не вылечить, надо кот
0
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1
12.04.2015, 20:27  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
по телефону тут не вылечить, надо кот
просто его уже много, а весь выкладывать(да и не знаю что именно надо) как та ни айс.
вот в shippingMoving он почему то ничего не получает и пишет ту ошибку.
хотя я создаю(заполняю, хз как сказать правильно) в предыдущем действии объекты и успешно с ними оперирую

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
unit MainProg;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, GrObjectClasses, Vcl.ExtCtrls,
  Vcl.StdCtrls, Vcl.ComCtrls, Vcl.Grids;
 
type
  TForm1 = class(TForm)
 ~~~~~~
  private
    procedure shippingMoving;
    procedure WhatADir(obj:TGrObject);
    procedure ToTheEngine(obj:TGrObject);
~~~~
procedure TForm1.Button1Click(Sender: TObject);
begin
  shippingMoving;
end;
 
procedure TForm1.shippingMoving;
 var I:integer;
 begin
   for i := 0 to GrObjects.Count-1 do
   begin
    WhatADir(GrObjects[i]);
    ToTheEngine(GrObjects[i]);
   end;
 end;
 
 
procedure Tform1.ToTheEngine(obj:TGrObject);
var
  Time, Timestart,timebuff:int64;
  i:integer;
  ln:Tline;
   
begin
ln:=Obj as TLine;
i:=0;
 time:=0;
 QueryPerformanceCounter(Timestart);//нынешнее время
 
 While (time >= timeOfFigure) do
  begin
    QueryPerformanceCounter(timebuff);
    time:= timebuff-Timestart;
       (*
        if (ln.ArrayOfDirective[i].t) >= (time) then //до каких пор он будет брать
          begin
            if  ln.ArrayOfDirective[i].axis=1  then
            begin
            Out32(888,ResX1);
            Out32(890,0);
            Out32(890,ResX);
            m2.Lines.Add(inttostr(i) +' ' +FormatFloat('0.0000000000', ln.ArrayOfDirective[i].t) + ' ' +floattostr(ln.ArrayOfDirective[i].dir)+ ' ' +inttostr(ln.ArrayOfDirective[i].Axis)   );
            Application.ProcessMessages;
            inc(i);
            end
            else
             if ln.ArrayOfDirective[i].axis=2 then
            begin
            m2.Lines.Add(inttostr(i) +' ' +FormatFloat('0.0000000000', ln.ArrayOfDirective[i].t) + ' ' +floattostr(ln.ArrayOfDirective[i].dir)+ ' ' +inttostr(ln.ArrayOfDirective[i].Axis)   );
            Out32(888,ResY);
            Out32(888,ResY1);
 
            end
            else
            begin
            m2.Lines.Add(inttostr(i) +' ' +FormatFloat('0.0000000000', ln.ArrayOfDirective[i].t) + ' ' +floattostr(ln.ArrayOfDirective[i].dir)+ ' ' +inttostr(ln.ArrayOfDirective[i].Axis)   );
            Out32(888,ResZ);
            Out32(888,ResZ1);
            Application.ProcessMessages;
            inc(i);
            end;
          end;
          *)
      end;
end;
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
12.04.2015, 20:56
Application.ProcessMessages; лучше избегать
если хочешь запустить перерисовку, запускай перерисовку - Memo1.Repaint;

что почему тут только отладка поможет, я не могу по части кода выделить, что и где не так
0
0 / 0 / 1
Регистрация: 11.04.2013
Сообщений: 138
Записей в блоге: 1
12.04.2015, 21:04  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
Application.ProcessMessages; лучше избегать
если хочешь запустить перерисовку, запускай перерисовку - Memo1.Repaint;
что почему тут только отладка поможет, я не могу по части кода выделить, что и где не так
а почему? на самом деле вывод в мемо там только на отладку, а без этого Application.ProcessMessages; не будет работать Out32

тогда можно я вам в пм отправлю проект, и обратно получу в пм? (по этому вопросу, раз так)
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
12.04.2015, 21:13
я без понятия, почему out32 требует ProcessMessages
но это неправильно )))

шли
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.04.2015, 21:13

Прямая линия на плоскости
Помогите пожалуйста составить класс «Прямая линия на плоскости» на языке C++.

Плоскость и прямая в пространстве
Вершина равнобедренного треугольника находится в точке (3,4,5); концы его основания лежат на осях Ox и Oy, а плоскость треугольника...

Плоскость и прямая в пространстве
Нормаль к плоскости составляет с координатными осями и углы a = 60 ° и b = 45 °, а с осью - тупой угол. 1)Составить уравнение плоскости...

Аналитическая геометрия. Прямая линия на плоскости. Кривые второго порядка
Здравствуйте, помогите пожалуйста решить задачи по типовому расчёту. 1. Составить уравнение прямой, содержащей медиану AM 2. Составить...

При построении графика переходного процесса выдается прямая линия
Здравствуйте, нужно было рассчитать напряжение на конденсаторе с помощью интеграла Дюамеля, задан график входного напряжения и схема. Все...


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

Или воспользуйтесь поиском по форуму:
98
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru