画三角形2

画三角形2

依然是画如图所示的三角形
在这里插入图片描述
对于该问题可以分解为两个问题
1.如何画出picture 1和picture 2,
2.然后合并picture 1和picture 2

在这里插入图片描述

picture 1

在这里插入图片描述

picture 2

对于构成三角形的点,如果放在坐标系中看,可以看作一个一个的坐标。
尝试根据打印的规律建立坐标系。以三角形的行方向作为x轴,至上向下打印为正向;以三角形的列方向作为y轴,至左向右打印方向为正向。
则对于picture 1可以得到picture 3所示的坐标系
在这里插入图片描述

picture 3
将图向左旋转90°可以得到常见的坐标系 根据直线的计算公式可以得到经过(10,1)和(1,10)的方程为

y − 1 x − 10 = 10 − 1 1 − 10 \frac{y-1}{x-10}=\frac{10-1}{1-10} x10y1=110101
整理后得到直线1
x + y − 11 = 0 x+y-11=0 x+y11=0
经过(10,1)和(19,10)的直线2方程为
y − 1 x − 10 = 10 − 1 19 − 10 \frac{y-1}{x-10}=\frac{10-1}{19-10} x10y1=1910101
整理后得到
y − x − 9 = 0 y-x-9=0 yx9=0

根据公式变成伪代码如下:

伪代码
for i = 1:10:
	for j = 1:19:
		if  i+j-11 = 0 or i-j-9 = 0:
			print('*')
		else:
			print(' ')

对于picture 2而言可以理解为直线1与直线2所围成的区域
任意取三角形内的一点(2,10),可以判断出三角型围成的区域为:
L ( x , y ) = { x + y − 11 > 0 y − x − 9 < 0 x ≤ 10 L(x,y)= \begin{cases} x+y-11>0 \\ y-x-9<0\\ x\leq10 \end{cases} L(x,y)=x+y11>0yx9<0x10
转换成伪代码如下:

伪代码
for i = 1:10:
	for j = 1:19:
		if    i+j-11>0 and i-j-9 < 0:
			print('*')
		else:
			print(' ')

为了得到picture1,我们应该综合以上两段代码如下

伪代码
for i = 1:10:
	for j = 1:19:
		if    i+j-11>=0 and i-j-9 <= 0:
			print('*')
		else:
			print(' ')

在实际中的代码如下

打印三角形
for i in range(1,11):
    for j in range(1,20):
        #if i+j-11 >= 0 and i+9-j >= 0:
        if i+j-11 >= 0 and j-9-i <= 0:
            print('*',end=' ')
        else:
            print(' ',end=' ')
    print('\t')

同时对于其他多边形也可以参考该思路得到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值