आधा तीर खींचें

Sep 09 2020

मैं एक दूसरे के बगल में दो आधे तीर में गणितज्ञ को आकर्षित करना चाहता हूं । कुछ इस तरह:

यहाँ मेरा प्रयास है:

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]

कोड को आप देख सकते हैं कि मैंने दो Arrowएस खींचा है , जबकि प्रत्येक तीर के दाहिने हिस्से को सफेद करके कवर किया है Polygon। यहाँ मेरा परिणाम है:

(तीर 45 डिग्री के कोण के नीचे हैं जो उद्देश्य पर किया गया था।)

मैं सोच रहा था कि क्या आधे तीर केGraphics लिए गणितज्ञ में कुछ कार्य है । या अगर कोई किसी तरह आधा तीर पाने के लिए संशोधित कर सकता है । मैं किसी भी सुझाव के लिए आभारी रहूंगा।Arrow Graphics

जवाब

5 cvgmt Sep 09 2020 at 23:11

हम उपयोग करके नई तीर शैली भी डिज़ाइन कर सकते हैं 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?

यह पहला प्रयास है। देर से हम एक और शैली प्राप्त करने के लिए लाइन की मोटाई और तीर की स्थिति को समायोजित कर सकते हैं।

अद्यतन उपरोक्त कोड 3D के लिए उपयुक्त नहीं है, क्यों नहीं?

 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

यह कोड यू + 21 सीसी के साथ यूनिकोड वर्ण "राइट साइड हापून ओवर लेफ्ट हर्पून" जैसा दिखता है। यह यहाँ पाया जा सकता है । हम इसे इस तरह से गणितज्ञ में उपयोग कर सकते हैं:

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
   ]
  }]

अन्य फ़ॉन्ट आपके उदाहरण के समान दिख सकते हैं।

1 OkkesDulgerci Sep 10 2020 at 09:06

संपादित करें: चूंकि मैं आपका अंतिम लक्ष्य नहीं जानता, इसलिए यहां मेरा प्रयास है।

    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]