几何向量(5):绘制圆计算π

学到这里,其实我们已经拥有一部分图形学基础知识了,这一篇我们来做一个好玩的计算,就是计算π。


我们知道π叫圆周率,其定义就是圆的周长和圆的直径的比值,为什么要给出π(圆周率)这种定义呢?


实际上是因为圆在日常生活中应用比较广泛,比如车轮是圆的,汽车的里程数,计算轮胎转动的圈数乘轮胎的圆周长就得到了,那么我们怎么计算轮胎的圆周长呢,轮胎的直径很好测量,随便拿个尺就能量出来了(当然轮胎的周长也好测量,把轮胎刻一个刻度,然后地上滚一圈,测量刻度再次还原所滚过的距离就行了),不过因为圆还会应用在很多其他机械上,不是每一种机械都能“在地上滚一圈的”,此时假如能通过直径计算圆周长就好了,因为直径算是“圆形”最好测量的一个值。


实际上在纸面上很不好直接测量,只能通过积分的方式无限逼近测量圆的周长,打个比方,如下图:

image.png


我们在圆内做了一个等边多边形,可以看出等边多边形的面积和周长是不是接近于圆的面积和周长,假如去掉等边多边形和圆之间的那些”毛边“的话,因为有这些毛边的存在,我们不能说多边形的面积和周长等于圆的面积和周长,只能说接近于,如果想多边形”无限“的接近于圆,我们可以”无限“扩展多边形的边数,如下图:

image.png

这里我们用角度θ无限小的等腰三角形≈圆心角为θ的扇形来推导圆周长和圆面积的公式。

得到的结果是:π = 180*sinθ/θ ,S圆 = π*r²

接下来我们用程序验证一下,如下图:

image.png

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class PIMathFunc : MonoBehaviour
{
 
    void Start()
    {
        //假设θ角无限小
        float angle = 0.1f;
 
        float pi = 180.0f * Mathf.Sin(angle * Mathf.Deg2Rad) / angle;
        Debug.LogFormat("pi = {0} angle = {1}", pi, angle);
 
        //来个for无限逼近
        for (int i = 1; i < 100; i += 10)
        {
            float limitangle = 30.0f / i;
            float limitpi = 180.0f * Mathf.Sin(limitangle * Mathf.Deg2Rad) / limitangle;
#if UNITY_EDITOR
            Debug.LogFormat("limitpi = {0} limitangle = {1}", limitpi, limitangle);
#endif
        }
 
    }
 
}

慢慢的逼近PI的值。

接下来来一个图形学中绘圆的程序,我们来实际体验一下圆和三角形的关系,如下图:

image.png


这里三角形数量越多就越接近圆形。

demo下载地址:http://download.csdn.net/download/yinhun2012/10272485



————————————————

版权声明:本文为CSDN博主「羊羊2035」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/yinhun2012/article/details/79458410

本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864