Rectangle类介绍

Rectangle类介绍

                                                                                               from:http://hi.baidu.com/dannyfd

 

注:Rectangle翻译过来为矩形,但根据意译可以理解为“区域”,文中所指的“区域”可同样理解为Rectangle,矩形,矩形区域。

--------------------------------------------------------------------------------------------------------------------------------------

今天偷偷懒,就介绍一个中下难度的类,Rectangle类。

一,概括:

乍一看,可能感觉是一个矩形类,矩形类就是画一个长方形吗??这是我一开始见到这个类的感觉。

其实不是的Rectangle是一个“区域”类,它的最大作用就是定义一个矩形的区域,如果问为什么是矩形,不是圆形,三角形···Anyway···因为从程序的角度来说,矩形是最适合表示的。

Rectangle类其实之前在介绍Bitmapdata的时候大家也不陌生了,很多Bitmapdata变化区域的界定就是靠的他。这次详细的讲解主要是对他的一些运算API做一个了解。

Rectangle类属于geom包,geom是geometry(几何)的缩写,同属这个包的还有Point类,这个包里放的也都是一些数学运算的概念类。Rectangle直接继承Object对象,所以没有太多父类东西要了解。一共有11个公共属性,16个公共方法。看似很多,其实很多都很容易理解。

二,公共属性:

分两部分来,一部分是直接可得的,一部分是可以运算但是AS3已经内部计算好可以直接调用的。

第一部分:

1,x:就是区域的x坐标。(左上角)

2,y:就是区域的y坐标。(左上角)

3,width:区域的宽

4,height:区域的高

第二部分:

5,top:区域的顶的y坐标,其实就是y

6,bottom:区域底的y坐标,其实就是y+height

7,left:区域左边缘的x坐标,其实就是x

8,right:区域右边缘的x坐标,其实就是x+width

9,topLeft:一个point对象,记录了左上角的位置,可以读写(即可以通过给这个属性赋值一个point对象来设置x,y值)

10,rightBottom:也是一个point对象,记录了右下角位置,可以读写(即可以通过给这个对象赋值,配合topLeft一起修改Rectangle的width,height,bottom,right属性)

11,size:还是一个point对象,记录了区域的长宽,可以读写(即可以通过赋值,直观的改变区域的长宽,间接改变了面积)。

虽然有11个公共属性,可是核心的也就x,y,width,height四个,其他的完全可以通过简单的数学运算取代。不过如果能熟练运用其他的7个公共属性也不错。修改起来也更加直观。

三,公共方法:

1,构造方法

Rectangle(x:Number = 0, y:Number = 0, width:Number = 0, height:Number = 0)

这个构造方法很好理解,直接设置了核心的4个公共属性。

2,复制方法

clone():Rectangle

这个方法也很简单,就是复杂类型对象的复制。

3,判断某个点是否在区域内(方法1)

contains(x:Number, y:Number):Boolean

很直观,输入点的坐标x,y,返回Boolen值

4,判断某个点是否在区域内(方法2)

containsPoint(point:Point):Boolean

跟contains()完全一样的作用,只不过参数换成了一个point对象。

5,判断区域A是否包含另外一个区域B

containsRect(rect:Rectangle):Boolean

这里的包含,是指完全包住,即成一个“”字型。

6,判断两个区域是否相等

equals(toCompare:Rectangle):Boolean

这里的相等,不是指是否同一个对象的相等,而是指构成两个区域的4要素:x,y,width,height完全相等。如果完全相等这返回true

7,改变区域大小(方法1)

inflate(dx:Number, dy:Number):void

inflate的意思是膨胀。有人可能好奇,增加大小直接设置width和height不就好了吗?这个方法的不同是,他是以区域的中心点,向左右上下各增长dx,dy的,内部的运算其实是:

x -= dx;
width += 2 * dx;

y -= dy;
height += 2 * dy;

PS:dx,dy可以输入负数做参数,这样就达到了缩小区域的目的。

8,改变区域大小(方法2)

inflatePoint(point:Point):void

跟inflate()一样作用,只是参数换成了point而已。

9,两区域取交集

intersection(toIntersect:Rectangle):Rectangle

标题其实已经说出了这个方法的作用,就是取得两个区域的交集,即返回相交部分的区域。

10,判断两区域是否相交

intersects(toIntersect:Rectangle):Boolean

这个函数和intersection()很容易混淆,因为根本就是同一个词的不同词性,一个是名词一个是动词。不过还好看返回值还是能清晰分出的。这个方法就是判断两区域是否相交。

11,判断区域是否为空

isEmpty():Boolean

这里空的意思,可以理解为区域的面积width*height=0,即width==0 || height==0

12,位移(方法1)

offset(dx:Number, dy:Number):void

就是改变左上角的位置,其实就是改变x,y的值。具体作用为:

Rectangle.x += dx;

Rectangle.y += dy;

13,位移(方法2)

offsetPoint(point:Point):void

跟offset()作用一样,只是参数换成了point

14,清零

setEmpty():void

描述是将Rectangle所有属性清零,就是4大基本属性x,y,width,height都为0

15,输出

toString():String

没啥特别的,就是一个转String类型时调用的方法。输出4大基本属性x,y,width,height

16,合并区域

union(toUnion:Rectangle):Rectangle

将两个区域合并,听上去好像很不错,但是别高兴太早,这个合并可不像Photoshop里的合并多个选择区域那种合并。这个合并区域是合出一个大矩形···囧···就是返回一个大矩形刚刚好包含了两个矩形。

 

总结:

总的来说Rectangle类并不难掌握。

其中公共属性就是4大属性x,y,width,height。

而公共方法主要分作三大功能:

1,改变4大属性,如inflateinflatePointsetEmpty

2,判断包含,如containscontainsPointcontainsRectequals

3,相交,相并操作,如intersectionintersectsunion

4,还有就是剩下一些杂七杂八的小功能。

但Rectangle作为运算类,可能没有太多精彩的玩法。但是却是很多算法的基石。例如模拟即时战略的选取功能等等。还有类似BitmapData运算中限制变化的区域以达到优化的目的等等。

一句话,不要小看数学类在编程中的重要性,编程就是玩数学。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 好的,下面是Python设计一个矩形类rectangle的代码示例: ```python class Rectangle: def __init__(self, width, height): self.width = width self.height = height def area(self): return self.width * self.height def perimeter(self): return 2 * (self.width + self.height) def __str__(self): return f"Rectangle(width={self.width}, height={self.height})" ``` 这个矩形类有两个属性:宽度和高度,以及三个方法:计算面积、计算周长和返回字符串表示。可以通过以下方式创建一个矩形对象: ```python r = Rectangle(5, 10) print(r.area()) # 50 print(r.perimeter()) # 30 print(r) # Rectangle(width=5, height=10) ``` 希望这个代码示例能够帮助你理解如何在Python中设计一个矩形类。 ### 回答2: Python是一种高级编程语言,具有易于学习、简洁优雅的代码风格及丰富的类库。在Python中,可以使用面向对象的编程风格来实现各种应用程序。本文将介绍如何在Python中设计一个矩形类rectangle。 1.矩形类的定义 首先,我们需要定义一个矩形类,用于描述矩形的属性和行为。在Python中,定义一个类的语法如下: class Rectangle: pass 这里我们使用了class关键字定义了一个矩形类Rectangle,并使用了pass语句表示该类为空。现在,我们可以创建一个Rectangle的实例来表示一个矩形了。 2.矩形类的属性 矩形有长和宽两个属性,我们需要在矩形类中定义这两个属性。在Python中,使用构造函数__init__来初始化类的属性。 class Rectangle: def __init__(self, length, width): self.length = length self.width = width 在上面的例子中,我们定义了一个矩形类Rectangle,并在构造函数__init__中定义了两个属性length和width,分别表示矩形的长和宽。通过self关键字,我们可以将这两个属性与类的实例关联起来。 3.矩形类的方法 除了属性外,矩形还有一些行为,比如计算面积和周长,判断是否为正方形等。在Python中,可以使用方法来实现这些行为。例如,我们可以定义一个计算面积的方法area(),其语法如下: class Rectangle: def __init__(self, length, width): self.length = length self.width = width def area(self): return self.length * self.width 在上面的例子中,我们定义了一个矩形类Rectangle,并实现了一个计算面积的方法area()。该方法使用类的属性length和width计算矩形的面积,并使用return关键字返回计算结果。 同样地,我们也可以定义一个计算周长的方法perimeter(),以及一个判断是否为正方形的方法is_square()。 class Rectangle: def __init__(self, length, width): self.length = length self.width = width def area(self): return self.length * self.width def perimeter(self): return 2 * (self.length + self.width) def is_square(self): return self.length == self.width 在上面的例子中,我们实现了一个计算周长的方法perimeter()和一个判断是否为正方形的方法is_square()。这些方法都使用类的属性length和width,以及Python内置的数学运算符来实现相应的功能。 4.矩形类的使用 现在,我们已经定义了一个矩形类Rectangle,并实现了一些属性和方法。我们可以通过创建Rectangle的实例来使用这些属性和方法。例如: # 创建一个长为3,宽为4的矩形 r = Rectangle(3, 4) # 计算矩形的面积并输出 print("矩形的面积为:", r.area()) # 计算矩形的周长并输出 print("矩形的周长为:", r.perimeter()) # 判断矩形是否为正方形并输出 print("矩形是否为正方形:", r.is_square()) 运行上面的程序,将输出以下结果: 矩形的面积为: 12 矩形的周长为: 14 矩形是否为正方形: False 以上便是使用Python设计一个矩形类Rectangle的方法和实现。在这个过程中,我们学习了如何利用class关键字定义一个类,使用构造函数__init__初始化类的属性,以及定义各种方法来实现类的行为。由此,我们可以根据自己的需求设计出更加复杂和实用的类。 ### 回答3: 矩形是一种常见的几何形状,可以用来描述许多物体的基本形状,比如墙壁、书桌、电视屏幕等等。在Python中,我们可以设计一个矩形类来表示矩形。这个矩形类需要具备以下基本属性和方法: 1. 矩形的长和宽:我们可以用两个变量来表示矩形的长和宽,可以通过这两个变量来计算矩形的面积和周长。 2. 矩形的面积和周长:这两个属性可以通过矩形的长和宽来计算,并且需要能够返回正确的数值。 3. 矩形的坐标:我们可以用矩形的左上角和右下角的坐标来表示矩形的位置和大小。 4. 矩形的画图方法:可以在屏幕上绘制出矩形的形状。 下面是一个可能的实现: class Rectangle: def __init__(self, x1, y1, x2, y2): """ 初始化矩形的左上角和右下角坐标 """ self.x1 = x1 self.y1 = y1 self.x2 = x2 self.y2 = y2 def get_width(self): """ 返回矩形的宽度 """ return abs(self.x2 - self.x1) def get_height(self): """ 返回矩形的高度 """ return abs(self.y2 - self.y1) def get_area(self): """ 返回矩形的面积 """ return self.get_width() * self.get_height() def get_perimeter(self): """ 返回矩形的周长 """ return 2 * (self.get_width() + self.get_height()) def draw(self): """ 在屏幕上绘制矩形的形状 """ # 这里可以使用 Python 中的绘图库,比如 tkinter, pygame 等 # 测试代码 r = Rectangle(0, 0, 10, 5) print(r.get_width()) # 输出 10 print(r.get_height()) # 输出 5 print(r.get_area()) # 输出 50 print(r.get_perimeter()) # 输出 30 r.draw() # 绘制矩形的形状(这里省略具体实现)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值