直线、圆、三角形等分平面部分数的问题

http://blog.sina.com.cn/s/blog_741babe70101c5vd.html

直线、圆、三角形等分平面部分数的问题

对于比较复杂的问题,可以先观察其简单情况,归纳出其中带规律性的东西,然后再来解决较复杂的问题。

先看例1:一条直线分一个平面为两部分,二条直线最多分这个平面为四部分。问5条直线最多分这个面为多少部分?

解答:对于有这一类问题,我们一般可以采用找规律的方法。也就是从最简单的情况开始,找出其中规律,归纳总结到一般情形。

一条直线时,分平面内为2个部分;

增加一条直线,即2条时,显然它应该与原来那条直线相交才能把平面分的多,这是增加了2部分,总数2+2;在增加1条到3条时,同理应该与前两条都相交,这时增加了3部分,总数2+2+3;

增加到4条时,分平面增加4部分,总数2+2+3+4;

由此我们发现,每增加一条直线,多分平面部分逐个递增,即n条直线最多分平面

2+2+3+4+......+n=1+n(n+1)÷2。这就得到了直线分平面的公式。

所以,n=5时,最多分平面16部分。

在这里我们要刨根究底,为什么增加3条直线就能增加3个部分,主要研究交点的产生对部分数产生的直接影响,在第3条直线之前已有2条直线,最多与这2条直线产生2个交点,而这两个交点把第三条直线分成了3部分,一条线段,两条射线,这三条线穿过三个部分,每个部分都一分为二,所以增加3个部分,后面的很多讨论都类似于这种想法,看交点,再看交点分成的线数,这些线每穿过一个部分自然把它一分为二,考虑交点与部分数的联系是解决此类问题的诀窍。

例2.一个长方形把平面分成两部分,那么3个长方形最多把平面分成多少部分?

解答:见右图,最多26个。

上面是画出实图,有点难度,这方法较笨拙,要是问10个长方形怎么办?显然得找出规律,可结合画图的过程,参考如下思路,一个长方形可分内外两部分,第2个长方形有四条边,每条边都可以挂一下原长方形的每个角,这样就产生8个交点,这8个交点自然把第2个长方形这样一个封闭图形分成8段(有直有弯),每段穿过一个部分一分为2,新增8个,所以2+8=10,第3个长方形的每条边现在可以挂到原有2个长方形的8个角,最多可产生16个交点,同理这16个交点把第三个长方形本身分成16段,每段穿过一个部分,又新增加16个,共2+8+16=26个。

N个四边形分部分数可总结出一个规律:部分数=2+n×(n-1)×4

公式里的4就对应着,4边形的4,

其实圆可当成封闭的1边形,那么n个圆分的部分数可仿写为:

部分数S=2+ n×(n-1)×1

同理n个三角形分平面的部分数公式为:

A=2+ n×(n-1)×3

       同理n个5边形分平面的部分数公式为:

A=2+ n×(n-1)×5

………

上面的能看明白,记住,以后做类似题就方便多了.

再来一道详解,巩固一下:

例3:10个三角形最多将平面分成几个部分?

解:可这样想,设n个三角形最多将平面分成an个部分。n=1时,a1=2;n=2时,第二个三角形的每一条边与第一个三角形最多有2个交点,三条边与第一个三角形最多有2×3=6(个)交点。这6个交点将第二个三角形的周边分成了6段,这6段中的每一段都将原来的每一个部分分成2个部分,从而平面也增加了6个部分,即a2=2+2×3。

  n=3时,第三个三角形与前面两个三角形最多有4×3=12(个)交点,从而平面也增加了12个部分,即:  a3=2+2×3+4×3。

  ……

  一般地,第n个三角形与前面(n-1)个三角形最多有2(n-1)×3个交点,从而平面也增加2(n-1)×3个部分,故

  an=2+2×3+4×3+…+2(n-1)×3

   =2+[2+4+…+2(n-1)]×3

   =2+3n(n-1)=3n2-3n+2。

  特别地,当n=10时,a10=3×102+3×10+2=272,即10个三角形最多把平面分成272个部分。

    套用例2下的公式:2+10×(10-1)×3=272,与上面结果相同,只是公式的表达形式不全相同。

例4:在平面上画5个圆和1条直线,最多可把平面分成多少部分?

解答:

关于圆分平面,我们在第一题中已经给出了一个计算公式(推导方法与第一题相同)。由此我们知道5个圆最多分平面5×(5-1)+2=22部分。

现在再增加一条直线,那么一条直线最多有5个圆有10个交点,所以最多增加10部分,也即5个圆和1条直线最多可把平面分成22+10=32部分。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是用Python和OpenCV库检测图片中直线形和三角形的示例代码: ```Python import cv2 import numpy as np # 读取图片 img = cv2.imread('test.jpg') # 转为灰度图 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 高斯模糊 blur = cv2.GaussianBlur(gray, (5, 5), 0) # 边缘检测 edges = cv2.Canny(blur, 50, 150, apertureSize=3) # 直线检测 lines = cv2.HoughLinesP(edges, 1, np.pi/180, 100, minLineLength=10, maxLineGap=10) # 绘制直线 for line in lines: x1, y1, x2, y2 = line[0] cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), 2) # 形检测 circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0) # 绘制形 if circles is not None: circles = np.uint16(np.around(circles)) for circle in circles[0, :]: cv2.circle(img, (circle[0], circle[1]), circle[2], (0, 0, 255), 2) # 三角形检测 contours, _ = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) for contour in contours: approx = cv2.approxPolyDP(contour, 0.01 * cv2.arcLength(contour, True), True) if len(approx) == 3: cv2.drawContours(img, [approx], 0, (255, 0, 0), 2) # 显示图片 cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 该代码首先读取一张图片,然后将其转换为灰度图,并进行高斯模糊和边缘检测。接下来,使用Hough变换在边缘图像中检测直线形,并别绘制在原图上。最后,使用findContours函在边缘图像中寻找轮廓,并使用approxPolyDP函判断是否为三角形,并将其绘制在原图上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值