算法【动态规划】——前端实践:类金字塔

本文介绍了如何使用CSS的transparent属性来创建动态的类金字塔结构图形,包括三角形和梯形。通过调整参数,可以生成一系列形状,形成类似金字塔的序列。文章详细解析了CSS样式与图形各边长的关系,并提供了JavaScript函数实现动态渲染。

需求描述:用csstransparent属性渲染三角形和梯形,根据传入的参数,动态渲染类金字塔结构的图形。如下:

类金字塔图形

<style>
/* 三角形 */
#Triangle{
     
     
	width: 0px;
	border-left: 15px solid transparent;
	border-right: 15px solid transparent;
	border-bottom: 30px solid grey;
}
/* 梯形 */
#Trapezoid{
     
     
	width: 10px;
	border-left: 10px solid transparent;
	border-right: 10px solid transparent;
	border-bottom: 30px solid grey;
}
</style>
<!-- 一个简单的三角形 -->
<div id="Triangle"></div>
<!-- 一个简单的梯形 -->
<div id="Trapezoid"></div>

效果如下:
三角形、梯形
分析过程:(设第n个图形的上底为Xn,下底为Yn,高恒为h,两个图形之间的距离恒为d,倾斜角度为α)
则css的属性值与图形各个长度的对应关系为:

width: (Xn)px;
height: (d)px;
border-left: (t)px solid transparent;
border-right: (t)px solid transparent;
border-bottom: (h)px solid grey;

/* 相关计算公式如下:
 t = (Yn - Xn)/ 2 
 tanα = t / h 
*/

需由上关系推出Xn,Yn与用户已输入的参数之间的关系:
用户输入的参数

  1. 当n = 1,X1 = x, Y1 = y,t = (Y1-X1) / 2
  2. 当n = 2,X2 = Y1 + (2td) / h,Y2 = X2 + 2t,t2 = t1
  3. 当n = 3,X3 = Y2 + (2td) / h,Y3 = X3 + 2t,t3 = t1
  4. Xn = Y(n-1) + (2td) / h, Yn = Xn + 2t, tn = t1
  5. 由此得出状态公式:
    若n = 1,Xn = x,Yn = y,tn = (y-x) * 0.5
    若n > 1,Xn = Y(n-1) + ((y-x) * d) / h,Yn = Xn + (y-x),tn = (y-x) * 0.5

完整详细代码如下:

<html lang="en">
    
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值