乳胶中的倾斜物体

乳胶中的倾斜物体

在此处输入图片描述

我不知道如何将倾斜的矩形中心连接到我的原点(矩形的左角)。请帮帮我

\begin{figure}[!h]
    \centering
    \begin{tikzpicture}
        \draw[black,thick] (0,0) -- (5,0);
        \draw[black,thick]  (0,0) -- (0,3);
        \draw[black,thick]  (0,3) -- (5,0);
        % Adding the angle
        \draw (3.5,0) arc (180:135:1) node[midway,anchor=east,black] {$\theta$};
        \draw[rotate around={-30.96:(1.5,2.1)}] (1.5,2.1) rectangle (3,3);
        \draw[rotate around={-30.96:(1.5,2.1)},black,->,thick] (2.25,2.55) -- (2.25,3.55)node[black,anchor=west] {$\vec{N}$};
        \draw[rotate around={-30.96:(1.5,2.1)}, black, ->, thick]
        (2.25,2.55) -- ({2.25 + sin(30.96)}, {2.55 - cos(30.96}) node[black,anchor= west] {$\vec{P}$};
        \draw[rotate around={-30.96:(1.5,2.1)},black,->,thick] (2.25,2.55) -- (1.25,2.55) node[black,anchor=south east] {$\vec{F}_a$};
        \draw[blue,->,rotate around={-30.96:(1.5,2.1)}] (4,3) -- (5,3) node[black,anchor=north west] {$x$};
        \draw[blue,->,rotate around={-30.96:(1.5,2.1)}] (4,3) -- (4,4) node[black,anchor=west] {$y$};
        \draw[red,dashed,thick,rotate around={-30.96:(1.5,2.1)}]
        (2.25,2.55) -- ({sin(30.96)},{-cos(30.96)});%just a try
    \end{tikzpicture}
\end{figure}

答案1

我认为,图片可以帮到你。让 TikZ 帮你计算三角函数。

当使用该选项将图片放置在路径段上时sloped,图片的绘制将被旋转和移动,以便其X轴在该点处与路径相切。其原点也位于该路径上。

不幸的是,其中一些设置也适用于图片内的路径,这就是为什么我们需要再次重置它们(这就是您sloped = false在它们里面看到的原因)。

为了角度标记,我还将使用图片,但图片不是沿着路径放置的,它使用给定的三个坐标并计算所需的角度。
我对它的实现不太满意,这就是为什么在其定义中添加缩短量,以便线条不会穿过我们的三角形。(还有其他更好但更长的解决方案。)

我还命名了坐标,以便以后可以实际引用它们而不必担心转换。


让我们一步一步地创建这个图表。首先,我们从三角形开始,并命名它的角:

\draw (0, 0) coordinate (O)
   -- (0, 3) coordinate (A)
   -- (5, 0) coordinate (B)
   -- cycle;

请注意,这条路径和一条闭合的路径(这就是cycle的所作所为)。角落看起来会有所不同比你的代码要好。

我们可以将图片放在AB边缘,方法是将其直接放在后面--(即“隐含地”)或目标坐标之后“明确”地pos指定了

因为我在这里使用sloped,所以图片被旋转,以便X轴沿着线的斜率。

现在,我只画框和矢量线:

\draw[midway, thin] (left:.75) rectangle coordinate () +(1.5,.9);
\path[->, at end, sloped=false]
              () edge["\vec F_a" above left]            +(left:1)
              () edge["\vec N"   right]                 +(  up:1)
   [reset cm] () edge["\vec P"   right] coordinate (P') +(down:1);

由于我已为图片命名,因此box图片内的所有坐标和节点名称都会带有box前缀。因此,我用第一条路径绘制的矩形中心坐标(该路径的名称为空)实际上将被命名为box

现在,由于图片向上旋转,并且左侧的艺术作品与我们放置盒子的线正交且平行。

对于真正的垂直箭头我用reset cm重置变换矩阵。这不一定会使进入图片之前生效的坐标系生效,但在本例中是相同的。

第二张图片的放置位置非常相似,但只绘制了一个坐标系。由于= 0 位于我将在其间绘制的线上= 1 且= 2 使其浮动在线上方。

现在,它只是三个角度的照片。

以及额外的橙色虚线。这些虚线被放置在behind path因为我认为如果它们位于三角线后面看起来会更好。

为了绘制垂直虚线,我在垂直矢量的尖端添加了一个坐标P'(将其命名为)。boxP'

坐标规范(boxP'|-O)boxP'指定穿过 的垂直线和穿过 的水平线之间的交点O


如果需要绘制多个这样的图表,建议定义自己的命名图片。在这种情况下,我们可以这样做

\tikzset{
  pic node/left/.style=above left,
  pic node/up/.style=right,
  pic node/right/.style=below right,
  pic node/vertical/.style=right,
  pics/box with vectors/.style args={#1:#2:#3}{code={
    \draw[midway, thin] (left:.75) rectangle coordinate () +(1.5,.9);
    \path[->, at end, sloped=false, pic actions]
                  () edge["{\vec #1}" pic node/left]     +(left:1)
                  () edge["{\vec #2}" pic node/up  ]     +(  up:1)
       [reset cm] () edge["{\vec #3}" pic node/vertical]
                                                 coordinate (P') +(down:1);}},
  pics/coordinate system/.default={x:y},
  pics/coordinate system/.style args={#1:#2}{code={
    \draw[<->, sloped=false, pic actions]
      (up:1) |- node[at start, pic node/up]{$#2$}
                node[at end,   pic node/right]{$#1$} (right:1);}}}

在路上,你只需

pic[pos=.4, sloped] (box)                        {box with vectors=F_a:N:P}
pic[near end, sloped, thin, Green, shift=(up:1)] {coordinate system}

同时具有多种pic node/…样式可供选择,以调整节点的位置或外观。

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{angles, arrows.meta, quotes}
\tikzset{math nodes/.style={execute at begin node=$, execute at end node=$}}
\colorlet{Green}{green!75!black}
\begin{document}
\tikz[
  pics/angle/.append style={/tikz/shorten >=+.4pt, /tikz/shorten <=+.4pt},
  >={Stealth[round]}, % I like this arrow tip better
  thick, angle radius=.75cm, angle eccentricity=1.2,
  every edge quotes/.append style={math nodes},
  every pic quotes/.append style={math nodes, node font=\footnotesize}]
\draw (0, 0) coordinate (O)
   -- (0, 3) coordinate (A)
   -- (5, 0) coordinate (B)
  pic[pos=.4, sloped] (box) {code={
    \draw[midway, thin] (left:.75) rectangle coordinate () +(1.5,.9);
    \path[->, at end, sloped=false]
                  () edge["\vec F_a" above left]            +(left:1)
                  () edge["\vec N"   right]                 +(  up:1)
       [reset cm] () edge["\vec P"   right] coordinate (P') +(down:1);
  }}
  pic[near end, sloped, thin, Green] {code={% yeah, the same trick again
    \draw[<->, sloped=false] (0,2) to[at start, "y" right]       ++( down:1)
                                   to[at end,   "x" below right] ++(right:1);
  }}
  -- cycle
  %
  pic[draw, Green, thin, "\theta"]                     {angle=A--B--O}
  pic[draw, blue,  thin, "\theta"]                     {angle=O--box--boxP'}
  pic[draw, blue,  thin, "\frac{\pi}{2}-\theta" right] {angle=B--O--box}
  % I think the dashed lines look better if they're behind the other stuff
  [behind path]
    (box)   edge[orange, densely dashed] (O)
    (boxP') edge[orange,         dashed] (boxP'|-O)
  ;
\end{document}

输出

在此处输入图片描述

答案2

如果您只对虚线的第一个坐标加波浪线,您就知道第二个坐标是(0,0)

\documentclass{article}

\usepackage{tikz}

\begin{document}


\begin{figure}[!h]
    \centering
    \begin{tikzpicture}
        \draw[black,thick] (0,0) -- (5,0);
        \draw[black,thick]  (0,0) -- (0,3);
        \draw[black,thick]  (0,3) -- (5,0);
        % Adding the angle
        \draw (3.5,0) arc (180:135:1) node[midway,anchor=east,black] {$\theta$};
        \draw[rotate around={-30.96:(1.5,2.1)}] (1.5,2.1) rectangle (3,3);
        \draw[rotate around={-30.96:(1.5,2.1)},black,->,thick] (2.25,2.55) -- (2.25,3.55)node[black,anchor=west] {$\vec{N}$};
        \draw[rotate around={-30.96:(1.5,2.1)}, black, ->, thick]
        (2.25,2.55) -- ({2.25 + sin(30.96)}, {2.55 - cos(30.96}) node[black,anchor= west] {$\vec{P}$};
        \draw[rotate around={-30.96:(1.5,2.1)},black,->,thick] (2.25,2.55) -- (1.25,2.55) node[black,anchor=south east] {$\vec{F}_a$};
        \draw[blue,->,rotate around={-30.96:(1.5,2.1)}] (4,3) -- (5,3) node[black,anchor=north west] {$x$};
        \draw[blue,->,rotate around={-30.96:(1.5,2.1)}] (4,3) -- (4,4) node[black,anchor=west] {$y$};
        \draw[red,dashed,thick]
        ([rotate around={-30.96:(1.5,2.1)}]2.25,2.55) -- (0,0);%just a try
    \end{tikzpicture}
\end{figure}


\end{document}

在此处输入图片描述

相关内容