ACLLib动线生成圆饼图案之旋转矩阵运用

ACLLib动线生成圆饼图案?具体如何用动线制作生成圆饼圆案,我来一一分析讲解。

ACLLib库可以用line函数(输入参数为两个点坐标)画直线,让line函数生成动线的方法就是改变输入参数。已经知道的是圆饼图案圆心是不变的x1,y1,另外一个点是在圆上运动的点x2,y2。

哪么现的问题就是如何求解动线另一个点x2,y2的问题,另一点可以用数学中的旋转矩阵求得。

具体求动线另一个点x2,y2代码:

void Rot(int orx,int ory, int& x, int& y, double& T) {

	int xtemp = 0;
	int ytemp = 0;

	T = AngleToArc(T);      //角度值转弧度值,因为数学函数cos和sin的输            //入参数都是要弧                                            //度值         //    角度弧度互转可以看这篇:弧度与角度转换编程                 

	x -= orx;    //orx,ory是圆饼图案的圆心
	y -= ory;

        //旋转矩阵
	xtemp = x * cos(T) - y * sin(T);   
	ytemp = x * sin(T) + y * cos(T);

	x = xtemp+orx;
	y = ytemp+ory;
}

以上就完成了动线生成问题。

AClLib动态间变线生成圆饼图案

现在还有生成窗体?画背景?执行生成动线?动线生成周期?动线间隔颜色设置问题?

生成窗体用函数initWindow();

画窗体图景颜色用setBrushColor(BLACK);  rectangle(0, 0, 500, 140);这两个函数一个是设置画刷颜色,一个是画矩形

执行生成动线可以用registerTimerEvent设置时间回调函数,回调函数每100ms执行一次startTimer(0, 100);

动线间隔角度3度。

动线间隔颜色可以用求余数方法,简单点讲就是动线角度是偶数时画红线,奇数时画绿钱

	if(RotationNum%2 == 0)
		setPenColor(RED);
	else
		setPenColor(GREEN);

以下具体代码:

下载ACLLib动线生成圆饼图案执行文件:
链接:https://pan.baidu.com/s/12KGQTUKEfJx3HovUWQY7sg
提取码:kbgf


发表评论

电子邮件地址不会被公开。 必填项已用*标注