//========================================================================================== // arc_direction.txt // Author: Clif Collins Date: Jan 2010 //========================================================================================== //========================================================================================== // arcToDirection //========================================================================================== function arcToDirection(arc) { var dir,cos,siz; dir = new Object(); dir.cx = arc.cx; dir.cy = arc.cy; //---------- First Point ----------- angle = (arc.start / 180) * Math.PI; cos = Math.cos(angle); sin = Math.sin(angle); dir.x1 = ((arc.radius * cos)) + arc.cx; dir.y1 = ((arc.radius * sin)) + arc.cy; //---------- End Point ----------- angle = ((arc.start + arc.sweep) / 180) * Math.PI; cos = Math.cos(angle); sin = Math.sin(angle); dir.x2 = ((arc.radius * cos)) + arc.cx; dir.y2 = ((arc.radius * sin)) + arc.cy; dir.clockwise = arc.rev; return dir; } //========================================================================================== // directionToArc //========================================================================================== function directionToArc(dir) { var dx,dy; arc = new Object(); arc.cx = dir.cx; arc.cy = dir.cy; dx = dir.cx - dir.x1; dy = dir.cy - dir.y1; arc.radius = Math.sqrt(dx * dx + dy * dy); a1 = lineAngle(dir.cx,dir.cy,dir.x1,dir.y1); a2 = lineAngle(dir.cx,dir.cy,dir.x2,dir.y2); if (dir.clockwise) { arc.sweep = ((a1 - a2) + 360) % 360; arc.start = (a2 + 360) % 360; arc.rev = true; } else { arc.sweep = ((a2 - a1) + 360) % 360; arc.start = (a1 + 360) % 360; arc.rev = false; } return arc; }