Como fazer diagramas de fluxo de vento / aerodinâmicos?


8

Preciso de ajuda sobre como criar imagens vetorizadas bonitas desses tipos de temas:

exemplo 1 de fluxo de vento

exemplo 2 do fluxo de vento

Eu trabalho muito com o LaTeX quando se trata de digitar, por isso tenho alguma experiência básica com o Tikz. No entanto, sinto que, se precisar criar imagens complicadas como as acima, me sinto um pouco perdido.

Eu apreciaria muito se alguém pudesse me apontar na direção certa sobre como eu poderia fazer essas imagens, de preferência usando software livre.


Você precisa inserir fórmulas ou apenas desenhar?
Ryan

Para começar com o desenho seria suficiente, acho que eu sempre poderia inserir alguns no pós-processamento.
Dipole

Quando você terminar de avaliar as perguntas, é importante aceitar a pergunta. Caso contrário, ele envia o sinal errado. Aceite a pergunta que parecer mais próxima de responder à sua ideia. Sinta-se à vontade para aceitar até uma das perguntas com menos votos. Como essa pergunta também tem boas perguntas secundárias, você pode fazer combinações de ferramentas mais específicas. Pergunta muito agradável obrigado por isso.
Joojaa

Feito! Espero ter perguntas de acompanhamento em breve, que são mais específicas. Devo então abrir uma nova pergunta e vincular a esta?
dipolo

se você acha que a ligação ajuda. Lembre-se de fazer a pesquisa, perguntas com melhores recursos levam a melhores respostas.
joojaa

Respostas:


11

Os aplicativos gráficos que produzem saída vetorial estão disponíveis. Eu usei os seguintes aplicativos com bastante êxito:

  • Mathematica <- minha preferência pode fazer imagens como acima
  • Matlab (lembre-se de exportar eps)
  • Python usando matplotlib
  • Bordo
  • PSTricks
  • Ilustrador
  • Xara
  • Inkscape
  • Autocad

Embora seja necessário usar aplicativos 3D ou gráficos, sugiro:

  • Existem vários layouts de gráficos e podem ser executados na Internet sem a necessidade de instalação.
  • Gephi , força direcionada gráficos
  • Maya, 3DsMax com renderização vetorial
  • Creo, NX, Catia, Solidworks ...

Geralmente é mais produtivo usar alguma ferramenta que possa realmente representar graficamente as coisas e depois importar o arquivo EPS para uma ferramenta de artistas gráficos, como ilustrador, para finalização posterior. O benefício real é que você pode brincar com os gráficos antes de se envolver, para que a mudança seja fácil.

Também é possível fazer um gráfico do material por conta própria no Illustrator, se desejar, algum código para ajudá-lo no seu caminho.

Recursos

Aqui está uma lista rápida de coisas até que eu tenha tempo de encontrar alguns exemplos adequados (fluxo laminar à direita).

Alguns exemplos com componentes semelhantes (talvez você precise adicionar mais coisas, mas aqui estão algumas partes do quebra-cabeça):


6

Sua melhor aposta é escolher um editor de vetores e aprender a usá-lo. Os exemplos acima não parecem complicados, e um entendimento básico dos vetores de desenho faria bem o trabalho.

Se você tentar um, aconselho contra o Illustrator ou o Corel Draw. Embora ambas sejam ferramentas poderosas e populares de escolha, parecerão assustadoras para iniciantes. O Inkscape é uma boa escolha. É grátis e aprender isso não deve ser um problema.


2
O Inkscape possui o benefício adicional de oferecer suporte à exportação para PDF + Látex. Você obtém gráficos em PDF com textos em látex.
jnovacho

Então, deixe-me ver se entendi: se eu traçar uma forma de aerofólio no Python usando o Matplotlib e um perfil de velocidade como o da segunda imagem acima, posso importá-los para o Inkscape e então executar modificações neles como 'skewing' e rotação de as tramas?
dipolo

@Jack sim, bem como capacidade de larguras de linha de mudança recolor mover lendas etc.
joojaa

Ótimo, vou tentar!
dipolo

2

Primeiro: .PY + Matplotlib -> .SVG

Então, .SVG -> Inkskape

No entanto, .SVG é fácil o suficiente para aprender a ir .PY -> .SVG

Você também pode fazer .PY + Matplotlib -> .PDF. O Inkscape também abriria isso.


Obrigado por seu comentário. Então, trabalho em python, salve-o como um arquivo svg e abra-o com o Inkscape?
dipolo

1
Enquanto você está fazendo isso, você pode dar um exemplo ou eu deveria. +1 em qualquer caso, o python também pode conversar diretamente com o inkscape, mas talvez essa seja uma pergunta diferente a ser feita?
Joojaa

1

Isenções de responsabilidade:

  1. Normalmente não programa em Python, a menos que precise corrigir o código de outra pessoa
  2. Eu nunca usei o Matplotlib - esta é minha primeira tentativa de usá-lo e, como parecia interessante, o ÚNICO motivo pelo qual estou postando esta resposta.

Agora, uma resposta mais robusta: (Não que eu goste de fazer lição de casa para candidatos a doutorado ...)

Tudo aqui foi roubado - totalmente roubado - do site matplotlib (consulte Exemplos) e do Stack Overflow (matplotlib save fig image trim). Tudo o que fiz foi copiar / colar e testá-lo.

O arquivo out.svg resultante pode ser aberto diretamente no Inkscape. A imagem é um grupo / grupos de imagens menores. Clique em qualquer parte da imagem e use a opção 'Desagrupar' do Inkscape. Pode ser necessário desagrupar algumas vezes para poder manipular diretamente parte da imagem.

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
        linewidth=0, antialiased=False)
ax.set_zlim(-1.01, 1.01)

ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

fig.colorbar(surf, shrink=0.5, aspect=5)

#plt.show()

fig.set_size_inches(4,3) 

fig.set_dpi(40)

fig.savefig('out.svg', transparent=True, bbox_inches='tight', pad_inches=0)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.