Путь разработчика    

Нарисуйте блокированные тетраэдры в клетке «сегментов линии», используя WPF и C#

В этом примере используются два взаимосвязанных тетраэдра, окруженных кубической клеткой сегментов линии. К сожалению, заметное упущение из 3D-инструментов WPF - это любой способ отрисовки сегментов линии. Это означает, что вы не можете рисовать каркасные модели, показывать нормали поверхности или рисовать другие линейные функции. Вы можете использовать инструментарий CodePlex 3D-инструменты для Windows Presentation Foundation , но я обычно предпочитаю реализовать свои собственные решения, если это возможно.

Инструментарий CodePlex рисует трехмерные сегменты линии, рисуя тощие прямоугольники. Это работает, но если угол обзора расположен вдоль края прямоугольника, он исчезает. Другим подходом было бы нарисовать два тощих перпендикулярных прямоугольника, которые блокируются. Затем вы можете видеть что-то под любым углом (кроме конца).

Вместо того, чтобы принимать эти подходы, я решил представить сегменты линии с тонкими прямоугольными призмами (ящиками). Следующий код показывает, как метод AddSegment добавляет призму для представления сегмента линии, соединяющего две точки.

Python

Сначала код получает Vector3D, представляющий вектор между начальной и конечной точками. Затем он использует метод ScaleVector (который является прямым) для создания вектора n1 в направлении «вверх», длина которого равна половине толщины призмы. Он использует метод Vactor3D класса CrossProduct класса, чтобы получить новый вектор n2, перпендикулярный двум другим. (Если вы не знаете, что такое векторный кросс-продукт, см. WikiPedia .) Затем он масштабирует вектор n2, поэтому она также имеет длину, равную половине желаемой толщины призмы.

Затем метод добавляет комбинации векторов n1 и n2 к конечным точкам сегмента, чтобы получить углы призмы. Он использует эти точки для добавления необходимых треугольников в MeshGeometry3D для создания призмы.

Источник: http://csharphelper.com/blog/2014/10/draw-interlocked-tetrahedrons-in-a-cage-of-line-segments-using-wpf-and-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера, 4-е издание (Николай Прохоренок, Владимир Дронов)

Рассмотрены вопросы создания интерактивных Web-сайтов с помощью Н ТML, Javascript, PHP и MySQL, форматирования Web-страниц при помощи CSS. Даны основы Р Н Р и...

05 06 2020 17:30:28

Получите серийный номер тома диска в C#

В этом примере используется функция API GetVolumeInformation, поэтому получите серийный номер тома диска. Он начинается с , используя пространство имен Sys...

04 06 2020 8:16:36

Работа с объектами JavaScript

JavaScript - это объектно-ориентированный язык программирования. Объект представляет собой набор свойств, и эти свойства могут быть либо примитивами, либо...

03 06 2020 9:19:15

HashMap в Java

В терминах компьютерного программирования карта представляет собой набор ассоциаций между парами объектов. Java HashMap - это базовая реализация интерфейса...

02 06 2020 2:40:48

Чтение / преобразование InputStream в строку в Java

Строка - это последовательность символов, используемых для хранения данных типа «Halo World!». Поток - это класс ввода / вывода, который используется для ч...

01 06 2020 13:25:24

Найти файлы, которые соответствуют нескольким шаблонам в C#

Метод System.IO.Directory.GetFiles позволяет легко искать файлы в каталоге, соответствующем шаблону. К сожалению, он может искать только файлы, соответству...

31 05 2020 10:10:16

Отображать образцы форматов для разных локалей в C#

При запуске программы выполняется следующий код. Этот код сначала создает значения float, decimal и DateTime. Затем он перебирает объекты CultureInfo, возв...

30 05 2020 17:33:20

Слияние видео в C#

( Обратите внимание, что этот пример был написан в Visual Studio 2010.) Моя первоначальная проблема заключалась в том, что я создал кучу видео и вам нужно б...

29 05 2020 7:48:24

Turbo Pascal: Учебник (С. А. Немнюгин)

Цель данного учебного курса - обучить программированию на Паскале, точнее, на том его расширении, которое было создано фирмой Borland и называется Турбо Па...

28 05 2020 5:16:54

Что такое NullPointerException в Java

NullPointerException - исключение RuntimeException. Исключения в Runtime являются критическими и не могут быть пойманы во время компиляции. Они приводят к...

27 05 2020 8:59:18

Выберите разрешение принтера в C#

В этом примере показано, как разрешить пользователю выбирать разрешение принтера. Когда вы устанавливаете принтер объекта PrintDocument, его коллекция Defa...

26 05 2020 13:53:19

Разница между String и StringBuffer / StringBuilder в Java

Здесь String неизменен, означает, что вы не можете изменить сам объект, но вы можете изменить ссылку на объект, тогда как StringBuffer и StringBuilder явля...

25 05 2020 6:31:46

Что на самом деле вызывает ошибку StackOverflow в Java?

StackOverflowError просто сигнализирует о том, что памяти больше нет. Он расширяет класс VirtualMachineError, что указывает на то, что JVM (виртуальная маш...

24 05 2020 23:57:23

Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. 3-е изд. (Робин Никсон)

Это популярное и доступное пособие поможет вам уверенно освоить динамическое веб-программирование с применением самых современных языков и технологий: PHP,...

23 05 2020 19:48:32

Как аннотации работают на Java?

Аннотации Java используются для предоставления метаданных для Java-кода, хотя они не являются частью самой программы. Метаданные - это данные о данных. Так...

22 05 2020 15:16:31


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69