इस उत्तर से एल्गोरिथम का उपयोग करना नोड. समस्या यह है कि चाइल्ड नोड्स माता-पिता पर केंद्रित नहीं हैं और कुछ हद तक ऑफसेट हैं। मैंने देखा कि उपरोक्त उत्तर में भी इसी तरह की समस्या थी लेकिन इसे लागू करने के बाद भी यह बच्चों को केंद्रित नहीं कर रहा है। क्या मैं गलत अनुवाद कर रहा हूँ? मैं सी ++ के सभी इंस और आउट से बहुत परिचित नहीं हूं लेकिन मुझे यह बहुत दूर मिल गया है।
मेरा एक पिछला प्रश्न है। मैंने पूछा, जो इससे संबंधित है, लेकिन वही सवाल नहीं है। एक बार यह हल हो जाने के बाद मैं उत्तर को अपडेट करना चाहता हूं ताकि अन्य जान सकें कि क्या करना है।
from anytree import Node, RenderTree
import math
#Start setting positions from node, starting from root tree object.
def RadialPositions(node):
# Set root to x=0, y=0, if not already set.
if node.is_root:
node.positions = (0, 0)
#Number of children in current node
nChildren = len(node.children)
#Rotate child to above parent
def rotate_node(x, y, nangle):
nx = x * math.cos(nangle) - y * math.sin(nangle)
ny = x * math.sin(nangle) + y * math.cos(nangle)
return nx, ny
# For every child, set angle
for idx, child_node in enumerate(node.children, start=1):
#Adjust from parent degree
centerAdjust = 0
# If node has a parent, adujust to center
if node.parent:
centerAdjust = (-node.angleRange + node.angleRange / nChildren) / 2
##Set child node angle and max angle range
child_node.nodeAngle = node.nodeAngle + node.angleRange / nChildren * idx + centerAdjust
child_node.angleRange = node.angleRange / nChildren
#Set positions
x = rotate_node(40 * child_node.depth, 0, child_node.nodeAngle)[0]
y = rotate_node(40 * child_node.depth, 0, child_node.nodeAngle)[1]
child_node.positions = (3 * x, 3 * y)
# For each child of child, iterate same process
RadialPositions(child_node)
1 उत्तर
एन्यूमरेट को 1 के बजाय 0 पर सेट करके इस समस्या को ठीक किया गया। यह नोड्स को प्राकृतिक पैरेंट के बजाय एक द्वारा ऑफ़सेट करने का कारण बन रहा था।
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।