Desenhar paralelogramo com ângulo, largura e altura fixos?

Desenhar paralelogramo com ângulo, largura e altura fixos?

Quero desenhar paralelogramos com ângulo, largura e altura fixos, mas parece que trapeziumno PGF/TikZ não é possível especificar a altura sem alterar os ângulos.

\documentclass[tikz]{standalone}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\tikzstyle{every node}=[trapezium, draw, minimum width=3cm,
trapezium left angle=120, trapezium right angle=60]

\node[trapezium stretches body]
    at (0,0) {A};

\node[trapezium stretches body, rotate=-30]
    at (0,1.5) {A rotate $-30^\circ$};

\node[minimum height=1cm, trapezium stretches body]
    at (5,0) {B};

\node[minimum height=1cm, trapezium stretches body, rotate=-30]
    at (5,1.8) {B rotate $-30^\circ$};

\node[minimum height=1cm]
    at (0,-2) {C};

\node[minimum height=1cm, rotate=-30]
    at (0,-4) {C rotate $-30^\circ$};

\node[minimum height=1cm, trapezium stretches]
    at (5,-2) {D};

\node[minimum height=1cm, trapezium stretches, rotate=-30]
    at (5,-4) {D rotate $-30^\circ$};

\end{tikzpicture}
\end{document}

A saída:insira a descrição da imagem aqui

Quero uma versão verticalmente gorda de A com a mesma largura.

A e B têm ângulos diferentes, basta adicionar "altura mínima". A versão girada de A tem lados verticais oeste/leste, é disso que eu preciso. A versão girada de B não tem lados verticais oeste/leste, no entanto, preciso de um paralelogramo "mais alto" com os mesmos ângulos e largura de A.

C: Removendo "trapézio alonga o corpo"resulta em um paralelogramo cuja largura e altura estão fora de controle. D: Substituir "trapézio estica corpo" por "alongamentos de trapézio"não ajuda em nada.

Responder1

Talvez o seguinte possa explicar melhor o que está acontecendo. O estranho que acontece quando o texto fica mais curto e o nó fica mais alto e mais curto à medida que o texto fica mais longo é devido às restrições serem respeitadas.

\documentclass[tikz]{standalone}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\tikzstyle{every node}=[trapezium, draw, minimum width=3cm,
trapezium left angle=120, trapezium right angle=60]

\node[trapezium stretches=false,minimum height=1cm]
    at (0,0) {A};

\node[trapezium stretches=false,minimum height=1cm]
    at (0,1.5) {\fbox{A long }};

\node[trapezium stretches=false,minimum height=1cm]
    at (0,3) {\fbox{A long text}};

\draw[thick,green,|-|] (-1.5,-.5) -- (1.5,-0.5);
\draw[thick,green,|-|] (-1.5,0.5) -- (-1.5,-0.5);

\draw[thick,blue,|-|] (-1.5,1) -- (1.5,1);
\draw[thick,blue,|-|] (-1.5,1) -- (-1.5,2);

\draw[thick,red,|-|] (-1.5,2.5) -- (1.5,2.5);
\draw[thick,red,|-|] (-1.5,2.5) -- (-1.5,3.5);

\end{tikzpicture}
\end{document}

sem esticar o corpo

Vemos que a largura mínima e a altura mínima são respeitadas e então se houver espaço o nó vai ficando mais alto porque não há restrição para isso. Em outras palavras, há apenas restrição nos mínimos e não nos máximos, portanto, no exemplo inferior, os mínimos são respeitados e então os ângulos são tentados para corresponder. Se o nó for mais curto e os ângulos forem fixos então a altura mínima não será respeitada etc. Portanto, para isso são propostas algumas opções nomeadamente as opções de estiramento. Se transformarmos todas as chaves falsas em verdadeiras, obteremos

insira a descrição da imagem aqui

Assim, o anjo da forma é deformado para cumprir as restrições. Da mesma forma, a trapezium stretches bodychave apenas estica a largura. Mas se o ângulo estiver definido, é uma questão de respeitar as restrições e depois verificar se o ângulo é viável. Portanto, é necessário um tipo diferente de restrição. Isso pode ser usar rótulos na centerâncora ou desenhá-los no topo dos nós, independentemente do tamanho, etc.

informação relacionada