c#画五角星数学方面的知识、完整代码分享

作者:小菜 更新时间:2025-03-16 点击数:
简介:c#画一个五角星,最重要的就是计算哪些坐标点出来,也是最难的一部分,这要涉及到一些数学方面的知识.对数学坐标知识不是很熟的人,如果想学画图,我建议多去看一下数学

【菜科解读】

c#画一个五角星,最重要的就是计算哪些坐标点出来,也是最难的一部分,这要涉及到一些数学方面的知识.对数学坐标知识不是很熟的人,如果想学画图,我建议多去看一下数学书,对我们写程序的人来说是没有什么坏处可言的.

想学习的朋友可以一起学习,我觉得分享学习是一种快乐,所以把自己的一些心得分享给大家,我本人也是走了很多的弯路,所以也不希望一些朋友做一些吃力不讨好的事.

废话不多说,先看一下效果图吧:

效果还可以吧,至少长得很像五角星,当然你也可以说不像,可能我的口味和你的不同,不过我们的目的都是一样的,就是怎么算这些坐标出来并且把他画出来.

好,现在我们开始来分析问题(在此之前,我建议不懂极坐标的朋友先看看极坐标方面的一些知识,因为算法的核心问题主要在这里.):

程序分析步骤:

1.画一个五角星,需要先确定五角星的十个点,有朋友可能问:"为什么是十个点而不是五个点呢?",这种问题希望没有学过c#的人都会知道,确定一个五角星需要十个点,多边形嘛!

2.如何获得我们所需要的十个点呢?反问自己,经常反问自己可以解决很多问题.要想确定十个点,你可以观察一下图形,或自己画一下,看一下图形的特点(中心对称图形),对于中心对称图形,就可以确定其中心点,其他所有的点都是围绕着这个中心点转的,我们可以根据三个条件来确定我们想要得到的点:

1.中心点

2.中心点到目标点的距离

3.目标点和X轴(水平距离)的夹角

现在我们可以写一个GetPoint的方法来获得目标点,代码如下:

/// /// 获得五角星的各个点 /// ///

中心点坐标 ///

距离中心点的长度 ///

和水平方向的夹角 /// public PointF GetPoint(PointF ptCenter, double length, double angle) { return new PointF( (float)(ptCenter.X + length * Math.Cos(angle)), (float)(ptCenter.Y + length * Math.Sin(angle))); }

方法很简单,返回一个目标点,这个算是核心的一个方法,理解了这个方法,接下来的都迎刃而解.既然能够得到一个点当然也能够得到一系列的点,所以我们还可以写一个获得一系列点的方法GetPoints,代码如下:

/// /// 返回一个坐标的数组 /// ///

中心点 ///

距离中心点的长度 ///

两点之间的夹角 /// public PointF[] GetPoints(PointF ptCenter, double length, params double[] angles) { PointF[] points = new PointF[angles.Length]; for (int i = 0; i /// 获得所有角度的数组 /// ///

开始的角度 ///

个数 /// public double[] GetAngles(double startAngle,int pointed) { double[] angles = new double[pointed]; angles[0] = startAngle; for (int i = 1; i /// 获得角度的增量 /// ///

/// public double GetAngleLength(int pointed) { return 2*Math.PI/pointed; }

可以看到我们定义了两个方法,想要确定目标点和X轴(水平距离)的夹角,就要确定多少个角(pointed),还有你的起始角的位置(startAngle,中心点之上的那个点),然后确定角度的增量就可以计算出所有的角度了!

3.万事俱备,只欠一个DrawStar的方法,先看一下代码:

/// /// 画五角星 /// ///

多少个角 ///

Graphics参数 public void DrawStar(int pointed,PaintEventArgs e) { Graphics g = e.Graphics;//建立一个画布 g.CompositingQuality = CompositingQuality.HighQuality;//设置图像呈现的质量 g.SmoothingMode = SmoothingMode.HighQuality;//对图片进行平滑处理 Pen p = new Pen(Color.Red);//画笔的颜色 double[] angles1 = GetAngles(-Math.PI / 2, pointed);//五角星外围的点角度的一个数组 double[] angles2 = GetAngles(-Math.PI / 2+Math.PI/pointed, pointed);//五角星内围的点角度的一个数组 PointF[] points1 = GetPoints(new PointF(300, 300), 100, angles1);//五角星外围的点的一个数组 PointF[] points2 = GetPoints(new PointF(300, 300), 50, angles2);//五角星内围的点的一个数组 PointF[] points = new PointF[points1.Length+points2.Length];//最终合成多边形所有点的数组 for (int i = 0,j=0; i /// 画五角星 /// ///

多少个角 ///

Graphics参数 public void DrawStar(int pointed,Graphics g) { g.CompositingQuality = CompositingQuality.HighQuality;//设置图像呈现的质量 g.SmoothingMode = SmoothingMode.HighQuality;//对图片进行平滑处理 Pen p = new Pen(Color.Red);//画笔的颜色 double[] angles1 = GetAngles(-Math.PI / 2, pointed);//五角星外围的点角度的一个数组 double[] angles2 = GetAngles(-Math.PI / 2+Math.PI/pointed, pointed);//五角星内围的点角度的一个数组 PointF[] points1 = GetPoints(new PointF(300, 300), 100, angles1);//五角星外围的点的一个数组 PointF[] points2 = GetPoints(new PointF(300, 300), 50, angles2);//五角星内围的点的一个数组 PointF[] points = new PointF[points1.Length+points2.Length];//最终合成多边形所有点的数组 for (int i = 0,j=0; i /// 获得所有角度的数组 /// ///

开始的角度 ///

个数 /// public double[] GetAngles(double startAngle,int pointed) { double[] angles = new double[pointed]; angles[0] = startAngle; for (int i = 1; i /// 获得角度的增量 /// ///

/// public double GetAngleLength(int pointed) { return 2*Math.PI/pointed; } /// /// 获得五角星的各个点 /// ///

中心点坐标 ///

距离中心点的长度 ///

和水平方向的夹角 /// public PointF GetPoint(PointF ptCenter, double length, double angle) { return new PointF( (float)(ptCenter.X + length * Math.Cos(angle)), (float)(ptCenter.Y + length * Math.Sin(angle))); } /// /// 返回一个坐标的数组 /// ///

中心点 ///

距离中心点的长度 ///

两点之间的夹角 /// public PointF[] GetPoints(PointF ptCenter, double length, params double[] angles) { PointF[] points = new PointF[angles.Length]; for (int i = 0; i 画,五角星,数学,方面的,方,面的,知识,、,完整,

历史上最伟大的十位数学家 牛顿仅排第七

数学是一门基础学科,在课堂上有人可能觉得有趣,有人可能觉得无聊,那些觉得无聊的人可能会避免它,但谁觉得有趣,他们可能会在他们的进一步研究和生活中追求它,历史上有一些著名的数学家,他们的大量工作使我们能够更好地了解世界,他们的发现和思想帮助我们在生活中拥有卫星、手机和汽车,以下是历史上最伟大的十位数学家。

10.毕达哥拉斯毕达哥拉斯爱奥尼亚的希腊数学家、哲学家,也是毕达哥拉斯主义的创始人。

在亚里士多德看来,毕达哥拉斯学派是最早广泛研究高等数学的学派之一。

9.比萨的列奥纳多比萨的列奥纳多是一位意大利数学家,被一些人认为是中世纪最有才华的数学家,他以在欧洲引入斐波纳契数列和阿拉伯数字系统而闻名。

8.戈特弗里德·威廉·莱布尼茨戈特弗里德·威廉·莱布尼茨是德国哲学家和数学家,在哲学史和数学史上占有独特的地位。

他是最多产的机械计算器发明者之一,也是第一个在1685年发明风车式计算器的人。

7.艾萨克·牛顿艾萨克·牛顿是英国数学家和物理学家,他制定了运动三定律和万有引力三定律,他还因为对任何指数都有效的广义二项式定理而受到赞赏。

6.艾伦·麦席森·图灵艾伦·麦席森·图灵是英国数学家、密码分析家、逻辑学家和计算机科学家,由于他在计算机科学领域的智慧和有影响力的工作,他被称为人工智能和计算机科学之父。

5.勒内·笛卡尔勒内·笛卡尔是法国哲学家、作家、数学家和物理学家,他被称为“现代哲学之父”。

他最持久的贡献之一是笛卡尔坐标系或解析几何,他发明了用x y z来表示方程中的未知数的方法或者用a b c的形式,他还发明了标准的表示指数的方法。

4.欧几里得欧几里得是一位伟大的希腊数学家,常被称为“几何学之父”。

他从一组公理中总结出欧几里德几何的原理,由于当时的资源有限,人们对他的生活和他之前写的东西知之甚少。

他还写了另外五本关于球面几何、透视、数论、圆锥截面和严谨的著作。

3.波恩哈德·黎曼波恩哈德·黎曼是一位德国科学家,他出生在一个贫穷的家庭,但却成为了一位有影响力的数学家。

他在数论、微分几何和分析方面做出了很多贡献,有很多定理都以他的名字命名。

2.约翰·卡尔·弗里德里希·高斯约翰·卡尔·弗里德里希·高斯是德国数学家和物理学家,也被称为“数学家之王”,在代数、数论、分析、统计、地球物理学、微分几何、光学、静电学和天文学等领域都有杰出贡献。

1.莱昂哈德·欧拉莱昂哈德·欧拉是一位瑞士数学家和物理学家,他被誉为十八世纪杰出的数学家,在微积分、几何、代数、三角和图论等学科中都有重大发现。

世界最伟大数学家 历史上最伟大的数学家排名

数学是课堂上讲授的基本科目之一,有些人可能觉得它很有趣,而有些人可能会觉得无聊,那些觉得无聊的人可能会避开它,但他们会发现有趣的东西,他们可能会在以后的学习和生活中追求它,并且会成为一些伟大的数学家。

这是一个理论性的课题,有时也很困难,需要充分的思维来理解它的概念。

以下是10位最伟大的数学家。

这个名单是根据他们对数学的热爱,他们的贡献和永恒的影响。

10.毕达哥拉斯的萨摩斯 570 bc - 495 bc萨摩斯的毕达哥拉斯是一位爱奥尼亚的希腊数学家,哲学家,毕达哥拉斯主义的创始人。

他经常被认为是伟大的神秘主义者、数学家和科学家,但他以毕达哥拉斯定理而闻名于世。

根据亚里士多德的研究,勾股定理是最早被广泛研究的超前数学之一。

这个定理的重要性直到现在才被否认,因为它是大多数其他数学定理的基础,他的伟大理论导致了几何学的发展,因此他被誉为现代数学之父和伟大的数学家。

9.斐波那契 1170 - 1250斐波那契也被称为斐波纳契是一位意大利数学家,他被一些人认为是中世纪最有才华的数学家。

他以引进斐波那契数列和欧洲阿拉伯数字系统而闻名。

还有许多其他的数学概念是以斐波那契命名的。

他的作品在这一领域被采用,并被认为是现代数学领域发展的主要贡献。

8.威廉·莱布尼兹1646 - 1716威廉·莱布尼茨是德国哲学家、数学家,在哲学史和数学史上占有独特的地位。

他的职业生涯最初是作为律师,后来由于他的兴趣,他对哲学和科学产生了浓厚的兴趣。

在数学上,他的兴趣领域是神学,但他后来发明了微积分。

他是最多产的机械计算器发明家之一,也是第一个在1685年描述了一个风车计算器的人。

7.艾萨克·牛顿1642 - 1727艾萨克·牛顿(Isaac Newton)是英国数学家和物理学家,被广泛认为是最鼓舞人心的科学家之一,在科学革命中扮演着榜样的角色。

牛顿还对光学做出了重大贡献,并制定了万有引力定律。

他和戈特弗里德·莱布尼茨一道发明了微积分。

他的工作有助于推进数学的每一个分支。

对于任何指数都有效的广义二项式定理,他也很欣赏。

因此,他是有史以来最伟大的数学家之一。

6.艾伦·图灵1912 - 1954年艾伦·图灵是英国的数学家,密码学家,逻辑学家和计算机科学家。

他被认为是人工智能和计算机科学之父,因为他在计算机科学领域的智慧和有影响力的工作。

他解释了“计算”和“算法”的概念,并借助旋转机器的帮助,它被认为是代表计算机的模型。

在他杰出的头脑的帮助下,他在第二次世界大战期间为英国的政府代码和Cypher学校工作,并为破译德国密码设计了许多方法。

他被称为第一个真正的计算机科学家,他还写了一些关于计算的优秀论文,这些论文仍然是有效的,而且还制定了图灵测试,它仍然适用于评估计算机的智能。

5.勒奈·笛卡尔1596 - 1650勒内·笛卡尔是法国哲学家、作家、数学家和物理学家。

作为对他作品的回应,他被誉为“现代哲学之父”。

他在数学方面的贡献是一样的,他最持久的贡献之一是笛卡尔坐标系统或分析几何学。

他发明了用x、y、z或a、b、c等形式表示方程中未知数的方法,他还发明了一个标准概念,用来表示指数或幂。

作为第一个在我们的系统中分配代数基础的数学家,他的工作真是令人惊讶。

牛顿和莱布尼茨的微积分都是基于他的研究成果,他也在光学领域做出了贡献。

4.欧几里得亚历山大的欧几里得,是一位伟大的希腊数学家,经常被提到为“几何学之父”。

他以他的代表作而出名;这是对该领域的一种鼓舞人心的贡献,并被作为主要的教科书,从其发行的时间一直到19世纪末或20世纪初,教数学。

他从一小部分公理中总结了欧几里德几何的原理。

他还写了另外五部关于球面几何、透视、数论、圆锥截面和严谨性的作品。

由于当时资源有限,很少有人知道他的生活和他以前写过的东西。

3.波恩哈德·黎曼 1826 - 1866年波恩哈德·黎曼是一名德国科学家,出生于一个贫穷的家庭,但后来成为一名有影响力的数学家。

他在数论、微分几何和分析方面做了很多贡献,有很多定理都有他的名字,比如黎曼几何,黎曼-刘维尔的差积分,黎曼积分和黎曼曲面。

众所周知,他的黎曼假设表明了质数分布的问题。

黎曼很幸运,有计算能力,但很害羞,在他的早年生活中,他害怕在人们面前讲话。

即使在他死后,他对数学的贡献仍然在数学领域。

2.卡尔·弗里德里希·高斯 1777 - 1855#p#分页标题#e#卡尔·弗里德里希·高斯是一位德国数学家,也是一位物理学家,也被称为“数学家之王”,他在代数、数论、分析、统计学、地球物理学、微分几何、光学、静电和天文学等各个领域都有很大贡献。

他有非凡的心智能力,在他十几岁的时候就有了第一个发现。

1798年,21岁的他写了一本名为《数学计算》的巨著。

这项工作对于建立数字理论,并使该领域在当前时期具有一定的曲线。

他把数学作为所有科学的皇后,并引入了物理学的高斯引力常数,他努力工作到死,他的贡献总是被记住。

1.莱昂哈德·欧拉1707 - 1783莱昂哈德·欧拉是瑞士数学家和物理学家。

欧拉是十八世纪杰出的数学家,也是一位有趣的、最多产、最伟大的数学家,在他的定理和概念中,他做了非凡的工作。

他在这个专业上有很多发现,如微积分、几何、代数、三角和图论。

他在数学中引入了现代术语和符号,如数学函数的概念,尤其是数学分析和三角函数的现代概念。

他在光学、力学、流体动力学和天文学方面的研究非常出色。

与拉普拉斯有关的一份

加入收藏
               

c#画五角星数学方面的知识、完整代码分享

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录