Как оживить вращающийся куб в C #? - PullRequest
3 голосов
/ 09 декабря 2008

Я хотел бы сделать что-то вроде этого: вращающийся куб на форме. Я не хочу использовать какую-либо внешнюю библиотеку или DLL, просто чистый .NET 3.5 (без DirectX). И куб построить только с линиями. Не могли бы вы сказать мне, как это сделать?

Я не хочу использовать внешние библиотеки, потому что мне не нужна библиотека> 100 МБ, чтобы сделать это правильно? Я хочу только анимировать вращающийся куб из линий.

Ответы [ 6 ]

5 голосов
/ 09 декабря 2008

Вот как вы делаете куб в GDI +

C # 3D чертеж с GDI + Euler Rotation

http://www.vcskicks.com/3d-graphics-improved.html

C # 3D-чертеж Куб с затенением

http://www.vcskicks.com/3d_gdiplus_drawing.html

4 голосов
/ 09 декабря 2008

Учебное задание? Это может быть сделано с помощью нескольких простых 3D математики. Вам просто нужно понять основы матричной алгебры, 3D-преобразований и 3D-> 2D-преобразований видов. Руководство по DirectX охватывает это, но вы можете зайти в Google и получить множество других учебных пособий.

Добавлено: Просто чтобы уточнить - я не предлагаю использовать DirectX или что-то еще. Вы можете сделать это с помощью стандартных инструментов System.Drawing. Вам просто нужно понять математику, и это объясняется в руководствах по DirectX.

0 голосов
/ 09 декабря 2008

Вам нужен способ изобразить 3d точки. В .NET нет готовой структуры для этого, если вы не используете directx или WPF.

Затем со стандартной матрицей вращения Эйлера, примененной к точкам, вы получите преобразованные точки. Если вы делаете только ротации, вы можете использовать матрицу 3x3, но если вы хотите переводить, лучше использовать матрицы 4x4 и однородные точки.

После этого вам нужен способ проецировать эти 3d точки на 2d холст. В зависимости от того, используете ли вы перспективную или ортографическую проекцию, матрица проекции будет выглядеть несколько иначе.

0 голосов
/ 09 декабря 2008

Предполагается, что вы используете WPF для своего графического интерфейса:

  1. Создание анимированного PNG-куба с помощью графической программы.
  2. Используйте APNG WPF Control , чтобы вставить изображение в графический интерфейс.

Это даст небольшой размер сборки и прозрачный фон при необходимости.

0 голосов
/ 09 декабря 2008

Посмотрите на WPF в целом, это поможет вам сделать это с помощью нескольких безобразных строк кода. Вы также можете разместить окно WPF в Forms.

http://msdn.microsoft.com/en-us/library/aa970268.aspx

0 голосов
/ 09 декабря 2008

Вы можете попробовать использовать WPF и исходный код 3D Tools, выпущенный командой WPF.

3DTools

...