当前位置:编程学习 > JAVA >>

求解 时钟表盘秒针转动坐标如何计算

。。如标题     不会算了。  --------------------编程问答-------------------- 这是我原来写的时钟程序,里面有有关速算法,你看下(不过是用C++写的,你参考下)
clockRadius=clockRadius*0.9;//指针半径稍小于圆半径
double keduDRadius=clockRadius*0.92;
double keduXRadius=clockRadius*0.95;

double hourRadius=clockRadius*0.5;//时针半径
double minuteRadius=clockRadius*0.7;//分针半径
double secondRadius=clockRadius*0.9;//秒针半径

CPen clockPen(PS_SOLID,3,RGB(255,0,0));//自定义画笔
CPen *poldpen=pDC->SelectObject(&clockPen);//把GDI对象选入设备设备描述表中

//标注大刻度1~12
for(int i=1;i<=12;i++)
{
pDC->MoveTo(centerX+keduDRadius*cos(i*30*M_PI/180),
centerY+keduDRadius*sin(i*30*M_PI/180));
pDC->LineTo(centerX+clockRadius*cos(i*30*M_PI/180),
centerY+clockRadius*sin(i*30*M_PI/180));
}


//标注小刻度1~60
for(int j=1;j<=60;j++)
{
pDC->MoveTo(centerX+keduXRadius*cos(j*6*M_PI/180),
centerY+keduXRadius*sin(j*6*M_PI/180));
pDC->LineTo (centerX+keduXRadius*cos(j*6*M_PI/180),
centerY+keduXRadius*sin(j*6*M_PI/180));
}
pDC->SelectObject(poldpen);//还原画笔


//调节时、分、秒针角度显示关系
double secondRadians=m_second*2*M_PI/60;//秒走过的弧度
double minuteRadians=m_minute*2*M_PI/60+secondRadians/60;//相应分针走过的弧度
double hourRadians=m_hour*2*M_PI/12+(minuteRadians/12);//相应时针走过的弧度


//依照计算出的角度画出时、分、秒针
CPen secondPen(PS_SOLID,2,RGB(0,255,0));
poldpen=pDC->SelectObject(&secondPen);
pDC->MoveTo(centerX,centerY);
pDC->LineTo(centerX+double(secondRadius)*sin(secondRadians),
centerY-double(secondRadius)*cos(secondRadians));
pDC->SelectObject(poldpen);

CPen minutePen(PS_SOLID,4,RGB(255,0,0));
poldpen=pDC->SelectObject(&minutePen);
pDC->MoveTo(centerX,centerY);
pDC->LineTo(centerX+double(minuteRadius)*sin(minuteRadians),
centerY-double(minuteRadius)*cos(minuteRadians));
pDC->SelectObject(poldpen);

CPen hourPen(PS_SOLID,6,RGB(0,0,255));
poldpen=pDC->SelectObject(&hourPen);
pDC->MoveTo(centerX,centerY);
pDC->LineTo(centerX+double(hourRadius)*sin(hourRadians),
centerY-double(hourRadius)*cos(hourRadians));
pDC->SelectObject(poldpen);
--------------------编程问答-------------------- 根据时间计算出各个针对应的弧度,根据弧度以及针的长度计算坐标,然后连线,这是中学数学,很简单的。 --------------------编程问答-------------------- 计算偏移角度就行  反正针的长度是固定的  直接从原点加
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,