ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 大灰狼1976

[原创] 【玩到极致】手搓Excel3D (实例及说明,0基础可进)

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-19 14:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
4、将辅助射线删除,连接P1-P8的棱线组成长方体,就是该物体完整的透视图。
   总结:点光源的光线是发散状的,Z坐标离点光源越近的点,投射到屏幕的发散范围越大,与Z坐标值呈线性关系。
         各点的Z轴坐标值是算出投影坐标的关键变量。
         这个就是三维投影的核心算法,非常简单,不管模型多复杂,只要知道各点坐标就能简单算出投影图形。
         其他角度变换、位置变换等等是有坐标变换公式的,套用就行,只要在变换完成后做三维投影计算就行,没有复杂的公式。


完成图.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-19 15:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
5、背向观察者面不显示               
   前面发的说明都是以线段连接各点组成图形,所以没办法做面着色等处理,也不需要考虑背向观察者面不显示。
   接下来要做面着色,那就要用到EXCEL的绘制多边形功能了,多边形可以设置填充色,可满足基本的面着色的需求。
   为了节约电脑算力提高处理速度,就需要考虑背向观察者面不显示的功能。可以用一张纸或者卡片来考虑,
   定义一个正面,定义左上角为1,右上角为2,右下角为3,左下角为4,4个点按顺时针排列,在它背向观察者时,可以
   看到4个点变成逆时针排列了,不管怎么旋转翻转,背向观察者时4个点肯定呈相反的顺序。
   根据这个结果,在绘制多边形前先判断一下该多边形各点(实际只要判断3个连续点就行)是否呈顺时针排列,不是的话就取消绘制,这样就完成了背向观察者面不显示的功能。我将是否顺时针顺序的判断做成了自定义函数               
   实际上计算也很简单,但过程挺艰辛,吃了数学不好的苦。
               
  1. <p>Function getClockwise(p1, p2, p3) As Boolean</p><p>If (p2(0) - p1(0)) * (p3(1) - p2(1)) - (p2(1) - p1(1)) * (p3(0) - p2(0)) > 0 Then getClockwise = True</p><p>End Function</p>
复制代码

参数p1, p2, p3为3个连续点坐标,格式为(x,y,z),一维数组。


判断背向观察者.png

TA的精华主题

TA的得分主题

发表于 2024-8-19 15:39 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-8-19 15:41 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-8-26 19:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
要是能做成模拟的:集装箱货柜装柜才有实用价值

TA的精华主题

TA的得分主题

发表于 2024-8-27 08:49 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-8-27 09:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
金牌1 发表于 2024-8-26 19:11
要是能做成模拟的:集装箱货柜装柜才有实用价值

这个不是偏应用的,就是尝试实现特定的功能,在过程中扩大知识范围,再通过新的想法去充实功能,再次扩大知识范围。
目前又掌握了获取直线与任意平面的交点坐标,并判断交点是否在多边形内,这样就可以解决多边形的前后遮盖问题,以及任意平面投射阴影。

TA的精华主题

TA的得分主题

发表于 2024-11-23 10:39 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-11-23 13:40 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-12-11 08:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好玩,真心佩服。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-25 15:49 , Processed in 0.048744 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表