Générer des formes

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
LeDalex
Messages: 3
Enregistré le: 27 Nov 2019, 23:41

Générer des formes

par LeDalex » 28 Nov 2019, 00:02

Bonjour !
Je me présente, Alexis. Je travaille sur la création d'une monde en 3D pour un projet de jeu de rôle.
J'ai un outil qui me permet de créer des formes en 3D à base de formules mathématiques, sous forme de cubes. Dans mon cas, j'essaie de reproduire des Orgues basaltiques.
J'aurais donc besoin d'une formule qui serait capable de représenter une sorte de "colonne" en hexagone.

Voici l'explication du fonctionnement de la chose :

Generates any shape that can be described with a mathematical formula:
(Génère n'importe quelle forme qui peut être décrite avec une formule mathématique:)

A torus (Un tore)
Rotated cylinders (Un cylindre ?rotatif?)
Jagged canyons (Un canyon)
Any shape you can imagine and boil down into a formula (N'importe quelle forme que l'on peut s'imaginer, sous la forme d'une formule)

The expression should return true (> 0) for blocks that are part of the shape and false (<= 0) for blocks not part of the shape.
(L'expression doit renvoyer "true" (> 0) pour les blocs faisant partie de la forme et "false" (<= 0) pour les blocs ne faisant pas partie de la forme. )

A savoir qu'il faut au préalable que je sélectionne une zone (x,y,z). La formule désignera dans cette zone, quels "blocs" "existent" ou "n'existent pas" (Comme dit juste au dessus)

J'ai pour m'aider quelques exemples :

- Un torus de grand rayon 0,75 et de petit rayon 0,25:
(0.75-sqrt(x^2+y^2))^2+z^2 < 0.25^2

- Un cœur :
(z/2)^2+x^2+(5*y/4-sqrt(abs(x)))^2<0.6

- Hyperboloïde à une nappe :
-(z^2/12)+(y^2/4)-(x^2/12)>-0.03


J'ai très peu de notions dans ces domaines là. Pourriez-vous m'éclairer sur ce que je devrais d'abord déterminer afin de réussir à trouver la bonne formule ? Ou alors me donner la réponse mais m'expliquer comment la trouver. Merci !

(Voilà toutes la syntaxe que je peux utiliser dans la formule [En anglais])



QuadriviuumTremens
Membre Naturel
Messages: 33
Enregistré le: 15 Mai 2019, 18:03

Re: Générer des formes

par QuadriviuumTremens » 28 Nov 2019, 09:44

Je ne pense pas que les équations soient le meilleur moyen de générer des formes discrètes comme des prismes. Le mieux serait que tu dessines ta structure sur un plan, découpé en polygones, puis que tu extrudes chaque polygone à une hauteur différente.
Notre chaîne youtube de mathématiques : https://www.youtube.com/c/QuadriviuumTremens

LeDalex
Messages: 3
Enregistré le: 27 Nov 2019, 23:41

Re: Générer des formes

par LeDalex » 28 Nov 2019, 09:56

Ce serait une des solutions, mais pas celle que je recherche. Je pourrais aussi les faire à la main, bloc par bloc, mais où est la gloire dans tout cela ? :)
A moins que la solution que je recherche n'existe pas et que je sois obligé de chercher d'autres alternatives.

GaBuZoMeu
Habitué(e)
Messages: 6019
Enregistré le: 05 Mai 2019, 10:07

Re: Générer des formes

par GaBuZoMeu » 28 Nov 2019, 11:23

Un hexagone peut être décrit par la conjonction de deux inégalités polynomiales, à partir de là il n'y a pas de gros problème pour un cylindre hexagonal.

LeDalex
Messages: 3
Enregistré le: 27 Nov 2019, 23:41

Re: Générer des formes

par LeDalex » 28 Nov 2019, 13:48

Merci de ta réponse GaBuZoMeu, mais je t'avoue que je n'ai rien compris. J'ai essayé de rechercher quelques uns des termes utilisés et c'est encore plus confus que ce que je pensais. :(

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

Re: Générer des formes

par fatal_error » 28 Nov 2019, 17:24

hi,

D'après https://worldedit.enginehub.org/en/late ... eneration/
la génération attend une formule
et la formule __est__ une expression (du moins d'après la doc...)

En regardant les exemples,
il semble qu'il suffit que l'expression retourne true, évaluée en (x,y,z) (ssi dans l'hexagone)

Donc tu peux travailler dans (O,x,y), générer ton hexagone, puis valider, ou pas la hauteur de ton pic.
Code: Tout sélectionner
Partie sup de l'hexagone
  B _____ C
   /     \
  /       \
 A----O----D
--------------->x


Je suppose que le cercle circonscrit à l'hexagone est de rayon 1 (ca change pas grand chose juste se trimballer des r sinon)

A = (-1, 0)
B = (-cos(pi/6), sin(pi/6))
C = (cos(pi/6), sin(pi/6))
D = (1, 0)

Tu détermines l'eq de la droite (AB) pour [xA;xB]
pareil pour (BC) sur [xB;xC] puis pour (CD) pour [xc; xD]

f_ab(x) = (yB-yA)/(xB-xA) (x-xA)
f_bc(x) = sin(pi/6)
f_cd(x) = (yD-yC)/(xD-xC)(x - xC) + yC

partie inf

f_de(x) = (yB-yA)/(xB-xA) (x-xC) - yC
f_ef(x) = -sin(pi/6)
f_fa(x) = (yD-yC)/(xD-xC) (x-xA)


Et ton expression consiste juste à savoir quelle droite est responsable de valider ou pas ton (x,y). ex:
Code: Tout sélectionner
x >= -1 && x<=1 && y >= 0 ?
  (
    x <= xB ? f_ab(x) >= y:
    x <= xC ? f_bc(x) >= y:
    f_cd(x) >= y
  ):
  (
    x <= xB ? f_fa(x) <= y:
    x <= xC ? f_ef(x) <= y:
    f_ed(x) <= y
  )
la vie est une fête :)

GaBuZoMeu
Habitué(e)
Messages: 6019
Enregistré le: 05 Mai 2019, 10:07

Re: Générer des formes

par GaBuZoMeu » 28 Nov 2019, 18:48

Hexagone régulier défini par trois inégalités polynomiales :



On peut faire avec deux inégalités polynomiales :



Une seule, pas possible.

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite