Простые функции Delphi 3d

Может ли кто-нибудь помочь мне с примерами некоторых голых, старых школьных 3D-методов в Delphi? Без использования openGL, firemonkey или какой-либо внешней библиотеки (ванильное кодирование холста). Что я хочу сделать, так это иметь возможность вращать X точек вокруг общего ориго. Из того, что я помню со старых времен, вы вычитаете слева направо (в 3-х точках), так что origo всегда равно 0,0, затем выполняете вычисления и, наконец, добавляете смещение левого/верхнего пикселя, чтобы получить фактические положения экрана.

То, что я ищу, - это набор небольших специальных процедур, например:

  • RotateX(aValue:T3dpoint; degr:float):T3dPoint;
  • ПовернутьY(--/--)
  • ПовернутьZ(--/--)

Используя эти функции, должно быть довольно легко создать старый «вращающийся 3D-куб» (8 баллов).

Также есть ли функции для выяснения видимых "лиц"? Если мне нужен заполненный векторный куб, то, думаю, мне нужно извлечь видимые области (на основе расстояния/перекрытия?), Которые, в свою очередь, отрисовываются как X число заполненных полигонов? И они, без сомнения, должны быть отсортированы по глубине, чтобы не получить беспорядок.

например:

  • PointsToFaces (const a3dObject: T3dPointArray): TPolyFaceArray;
  • SortFaces(Const aFaces:TPolyFaceArray):TPolyFaceArray;

Любая помощь приветствуется!


person Jon Lennart Aasenden    schedule 12.02.2012    source источник
comment
Я их тоже путаю, но в Delphi он называется real, а не float.   -  person Andreas Rejbrand    schedule 12.02.2012
comment
Почему бы хотя бы не получить glScene?   -  person Warren P    schedule 13.02.2012
comment
Потому что я буду компилировать под Smart Mobile Studio, которая компилирует объектный паскаль в javascript. И openGL не поддерживается в Safari Mobile. Я просто хотел основы, чтобы я мог учиться, играя с этим.   -  person Jon Lennart Aasenden    schedule 13.02.2012


Ответы (2)


Вот несколько хороших старых ресурсов для Delphi Math от Справочник efg.
Вы можете найти список графических проектов.
Векторная графика 2D/3D: перемещение, вращение, масштабирование, преобразование вида, однородные координаты, отсечение, проекции, векторы, матрицы и т. д.

person kobik    schedule 12.02.2012
comment
Немного излишне для моих нужд, но источник показывает имена математических функций, так что это дает мне хорошую отправную точку. Спасибо! - person Jon Lennart Aasenden; 13.02.2012

Несколько лет назад я написал простой «движок» 3D-рендеринга, используя только наивную линейную алгебру. Хотя, возможно, не самый эффективный. Несколько тысяч очков — это предел, если вы хотите двигаться достаточно плавно. Пример EXE. Вы можете получить код, если хотите, но он может быть не таким красивым.

person Andreas Rejbrand    schedule 12.02.2012
comment
Должен отметить, что очень скоро я отказался от своего прототипа в пользу OpenGL, который используется в AlgoSim. - person Andreas Rejbrand; 12.02.2012
comment
Я собираюсь преобразовать код в умную мобильную студию, поэтому opengl пока не вариант. Это просто правильно понять основы - person Jon Lennart Aasenden; 13.02.2012