转动任意弧度,求坐标已知圆心和圆上一点的坐标,求圆上该点转动任意弧度之后的坐标.请讲解下思路及公式。若是JAVA编程人员,给出代码则更好。时间太长,忘光了,汗……
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/20 11:39:39
转动任意弧度,求坐标已知圆心和圆上一点的坐标,求圆上该点转动任意弧度之后的坐标.请讲解下思路及公式。若是JAVA编程人员,给出代码则更好。时间太长,忘光了,汗……
转动任意弧度,求坐标
已知圆心和圆上一点的坐标,求圆上该点转动任意弧度之后的坐标.
请讲解下思路及公式。若是JAVA编程人员,给出代码则更好。时间太长,忘光了,汗……
转动任意弧度,求坐标已知圆心和圆上一点的坐标,求圆上该点转动任意弧度之后的坐标.请讲解下思路及公式。若是JAVA编程人员,给出代码则更好。时间太长,忘光了,汗……
圆心(a,b),已知点A(x,y),逆时针转动弧度c(若是顺时针,则把c改成-c即可),点A变成点B(x',y').
设圆半径为r,圆心与A的连线与x轴夹角的弧度为d,则有
x-a=r*cosd
y-b=r*sind
所以,
x'-a=r*cos(d+c)=r*cosd*cosc-r*sind*sinc=(x-a)cosc-(y-b)sinc
y'-b=r*sin(d+c)=r*sind*cosc+r*cosd*sinc=(y-b)cosc+(x-a)sinc
所以,
x'=(x-a)cosc-(y-b)sinc+a
y'=(y-b)cosc+(x-a)sinc+b
这是我做仪表盘动态加载数据页面处理部分的代码。希望能对你有帮助 <script> var rate = 75; //百分比 var angle = rate * 2.6 +50;//计算角度 document.getElementById("panel").innerHTML = "<img id='pointer' src='pointer.gif' style= 'width:118px;height:118px; position:absolute; top:23.5px; left:23.5px;-moz-transform:rotate(" + angle + "deg); -webkit-transform:rotate(" + angle + "deg); transform:rotate(" + angle + "deg);'>" pointer.style.filter = "progid:DXImageTransform.Microsoft.Matrix()"; pointer.filters.item("DXImageTransform.Microsoft.Matrix").SizingMethod = "auto expand"; pointer.filters.item("DXImageTransform.Microsoft.Matrix").FilterType = "bilinear"; pointer.filters.item("DXImageTransform.Microsoft.Matrix").M11 = Math.cos(angle/(360/(2*Math.PI))); pointer.filters.item("DXImageTransform.Microsoft.Matrix").M12 = -Math.sin(angle/(360/(2*Math.PI))); pointer.filters.item("DXImageTransform.Microsoft.Matrix").M21 = Math.sin(angle/(360/(2*Math.PI))); pointer.filters.item("DXImageTransform.Microsoft.Matrix").M22 = Math.cos(angle/(360/(2*Math.PI))); if (angle<=90 && angle>=0) { pointer.style.top = 165/2 - (118/2/Math.cos(45/(360/(2*Math.PI)))*Math.cos((45-angle)/(360/(2*Math.PI)))); pointer.style.left = 165/2 - (118/2/Math.cos(45/(360/(2*Math.PI)))*Math.cos((45-angle)/(360/(2*Math.PI)))); } if (angle<=180 && angle>=90) { pointer.style.top = 165/2 + (118/2/Math.cos(45/(360/(2*Math.PI)))*Math.sin((45-angle)/(360/(2*Math.PI)))); pointer.style.left = 165/2 + (118/2/Math.cos(45/(360/(2*Math.PI)))*Math.sin((45-angle)/(360/(2*Math.PI)))); } if (angle<=270 && angle>=180) { pointer.style.top = 165/2 + (118/2/Math.cos(45/(360/(2*Math.PI)))*Math.cos((45-angle)/(360/(2*Math.PI)))); pointer.style.left = 165/2 + (118/2/Math.cos(45/(360/(2*Math.PI)))*Math.cos((45-angle)/(360/(2*Math.PI)))); } if (angle<=360 && angle>=270) { pointer.style.top = 165/2 - (118/2/Math.cos(45/(360/(2*Math.PI)))*Math.sin((45-angle)/(360/(2*Math.PI)))); pointer.style.left = 165/2 - (118/2/Math.cos(45/(360/(2*Math.PI)))*Math.sin((45-angle)/(360/(2*Math.PI)))); } </script>
这是什么啊?