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

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

#1 Posted: 10/13/2010 12:46:48 PM
уни

уни

156 likes in 355 posts.

Group: User

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

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

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

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

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

Всё очень просто.
Вот пример в Mathcad: Mathcad - implicitplot2d.pdf
Россия навсегда! Вячеслав Мезенцев
  • New Posts New Posts
  • No New Posts No New Posts