Question

Je suis en train de développer une Visualiseur de surface plane en utilisant cette méthode (ne sais pas si cela est la méthode standard ou s'il y a quelque chose de mieux):

    1. prendre toute f(x,y,z)=k de fonction (où k est constant), et des bornes pour x, y et z. Prenez également en deux paramètres de la grille StepX et Stepz.
    2. de réduire à un problème de courbe de niveau, itérer de ZMIN à zMax avec des intervalles Stepz. Alors f(x,y,z)=k => f(x,y,fixedZ)=k
    3. Faites la même procédure avec StepX, ce qui réduit le problème à f(fixedX, y, fixedZ)=k
    4. Résoudre f(fixedX, y, fixedZ) - k = 0 pour toutes les valeurs de y qui satisfera que l'équation (en utilisant une sorte d'un algorithme de recherche de racine).
    5. Pour tous les points générés, tracer ceux sous forme de courbe de niveau (la boucle interne génère des courbes de niveau à un z donné, pour différentes valeurs de z il n'y a que des piles de courbes de niveau)
    6 (en option). Générer un maillage à partir de ces courbes de niveau / points qui appartiennent à l'ensemble de niveau.

Le problème que je suis en cours d'exécution en est à l'étape 4. Je n'ai aucun moyen de savoir avant de main combien de valeurs possibles de y satisferont cette équation (plus précisément, le nombre de valeurs uniques et réelles de y).

En outre, je suis en train de garder le programme aussi général que possible donc je suis en train de ne pas limiter la fonction d'origine f(x,y,z)=k à des contraintes telles que la douceur ou polynomiale autre que k doit être constante nécessaire pour une surface plane.

Y at-il un algorithme (sans utiliser la résolution CAS / symbolique) qui permet d'identifier la racine (s) d'une fonction, même si elle a des racines multiples? Je sais que bissection méthodes ont du mal avec cela à cause de la possibilité d'aucun changement de signe sur la région, mais comment le prix de la méthode sécantes / newtons? Quel ensemble de fonctions peut la méthode sécantes / newtons être utilisé sur, et peut-il détecter et de trouver toutes les racines réelles uniques dans les deux limites données? Ou bien il y a une meilleure méthode pour générer / visualisation de surfaces de niveau?

Était-ce utile?

La solution

Je pense que j'ai trouvé la solution à mon problème. Je l'ai fait un peu plus de recherche et a découvert que la surface de niveau est synonyme de isosurface. Donc, en théorie quelque chose comme une méthode de cubes de marche devrait fonctionner.

Autres conseils

Si vous avez besoin d'un exemple de l'algorithme Marching Cubes, consultez

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

(utilise JavaScript / Three.js pour les graphiques).

Pour plus de détails sur la théorie, vous devriez vérifier l'article à

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

Une façon simple,

2D: plot (x, y) avec la couleur = étage (q * f (x, y)) en niveaux de gris, où q est un facteur arbitraire. 3D: plot (x, y, étage (q * f (x, y))

En effet hauteurs de la fonction qui est équivalent représentera sur la même surface plane.

Si vous d'obtenir les courbes de niveau, vous pouvez utiliser la méthode de catégorisation 2D et la détection bord / région pour obtenir les points (x, y) au même niveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top