2008-12-09 2 views
3

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

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

+0

Не могли бы вы расширить свои требования в отношении того, почему вы не хотите использовать внешнюю библиотеку? OpenGL или DirectX делают эту вещь намного проще, чем писать собственный движок. – 2008-12-09 13:57:43

+0

Я разобрался с моим вопросом. Не стесняйтесь отвечать. – 2008-12-09 14:00:21

+0

Сэр, не могли бы вы выслать мне коды – qui 2008-12-09 14:00:58

ответ

0

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

3DTools

4

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

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

-1

Загляните в WPF в целом, это поможет вам сделать это с помощью нескольких незначительных строк кода. Вы также можете разместить окно WPF в Формах.

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

0

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

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

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

0

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

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

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

Смежные вопросы