Pregunta

Estoy tratando de desarrollar un visualizador superficie nivelada utilizando este método (no sé si este es el método estándar o si hay algo mejor):

    1. Tomar cualquier f(x,y,z)=k función (donde k es constante), y los límites para x, y, y z. También tome en dos parámetros de la red y stepX stepz.
    2. para reducir a un problema curva de nivel, iterate de zmin a Zmax con intervalos stepz. Así f(x,y,z)=k => f(x,y,fixedZ)=k
    3. Realice el mismo procedimiento con stepX, reduciendo el problema a f(fixedX, y, fixedZ)=k
    4. Resolver f(fixedX, y, fixedZ) - k = 0 para todos los valores de y que satisfaga la ecuación (utilizando algún tipo de algoritmo de búsqueda de raíces).
    5. Para todos los puntos generados, trazar los como una curva de nivel (el bucle interior genera curvas de nivel en una z dada, entonces para diferentes valores de z sólo hay pilas de curvas de nivel)
    6 (opcional). Generar una malla a partir de estas curvas de nivel / puntos que pertenecen al nivel fijado.

El problema que estoy corriendo en es con el paso 4. No tengo manera de saber de antemano cuántos valores posibles de y satisfarán que la ecuación (más específicamente, el número de valores únicos y reales de y).

Además, estoy tratando de mantener el programa de lo más general posible, así que estoy tratando de no limitar la f(x,y,z)=k función original a las restricciones tales como suavidad o polinomio que no sea k debe ser constante como se requiere para una superficie nivelada.

¿Existe un algoritmo (sin necesidad de utilizar un CAS / resolución simbólica) que puede identificar la raíz (s) de una función, incluso si tiene múltiples raíces? Yo sé que bisection métodos tienen un tiempo duro con esto debido a la posibilidad de que no hay cambios de signo más de la región, sino cómo lo hace la secante / newtons método de tarifa? ¿Qué conjunto de funciones puede el método de la secante / newtons usarse sucesivamente, y puede que detectar y encontrar todas las raíces reales únicas dentro de dos límites dados? O hay un método mejor para la generación / visualización de superficies de nivel?

¿Fue útil?

Solución

creo que he encontrado la solución a mi problema. Hice un poco más investigación y descubrió que el nivel de superficie es sinónimo de isosuperficie. Por lo tanto, en teoría, algo así como un método de marching cubes debería funcionar.

Otros consejos

En caso de que usted está en necesidad de un ejemplo del algoritmo de Marching Cubes, echa un vistazo a

http://stemkoski.github.com/Three.js/Marching- Cubes.html

(utiliza JavaScript / Three.js para los gráficos).

Para más detalles sobre la teoría, que debe salir en el artículo

http://paulbourke.net/geometry/polygonise/

Una forma sencilla,

2D: plot (x, y) con color = piso (q * f (x, y)) en escala de grises, donde q es un factor arbitrario. 3D: plot (x, y, piso (q * f (x, y))

Efectivamente alturas de la función que son equivalentes se representa en la misma superficie de nivel.

Si usted pueda obtener las curvas de nivel que puede utilizar el método de categorización y el borde de detección 2D / región para obtener los puntos (x, y) en el mismo nivel.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top