Zeichne einen halben Pfeil

Sep 09 2020

Ich möchte in Mathematica zwei Halbpfeile nebeneinander zeichnen . Etwas wie das:

Hier ist mein Versuch:

x0 = -0.2;
y0 = -0.2;
k = -1;
dist = 0.02;(*distance between two arrows*)
c1 = Max[c /. Solve[y0 == k x0 + c, c]];
c2 = Max[c /. Solve[-y0 == k (-x0) + c, c]];
xA = x0 - dist/Sqrt[1 + k^2];
yA = k xA + c1;
xB = -x0 - dist/Sqrt[1 + k^2];
yB = k xB + c2;

Graphics[
{{Thick, Arrowheads[0.05], Arrow[{{x0, y0}, -{x0, y0}}],
Arrow[{{xB, yB}, {xA, yA}}]},
{White, Polygon[{{x0, y0}, -{x0, y0}, {xB, yB}, {xA, yA}}]}},
PlotRange -> {{-1., 1.}, {-1., 1.}}, Frame -> True, 
PlotRangeClipping -> True]

Bilden Sie den Code, den Sie sehen können, dass ich zwei Arrows gezeichnet habe , während Sie den rechten Teil jedes Pfeils weiß abdecken Polygon. Hier ist mein Ergebnis:

(Die Pfeile befinden sich unter einem Winkel von 45 °, was absichtlich gemacht wurde.)

Ich habe mich gefragt, ob es Graphicsin Mathematica eine Funktion für den Halbpfeil gibt . Oder wenn man das irgendwie modifizieren kann um den Arrow Graphicshalben Pfeil zu bekommen. Für Anregungen wäre ich dankbar.

Antworten

5 cvgmt Sep 09 2020 at 23:11

Wir können auch einen neuen Pfeilstil verwenden Graphics

arrowStyle = 
  Graphics[{Black, Polygon[{{0, 0}, {-1, .2}, {-.8, 0}, {0, 0}}]}];
semiArrow = Arrowheads[{{0.2, 1, arrowStyle}}];
Graphics[{semiArrow, Arrow[{{0, 0}, {1, 1}}], 
  Arrow[{{1 + .1, 1 - .1}, {.1, -.1}}]}]The above codes does not suitable for 3D,why not?

Es ist der erste Versuch. Spät können wir die Dicke der Linie und die Position des Pfeils anpassen, um einen anderen Stil zu erhalten.

Update Die obigen Codes sind nicht für 3D geeignet. Warum nicht?

 Clear["`*"];
 arrowStyle = 
  Graphics[{Black, FaceForm[Red], 
    Polygon[{{0, 0}, {-1, .2}, {-.8, 0}, {0, 0}}], EdgeForm[], 
    FaceForm[], Polygon[{{0, 0}, {-1, -.2}, {-.8, 0}, {0, 0}}]}];
semiArrow = Arrowheads[{{0.2, 1, arrowStyle}}];
Graphics3D[{semiArrow, Arrow[{{0, 0, 0}, {1, 1, 1}}]}]

4 C.E. Sep 09 2020 at 15:50

Dies sieht aus wie das Unicode-Zeichen "Harpune nach rechts über Harpune nach links" mit dem Code U + 21cc. Es kann hier gefunden werden . Wir könnten es in Mathematica so verwenden:

harpoon = FromCharacterCode@FromDigits["21cc", 16];

Graphics[{
  Text[Style[harpoon, FontSize -> 25], {0, 0}],
  Text[Style[harpoon, FontSize -> 25], {10, 5}],
  Rotate[
   Text[Style[harpoon, FontSize -> 25], {5, 5}],
   30 Degree
   ]
  }]

Andere Schriftarten ähneln möglicherweise eher Ihrem Beispiel.

1 OkkesDulgerci Sep 10 2020 at 09:06

Bearbeiten: Da ich Ihr Endziel nicht kenne, sind hier meine Versuche.

    imSize = 100;
    poly = Polygon[{{0, 0}, {0, 2}, {9, 2}, {9, 4}, {14, 0}}];
 arrows = Rotate[Column[{Graphics[poly, ImageSize -> imSize], 
        Rotate[Graphics[poly, ImageSize -> imSize], 180 Degree]}, 
       Spacings -> 0], 45 Degree];
    Overlay[{Graphics[{FaceForm[], Rectangle[{-1, -1}, {1, 1}]}, 
       Frame -> True], arrows}, Alignment -> Center]


 poly = Polygon[{{0, 0}, {0, 2}, {9, 2}, {9, 4}, {14, 0}}];
 Rotate[Column[{Graphics[poly], Rotate[Graphics[poly], 180 Degree]}], 45 Degree]