Python讲透视原理(四) -- 三灭点透视

本文详细介绍了三灭点透视原理,包括飞鸟视角下的灭点位置、立方体在三灭点透视中的顶点坐标变换方法,以及如何在Python中使用turtle库进行可视化。代码示例约200行,可在编程世界获取源码和elements绘图库。
摘要由CSDN通过智能技术生成

前面讲完单灭点透视和双灭点透视,三灭点透视原理是一样的,索性趁热打铁完成这个透视原理的讲解和实现吧。

三灭点透视

飞鸟视角,从高空俯视高楼,上大下小,所以高度方向存在一个灭点,位于地面以下,是高度平行边的交汇点。

所以三灭点透视相当于x, y, z方向各有一个灭点。在两灭点基础上,地下添加一个灭点。把点名字加上了,方便观看。

立方体在三灭点透视中,只保留P2点,从飞鸟视角,它是离观察点最近的点,其他点都需要变换。

顶点坐标变换

以P2为基础点不变:

NP2 = P2 ;

顶面按照双灭点连线法,可以确定NP3,  NP6, NP7,也就是先确定顶面

NP0不能在以P0为参考了,因为透视上大下小,底面已经变形。在两灭点透视中,高度方向无差异,NP0可以使用P0位置和两个地平线灭点连线的交叉点;但在三灭点透视中,高度透视后P0/P1/P4/P5位置其实已经失效。

新的P0, P1、P4、P5要使用第三个灭点画出。

将所有顶面新的点NP2,NP3,NP6,NP7 与D2相连

高度方向缺少高度约束,那么:

NP1 = Line(P2,D2) 上从P2开始截取一个高度,就是NP1

NP0 = Line(NP3,D2) 和Line(NP1,D0)的相交点

NP5 = Line(NP6,D2) 和Line(NP1,D1) 的相交点

NP4 = Line(NP7,D2) 和Line(NP5,D0)的相交点

以上顶点计算顺序,想想为啥?其实手绘一下就能知道了。可以给小学生锻炼一下连线法。

Python上效果

turtle海龟图很简单,小学生都会用的,连线和交叉点方法已在elements库里。

上大下小,三组平行线交互于三灭点就成了。与灭点连线是这样子的:

Python动效

三灭点透视

代码百行左右,用了elements 绘图库,不用情况下预估也就200行。

编程世界 www.pycodeworld.com 提供源码及elements 绘图库。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值