for(unsigned i=0; i<nsn; ++i)
{
Snap node = get_snap_node(i);
- Vector d(sn.position.x-node.position.x, sn.position.y-node.position.y, sn.position.z-node.position.z);
- if(d.x*d.x+d.y*d.y<limit*limit)
+ Vector span = sn.position-node.position;
+ if(dot(span, span)<limit*limit)
{
sn = node;
return true;
Snap ssn = sn;
if(other.snap(ssn, limit, what))
{
- set_rotation(rotation+ssn.rotation-sn.rotation-M_PI);
+ set_rotation(rotation+ssn.rotation-sn.rotation-Angle::half_turn());
sn = get_snap_node(i);
- position.x += ssn.position.x-sn.position.x;
- position.y += ssn.position.y-sn.position.y;
- position.z += ssn.position.z-sn.position.z;
+ position += ssn.position-sn.position;
return true;
}
}