Марширующие кубы и неявные поверхности

Марширующие кубы и неявные поверхности - Сообщения

#1 Опубликовано: 13.10.2010 12:46:48
уни

уни

156 сообщений из 355 понравились пользователям.

Группа: User

Mathcad не имеет таких возможностей как построение неявных поверхностей. Даже на плоскости не может построить f(x,y)=0.
Я считаю это позорным для такой программы. Алгоритм уже лет 30 везде используется, а до маткада так и не дошёл.

Моё предложение: сделать внутренние функции для построения неявно заданных функций.
Derive (упокой его душу) запросто с этим справлялся.

Алгоритм существует в двух вариантах:
1. Это непосредственно Марширующие кубы (Лоренс и Клайн).
2. Апгрейд - Марширующие кубы 33.

Для плоского случая делается по аналогии. Исходники программ есть в сети.

Алгоритм вкратце для 2D случая: Область построения разбивается на прямоугольники. В получившейся сетке находят значения функции f(x,y) в каждом узле - это потенциалы. Далее перебирают все прямоугольники и смотрят на знак потенциалов в вершинах. Если вершины противоположного знака, то на ребре есть точка f(x,y)=0 и линия проходит по этой точке. Далее хитрым приёмом осуществляется перебор небольшого количества вариантов расположения линий внутри прямоугольника и запоминаются координаты полученных отрезков для каждого. Потом все наборы отрезков отрисовываются.

Всё очень просто.
Вот пример в Mathcad: Mathcad - implicitplot2d.pdf
Россия навсегда! Вячеслав Мезенцев
  • Новые сообщения Новые сообщения
  • Нет новых сообщений Нет новых сообщений