通过画五角星,回顾啦三角函数

程序代码:

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Pen pen = new Pen(Color.Yellow, 3);
            Brush brush = new SolidBrush(Color.Red);
            Point[] star = new Point[10];
            double angle = Math.PI / 180;
	    /
	    
            for(int i=0;i<10;i+=2)
            {
                star[i].X = (int)(150 + 80 * Math.Cos(angle * 36 * (i + 3.5)));
                star[i].Y = (int)(90 + 80 * Math.Sin(angle * 36 * (i + 3.5)));
                star[i + 1].X = (int)(150 + 30 * Math.Cos(angle * 36 * (i + 4.5)));
                star[i + 1].Y = (int)(90 + 30 * Math.Sin(angle * 36 * (i + 4.5)));

            }
 	    /
            g.FillPolygon(brush, star);
            g.DrawPolygon(pen, star);
        }

 

中间代码分析:

此处代码作用是得到五角星10个端点坐标,作为FillPolygon和DrawPolygon函数的输入。

            为得到五角星的十个端点坐标,首先可以分析得到,十个端点与五角星中心点的连线把一圈分成啦10份,每份占36度,这也是angle*36的由来,至于(150,   90)这是中心点的坐标。而 i 之所以加3.5是为了五角星正放置。

            这里运用数学及物理中三角函数知识可知,angel*36可以理解成角速度w,每次要旋转多少度,里面 i无论加多少,只是把三角函数图像左右移动而已,不影响图像的形状,至于80和30则是振幅,这里是因为五角星的五个端点离中心点的距离不一样。至于加3.5,是因为最后一个点的坐标是刚好转啦450度,那么该点的横坐标正好与中心点相等,那么图像为正放置。

运行结果:


















评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值