निम्नलिखित rotate
समारोह कोण angle
द्वारा बिंदु point
के रोटेशन (वामावर्त रेडियन में) origin
चारों ओर, हमेशा की तरह अक्ष सम्मेलनों के साथ प्रदर्शन कार्तीय तल में : एक्स बाएं से दाएं बढ़ रहा है, y लंबवत ऊपर बढ़ रहा है। सभी बिंदुओं को (x_coord, y_coord)
रूप के लंबाई -2 टपल्स के रूप में दर्शाया जाता है।
import math
def rotate(origin, point, angle):
"""
Rotate a point counterclockwise by a given angle around a given origin.
The angle should be given in radians.
"""
ox, oy = origin
px, py = point
qx = ox + math.cos(angle) * (px - ox) - math.sin(angle) * (py - oy)
qy = oy + math.sin(angle) * (px - ox) + math.cos(angle) * (py - oy)
return qx, qy
अपने कोण डिग्री में निर्दिष्ट किया जाता है, तो आप इसे रेडियंस पहले math.radians
उपयोग करने के लिए बदल सकते हैं। घड़ी के घूर्णन के लिए, कोण को नकारें।
उदाहरण: वामावर्त 10 डिग्री के कोण से (2, 2)
का एक मूल के आसपास बिंदु (3, 4)
घूर्णन:
>>> point = (3, 4)
>>> origin = (2, 2)
>>> rotate(origin, point, math.radians(10))
(2.6375113976783475, 4.143263683691346)
नोट वहाँ rotate
समारोह में कुछ स्पष्ट दोहराया गणना है कि: math.cos(angle)
और math.sin(angle)
प्रत्येक दो बार गणना, px - ox
और py - oy
हैं। यदि आवश्यक हो तो बाहर निकलने के लिए मैं इसे आपके पास छोड़ देता हूं।
स्रोत
2015-12-19 19:18:10
यह सी ++ में है लेकिन यह वही प्रश्न है https://stackoverflow.com/questions/2259476/rotating-a-point-about-another-point-2d – CoryKramer
कृपया अपना कोड दिखाएं। पायथन में 'पॉइंट' की कोई परिभाषा नहीं है, इसलिए आपको स्पष्टीकरण की आवश्यकता है। – iled
घूर्णन कोड की एक पंक्ति है। लेकिन: 2 डी या 3 डी, आप अपने बिंदु को कैसे परिभाषित करते हैं, आप अपने रोटेशन कोण (3 डी अगर एएसपी) आदि को कैसे परिभाषित करते हैं? यह बहुत सारी बॉयलर प्लेट है जो निश्चित रूप से आपके उपयोग के मामले से मेल नहीं खाती है अगर हम इसे स्क्रैच से लिखते हैं। – tom10