Graph3D - создание примитивов функциями [closed]

Почему в Graph3D примитивы создаются функциями, а не напрямую?

В GraphABC тоже примитивы создаются функциями. Circle(x,y,r) например. Логика такая. Если объект достаточно создать и потом им можно не управлять, то функциями. Если всегда управлять, то конструктором

2 лайка

Погодите, но в Graph3D мы же управляем объектами.

uses Graph3D;

begin
  var s := Box(0,0,0,3,1,2,Colors.Blue);
  var an := Animate.Sequence(
    s.AnimMoveOnY(5),
    s.AnimMoveOnX(5)
  );
  an.Begin;
end.

Вот у Вас пример нашёл.

МОЖЕМ управлять. Да. Но можем просто стационарно нарисовать.

А когда создаём с целью управления, то конструктор.

Считайте это особенностью реализации. Разработчики приняли такое решение.

1 лайк

Да, вы можете управлять, а можете не управлять, поэтому функцией. Потому что вы можете не присваивать результат функции переменной. А если через new - то это то чем обязательно управлять (хотя вы тоже можете не присваивать переменной, но выглядит это странно).

1 лайк

Понял. Кстати, а будет ли версия новых модулей на основе WPF (GraphWPF, WPFObjects (помнится так называется) и т.д.) на русском (с функциями на русском)? Для начинающих, думаю, будет полезно.

Нет. Мы мечтаем сделать на уровне языка двуязычную таблицу символов для таких целей. Но пока сил и ресурсов не хватает на это.

Кстати, если кто-то из сообщества возьмётся русифицировать эти модули - мы готовы.

2 лайка

Чтобы можно писать что-то на подобии:

начать
    вывести();
конец.

?

Да, в точку. Вот такой код напрягает:

new Icosahedron(p,2,Colors.Green);
new Dodecahedron(p,2,Colors.Blue);

Ну, на самом деле ещё можно писать

Icosahedron.Create(p,2,Colors.Green);
Dodecahedron.Create(p,2,Colors.Blue);

Но это секрет доступный лишь избранным)))

Тогда как Вы смотрите на предложение сделать функциями создание примитивов в WPFObjects? Чтобы в одном стиле было все в модулях для обучения - функциями.

Делайте конечно дополнительный модуль-обёртку раз Вам так почему-то удобнее. Но WPFObjects предназначен как раз для управления объектами. Это следует из его названия.

Нет - я не говорил, что мне так удобнее. Я предложил. Вы отвергли. И я понимаю почему.

Там еще будет модуль Controls, который в панели слева в GraphWPF, WPFObjects и Graph3D будет создавать панель, где будут располагаться кнопки и прочие элементы управления. Вот они будут создаваться по new:

var b := new Button('Закрой меня');
b.Click := procedure -> Window.Close;

Даёшь программистов в стиле Button1.OnClick!

2 лайка

Это замена FormsABC?

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

И - тупо более простая: все элементы управления создаются одним из автоматических методов размещения минимумом кода. Никаких изысков там будет создать нельзя - это нужно только для иллюстрации программирования с контролами. Хотя предполагается меню и статус-бар с несколькими областями.

А Вы будете немного дорабатывать FormsABC, если это не совсем замена ему? Например, позволить изменять цвета элементов управления было бы полезно. Начинающий, как никто другой, хочет видеть яркие разноцветные приложения. Я же прав?

Сейчас это не направление нашего развития. Мы задали вектор некими крупными мазками. Но в практике нашего обучения модуль не используется.

Хотя идея хорошая. Если бы кто-то из сообщества за это взялся, мы его бы направили. Прежде всего, надо делать FormsWPF как более прогрессивную платформу.

Графика - отдельная ветка в программировании. Если интерфейс консольный, программист сосредоточивается на реализации алгоритма. Если графический - его конструирование и доводка “чтобы смотрелось” отнимают массу добавочного времени. Это нормально в реальной жизни, но отъедает массу времени при обучении. Т.е. графика - это современно и необходимо, но крайне трудозатратно. Поэтому - да, на разработку библиотек для реализации графических интерфейсов нужно искать добавочный людской ресурс. На настоящий момент меня напрягает, что когда я хочу в своем консольном приложении показать параллельно еще и графический результат, это не реализуешь - окно изначально или для консольного вывода, или для графики. Тот же график нарисовать в Draw - быстро и просто, но он, во-первых, лишь картинка без разметки осей и масштаба, во-вторых - чтобы эту картинку показать, я должен все делать в графическом окне. А хотелось бы “без шума и пыли” из своего консольного приложения уметь просто обратиться к какому-то методу и получить нечто вроде этого График функции.pas (1,6 КБ)

А Вы могли бы поподробнее рассказать про FormsWPF? Что будет в нём, что не было в FormsABC?

2 лайка