Board logo

标题: 三维作图的发展方向和可方便操作的平层模式 [打印本页]

作者: ataorj    时间: 2013-10-19 16:37     标题: 三维作图的发展方向和可方便操作的平层模式

三维作图的发展方向和可方便操作的平层模式
类似于用于制作游戏应该是三维作图的发展方向,主要会使用艺术模式,这里不讨论."填充"模式一般应该默认为"否".
用户可指定任意一点的一个空间坐标系做(临时观察或成为主)坐标系.一旦用户指定成为主坐标系则原坐标值会转换成该坐标系下的.这是用户认为新原点下的相对数据更方便自己使用的一种基本设想.
上面是闲话,下面进入正题.
三维作图可方便操作的基本模式应该是平层模式.
1 三维作图由各个"完整"物体的图形组成,对于一个三维图形,人们更习惯于在其各平面上分别完成平面图,然后再组装起来.这里称其为平层模式.
2 比如:指定任意三点平面做当前绘图平面后,就进入平层的二维模式.
此时,就应该象GSP一样方便做图.
比如目标是正方体,先做一个正方形,选中它(端点选中与否则结果可能不同),依次选择[图形套用]-以一边长为准升高(指垂直于屏幕,朝向用户)的一个平层做新平层后则套用的图形也被复制,此时[连线对应点],这时刚才选中的端点对应连接.刚才没有选中的端点也会被复制,只是没有进行对应点连线.
这时正方体已经做成了.退出平层模式则这两个平层被释放,新做的正方体图形就与其他图形会面了.平层模式时原有图形都"消失"或静止发灰不被理睬.除非进入平层模式时处于选中状态的.这些被选中的随平层不同而实时动态变化,主要起到定位参考,也可被连线而被绘图.
升高只是平层间一种"变化"关系,其实坐标系的各种平移旋转拉伸缩放等都应该被使用.
---------
可见,三维作图稍微不同于平面作图,主要是坐标系转换环节的参与.以上应该是三维作图的基础思维.
作者: inRm    时间: 2013-10-19 18:44

有意思。
作者: ataorj    时间: 2013-10-19 19:37

平层之间的变化主要为达到一个目标平面上做其真实的"正投影"图形
作者: inRm    时间: 2013-10-20 08:40

3# ataorj

你的观点不容易理解,请举个具体实例
作者: ataorj    时间: 2013-10-20 18:26

1 用户选择若干物件后,可以移动它们,若没有选择联动构件部分也默认认为一起移动,除非用户要求强行分拆.指定任意一点或线为中心就允许从另外一点任意翻转选择的物件等等
2 平面上进行三维作图,必然都是仿真的.如何仿真?这主要是程序作者需要考虑的事情,对于用户来说,严格画出真实图形,才是准确表达出了意图,程序才可能明白无误做进一步的工作.
3 而真实的多面图形只有在各面上画出的其上的图形才是真真实实的和实际"一致".
指出相关端点的坐标无疑也是一种作图方法,这不直观,而且关键是点的坐标值由3个数组成,计算和识别繁琐且容易使人迷糊出错,所以不是主要方法.
任意一个多面图形,用户在平层模式下画完一面上的图形后,需要告诉程序下一面的位置[程序不需要特别关注这个,下面如同用户的普通操作],视用户方便,可指出绝对位置[指相对主坐标系下的],或相对位置,比如相对刚才平面.指出的方法由用户任意表达,直至点击"新平层"表示确定了位置,比如指定三点,或比如a面A点在空间某倾角的线上移动t后,然后再....
点是作图的关键,平层模式适宜产生点,空间模式适宜连接点.容易作图的面上确定了点后,两个面间的点连接,会完成其它困难面的构造.
一个时刻下是平层模式还是空间模式必须明确.另外应该指出:模式还应该有个"定位模式":其下新生的物件在退出"定位模式"后会消失,除非有"留用"属性,原有物体在"定位模式"后会回归原位.除非"续用"或"复用"."续用"则不回归,"复用"即复制.
4 选用哪些平层面作图才方便主要是用户考虑的事情.比如,本来一个立方体削掉8角后6面成为14面,你非要14个面上都去忙活...
5 继续上面例子.立方体各角指定三点后,我们需要一把"刀子"削掉角.这启发我们,可以有更多工具也是空间作图实用的.比如"车床","钻台"等等.我们是否又想到了三维打印机,甚至想到了电脑游戏了呢?
空间作图真是能工巧匠工房啊!不是吗?希望程序员以饱满热情不断完善这美妙的做坊!
作者: ataorj    时间: 2013-10-22 12:40

"你非要14个面上都去忙活",这里的"你"指"用户".
------------------
物件父子属性允许任意修改增删,除非发生矛盾.这也是直接构造的方法.比如A在直线BC上改为在射线BC上.
作者: ataorj    时间: 2013-10-22 20:31

线族和填充色配合更可看出立体效果,更方便于研究图形结构.
作者: ataorj    时间: 2013-10-22 22:25

不应该让线族和填充为互斥关系.
-------------
inRm3D一个错误:
我为了构造一个可自由拖动大小的圆,且为了拖动点不与圆分离,所以让它们处于确定的一个平面上.目标达到了,但是整体选中它们后无法被整体拖动.这个问题是个普遍问题.组装在一固定面上的图形可能都如此.
分析:
1 点可自由,各物件组合也应该自由
2 面限制物件是物件不可自行脱离面之意.物件可在该面上自由移动.
3 物件移动时并非它能改变面位置,所以限制它没有道理.
4 可能的情况是:免费版本有这些限制.可是没见有说明...
作者: ataorj    时间: 2013-10-22 22:54

三维作图象雕刻和车工,做哪个面,就转到哪个面
作者: inRm    时间: 2013-10-22 23:16

这些文字是哪篇论文上的?
作者: ataorj    时间: 2013-10-22 23:23

你感觉太分散,调侃的吧?
我语句能力差.主要是自己的感悟自己的话,没有刻意模仿谁.
作者: ataorj    时间: 2013-10-23 06:10

应该允许"构建固件"或"构建似件"或"构建散件",这都是作图模式,退出相应模式[但是"构建散件"时退出后仍是"构建散件"模式]后,固件的大小和形状固定,似件允许相似性变化.
"构建散件"时因为元件间的相互关系,散件其实可能已经是固件或似件了."构建固件"或"构建似件"适合于对大量散件的相互锁定式的构造.
比如:任意选取空间四点后,依次点击"空间截取","构建似件","构建散件";表示完成了一个似件的构建.刚才四点四面围成范围内的物件组成为似件.该似件与外物有连线的可强行指定为"原状"或"似状"或"固状".
又比如,前面平层模式构建的那个正方体若还是"构建散件"模式下的则并非稳定的正方体,部件拖放旋转等会变形.
------------
希望有人提供一个完整方便的作图层级明晰的全功能菜单列表供大家参考.
作者: inRm    时间: 2013-10-23 08:31

11# ataorj

你误解了。这些文字很好,只是有些名词应该定义一下,比如”拟件“、”散件“、”拟状“、”固状“等。
作者: ataorj    时间: 2013-10-23 09:21

调剂一下.
莫比乌斯环,b=[指定数]/2*E
???:[指定数]为整数;否则,面不能完全对接
???:上面E改为(E-pi/2)时[可能也可直接修改E的启终值],开始时E位于转折处吗.这里规定各面平行于圆面的F'G位置为不同面的转折处.[指定数]=0时是圆柱面.
???:面数=[指定数]+1,即面转折处数量+1,不讨论[指定数]=0

附件: 莫比乌斯环.sgf (2013-10-23 09:21, 6.29 KB) / 下载次数 1899
http://inrm3d.cn/attachment.php?aid=20519&k=cff7d6e8662c9a2f0de0ab20b0986c46&t=1714716866&sid=16b401
作者: 周传高    时间: 2013-10-23 10:15

什么字体呢,怎么有问号?
作者: ataorj    时间: 2013-10-23 10:36

居然没发现两位版主都有回复,我会补充说明不明确部分,不过,有些概念我考虑不一定明晰周到.
???表示我没有认真思考,不能确定.
作者: ataorj    时间: 2013-10-23 12:49

前面说当前inRm3D在一指定平面上的组合物件无法被整体拖动,好像平面是父件,不能拖动它一般.其实,平面仅只对它上面的物件点有一个限制:别企图自行离开我.则其上的任何点,在整个平面内都是自由的.其它限制是点之间的约定限制,不是平面做出的.比如,规定一点为原点,然后规定某点只能在与原点固定距离上自由.
拖动一点,可以连同其所在平面一起移动.除非平面本身受限.这个还需要多做思考,暂时放弃之.
----------
是"似件","似状",不是"拟件""拟状".
固件是相互角度固定距离固定的元件集合.
似件是相互角度固定距离可等比例变化的元件集合.是可变化为相似件的意思.
固状,似状,散状是对构建固件似件时对于相关联外件[可以分组]的关系约定的选项.相当于构造的延伸处理.状其实是"关系"的意思.
作者: ataorj    时间: 2013-10-23 13:06

另外,附一个可拖动而改变大小的圆.E或F
注意:F"不在"圆上,否则失败.
虽然,事实上在上面.

附件: 可拖动而改变大小的圆.sgf (2013-10-23 13:06, 3.79 KB) / 下载次数 2077
http://inrm3d.cn/attachment.php?aid=20520&k=f8453bcabcaf0a792348dbafae92ceb0&t=1714716866&sid=16b401
作者: inRm    时间: 2013-10-23 13:31

“事实上在上面”——不对,事实就是不在圆上。
“否则失败”是何意思?
作者: ataorj    时间: 2013-10-23 14:34

我做时认为E,F都在平面ABC上,E是圆心,以线段EF的长度为半径做的圆.
选中圆和F,我本来想合并,它居然分离开了...
也许我错了
我先前做过的是z值都取0
等我下面重新做下....
作者: ataorj    时间: 2013-10-23 15:12

做好了,注意观察:A,B,C的z值总是0.
拖动A或B而可改变圆的大小.
B只有子件线段AB,没有父件.
选中圆和B,"合并/分离",居然把C分离开了圆.
看B父子仍然不变.
再试验一次,结果不变.
C明明脱离了圆,可看圆子依然是C!
----------
删除圆,C也消失了.
----------
F"不在"圆上,否则失败.是说:
F合并到圆上后,F无法拖动圆.
现在我重现失败,原来操作也许有误.
---------
另外,十分冒昧,我不清楚软件有无这个错误:
把圆脱离平面...

附件: 可拖动而改变大小的圆1.sgf (2013-10-23 15:12, 2.27 KB) / 下载次数 2021
http://inrm3d.cn/attachment.php?aid=20521&k=abc4b96c0184577b604b89727dd69181&t=1714716866&sid=16b401
作者: ataorj    时间: 2013-10-23 15:27

重新检验了下上面两个帖子这两次文件,都正确无误,圆和线段处于同一个平面上.
第一个文件如果你发现不是这样,那么就可能是软件有无这个错误:
把圆脱离平面...
作者: ataorj    时间: 2013-10-23 15:43

所以,事实上线段一个端点是圆心,一个在圆上.
第一个文件圆属性,半径直接点击线段后,线段那个端点仍然不能成为圆的子件
作者: ataorj    时间: 2013-10-23 16:33

更正:"固定"成"相同",含义有差别
"仍然不能成为圆的子件"改为:仍然无法成为圆的子件.比如,再合并也不行
作者: inRm    时间: 2013-10-23 23:15

点C受圆的约束,是圆的子件。点B是圆的祖宗对象(不是父对象),怎么可以合并到圆上而成为圆的子对象呢?
“把圆脱离平面”,圆的父对象是圆心和法线,只当圆心脱离平面,圆也就跟着脱离平面了。
作者: inRm    时间: 2013-10-23 23:31

21# ataorj

附例中的点A点B都是自由点,无需线段,也无需度量AB之距离,直接用点B作半径即可。如此,点A点B都成为圆的父对象,就可以拖移圆了。
作者: inRm    时间: 2013-10-23 23:48

这个例子的制作,该如何运用“平层”概念呢:

图片附件: 三叉树.jpg (2013-10-23 23:48, 26.42 KB) / 下载次数 2030
http://inrm3d.cn/attachment.php?aid=20522&k=5ed20cb53b90d3c333a68b7b1018128f&t=1714716866&sid=16b401



附件: 三叉树.sgf (2013-10-23 23:48, 3.18 KB) / 下载次数 2311
http://inrm3d.cn/attachment.php?aid=20523&k=676c271f98682475e6fbf685f890a82c&t=1714716866&sid=16b401
作者: ataorj    时间: 2013-10-24 06:58

当前inRm提供的直线和射线,用户不太满意
如果我是作者,求出线段与绘图窗口边界的交点,连接交点可得到直线.射线是使用了一个交点而已.
下面用inRm模拟直线.
首先按键Z,L,锁定xy平面
1 窗口边界构造路径ABCDA[注意,返回A时操作方法:先左击表示选中,再右击表示结束]
2 构造两点线EF
3 构造交点H,H1:点击线段EF和路径
4 隐藏线段EF,注意保留E和F
5 构造两点线HH1
现在,可用E和F控制HH1了

附件: 直线.sgf (2013-10-24 06:58, 3.68 KB) / 下载次数 2166
http://inrm3d.cn/attachment.php?aid=20524&k=b8e2e292dadd75e5b002ba37c9680442&t=1714716866&sid=16b401
作者: ataorj    时间: 2013-10-24 07:08

编程的话,补充:窗口边界坐标不同于其它坐标,具体处理方法,我没多想.
又比如:直线和屏幕垂直时的构造方法...
作者: ataorj    时间: 2013-10-24 21:11

25# inRm
点C受圆的约束,是圆的子件。点B是圆的祖宗对象(不是父对象),怎么可以合并到圆上而成为圆的子对象呢?
“把圆脱离平面”,圆的父对象是圆心和法线,只当圆心脱离平面,圆也就跟着脱离平面了。
-----------------
无血缘关系就无谓祖宗,可以合并,GSP如此.
指定的平面,它就自行脱离了?用户都不知道自己有这意图啊!指定平面就指定父亲了.
法线只是方向,圆心才是根基,圆可以不在指定平面上,但是圆心若在,圆也逃不远.更何况例子圆心先选择了平面,这时选择的法线要求圆也在该平面上.
==============
26# inRm
附例中的点A点B都是自由点,无需线段,也无需度量AB之距离,直接用点B作半径即可。如此,点A点B都成为圆的父对象,就可以拖移圆了。
------------
法线,法线点游"离"于圆外,原意要求圆上可拖动它的大小.
===========
26# inRm
三叉树的例子还没看懂,就是几何画板我也是新手.平层只是一种模式,可能只适合静态构建物件.
作者: inRm    时间: 2013-10-24 21:29

“无血缘关系就无谓祖宗,可以合并,GSP如此.” “就是几何画板我也是新手”。
可以理解你对inRm3D的疑惑。

以gsp为例:1)作三个自由点A,B,C;2)作线段AB;3)以点C为圆心线段AB为半径作圆。
此时,圆的父对象是线段AB和点C,点A和点B是祖宗却不是父对象。你把点A合并到圆上试试?
作者: ataorj    时间: 2013-10-24 21:29

另外,<<GSP漏洞还是错误:两圆3种公切圆,这3个切点不显示为交点>>中我提出了一种"分身术",这是不合常规的,特事特办,软件允许也真能那样设计.
作者: ataorj    时间: 2013-10-24 23:29

此时,圆的父对象是线段AB和点C,点A和点B是祖宗却不是父对象。你把点A合并到圆上试试?
============
线段AB在软件可能规定不包括A和B
但是,别忘了,B是线段AB的父,你删除B看看?
明显B是C的爷,有血缘关系,你怎么认为是我理解有误?血缘关系只是父子,不包括祖宗?
我原话意思是客气说法,意思是说,无血缘关系就无须要扯"祖宗"
年龄大不表示辈分大.年龄大有什么关系?早生一秒的脑袋就大吗?作图上毫无关系.
============
另外,本主题下,你的回复好像总是遮遮掩掩才冒出来,好像总隐藏不定长时间才显示.这个,我不记得网上见过有这样.反正我感觉这个地很不好...
作者: ataorj    时间: 2013-10-24 23:43

呵呵,有趣.
A和圆心合并后,B在圆上.
作者: inRm    时间: 2013-10-25 09:39

此时,圆的父对象是线段AB和点C,点A和点B是祖宗却不是父对象。你把点A合并到圆上试试?
============
线段AB在软件可能规定不包括A和B
但是,别忘了,B是线段AB的父,你删除B看看?
明显B是C的爷,有血缘关系,你怎么 ...
ataorj 发表于 2013-10-24 23:29
恕余欠聪,还是没理解你的意思。
是否这个意思:因为线段AB是不包含端点A和B的,所以点A点B仍是自由的,所以应该能合并到圆上?
作者: inRm    时间: 2013-10-25 09:50

另外,本主题下,你的回复好像总是遮遮掩掩才冒出来,好像总隐藏不定长时间才显示.这个,我不记得网上见过有这样.反正我感觉这个地很不好...
ataorj 发表于 2013-10-24 23:29
"遮遮掩掩"、“隐藏不定长时间才显示”,不明白
作者: ataorj    时间: 2013-11-1 01:16

抱歉,我语无伦次而已.不说了.




欢迎光临 inRm3D: 画板论坛 (http://inrm3d.cn/) Powered by Discuz! 7.0.0