| |
| |
| #include "toonz/iknode.h" |
| |
| TPointD DVAPI rotatePoint(TPointD &point, double theta); |
| |
| |
| void IKNode::computeS(void) |
| { |
| IKNode *y = this->getParent(); |
| IKNode *w = this; |
| |
| s = r; |
| |
| while (y) { |
| s = rotatePoint(s, y->theta); |
| y = y->getParent(); |
| w = w->getParent(); |
| s += w->r; |
| m_pos = s; |
| } |
| } |
| |
| void IKNode::setPurpose(Purpose purpose) |
| { |
| m_purpose = purpose; |
| } |
| |
| TPointD rotatePoint(TPointD &point, double theta) |
| { |
| double costheta = cos(theta); |
| double sintheta = sin(theta); |
| double tempx = point.x * costheta - point.y * sintheta; |
| point.y = point.y * costheta + point.x * sintheta; |
| point.x = tempx; |
| return point; |
| } |
| |