का उपयोग कर कुल्हाड़ी के साथ और एक के निर्देशांक, और bx ay, बी के निर्देशांक द्वारा, और यह सोचते हैं द्वारा एक्स और एक वाई के लिए Coordiantes और बी प्राप्त कर सकते हैं चौड़ाई w और ऊंचाई एच के साथ आयत के केंद्र {0,0} पर है निम्नलिखित
IntersectionRectangleLine[{ax_, ay_}, {bx_, by_}, h_, w_] :=
Module[{\[Mu]r, \[Mu]l, \[Mu]t, \[Mu]b},
{\[Mu]r, \[Mu]l, \[Mu]t, \[Mu]b} = {-((-2 ay bx + 2 ax by - ax w +
bx w)/((ay - by) h)), -((-2 ay bx + 2 ax by + ax w -
bx w)/((ay - by) h)), -((
2 ay bx - 2 ax by - ay h + by h)/((ax - bx) w)), -((
2 ay bx - 2 ax by + ay h - by h)/((ax - bx) w))};
Which[
-1 <= \[Mu]r <= 1, {0, w/2} + \[Mu]r {h/2, 0},
-1 <= \[Mu]l <= 1, {0, -w/2} + \[Mu]l {h/2, 0},
-1 <= \[Mu]t <= 1, {h/2, 0} + \[Mu]t {0, w/2},
-1 <= \[Mu]b <= 1, {-h/2, 0} + \[Mu]b {0, w/2}
]
]
यह काम करना चाहिए त्रिकोण
0,123,516 बनाने चार लाइनें के चौराहे के लिए समाधान के आधार पर
In[114]:= Solve[Thread[\[Lambda] ({bx, by} - {ax, ay}) + {ax, ay} == {0, w/2} + \[Mu] {h/2, 0}], \[Mu], {\[Lambda]}]
Out[114]= {{\[Mu] -> -((-2 ay bx + 2 ax by - ax w + bx w)/((ay - by) h))}}
(यहां एक उदाहरण के रूप में शीर्ष पंक्ति)।
और Evgeny के लिए, यह मेरी स्क्रीन पर कैसा दिखता है। काफी ज्यादा पठनीय। सी # के लिए
एक आयताकार केवल 4 लाइनें है। 4 बार लाइन/लाइन चौराहे परीक्षण लागू करें। –
संभावित डुप्लिकेट [लाइन और आयताकार के बीच चौराहे बिंदु कैसे प्राप्त करें?] (Http://stackoverflow.com/questions/1585525/how-to-find-the-intersection-point-between-a-line- और एक आयताकार) – Gajus