1 from ..nvector
import NVector
6 def __init__(self, tail, fixed_tail=True, tolerance=0.5, max_iter=8):
7 self.
jointsjoints = [tail.clone()]
15 length = (point - self.
jointsjoints[-1]).length
16 self.
lengthslengths.append(length)
18 self.
jointsjoints.append(point.clone())
21 delta = head - self.
jointsjoints[-1]
24 seglen = segment.length
26 self.
lengthslengths.append(seglen)
27 self.
jointsjoints.append(self.
jointsjoints[-1] + segment)
33 self.
jointsjoints[-1] = target
34 for i
in range(len(self.
jointsjoints)-2, -1, -1):
36 l = self.
lengthslengths[i] / r.length
43 self.
jointsjoints[0] = target
44 for i
in range(0, len(self.
jointsjoints)-1):
46 l = self.
lengthslengths[i] / r.length
54 distance = (target - self.
jointsjoints[0]).length
56 for i
in range(len(self.
jointsjoints)-1):
57 r = target - self.
jointsjoints[i]
58 l = self.
lengthslengths[i] / r.length
59 self.
jointsjoints[i+1] = self.
jointsjoints[i].lerp(target, l)
62 base = self.
jointsjoints[0]
64 distance = (target - self.
jointsjoints[-1]).length
69 distance = (target - self.
jointsjoints[-1]).length
75 self.
chainschains = {
"master": master}
80 return self.
mastermaster.joints[-1]
84 self.
chainschains[name] = ch
89 for chain, target
in target_map.items():
90 self.
chainschains[chain].backward(target)
91 centroid += self.
chainschains[chain].joints[0]
92 centroid /= len(target_map)
96 for chain
in target_map.keys():
97 self.
chainschains[chain].forward(self.
basebase)
def backward(self, target)
target -> -> start
def forward(self, target)
start -> -> tail
def __init__(self, tail, fixed_tail=True, tolerance=0.5, max_iter=8)
def add_joints(self, head, n)
def add_joint(self, point)
def __init__(self, master)
def reach(self, target_map)
def add_chain(self, name)