返回列表 回复 发帖

细说三维作图及其当前瓶颈和根本解决方法

细说三维作图及其当前瓶颈和根本解决方法
------
写在前面
文件较长时建议大家都打包成附件,这样可节省版面和流量,重复打开页面时不用显示已经阅读过的内容了.也免除别人重复整理保存.好处大大地.
--
大家都在网海里扑腾了许多年,有几个是因为隐藏知识发了大财?最终活了百八十岁,没能提供出来共享而要带进坟墓是何故?
一般地,只要不能明显看出近期有利益关系的都应该可以共享.
当然了,影响人们发言的因素很多,我也关注学术环境,此后真应该去认真思考这个了...
====
附件中含有我创作的3d坐标系.

i-3d.rar (14.08 KB)

3D绘图器更新,顶点朝向调试结束,增加色彩说明,增加用单位线粗细也能表示三轴朝向屏幕内外状态.

3D绘图器.rar (5.92 KB)

已知一平面三点坐标为(a1,a2,a3),(b1,b2,b3),(c1,c2,c3),求平面方程,形式:dx+ey+fz=0
求原点到平面垂足的线段m的长度公式,垂足坐标公式
求m和三轴的夹角余弦(方向余弦?,最好图形注明具体角)公式
据说矩阵行列式等运算可以化简,所以最好是化简好的.
内容很多,先谢谢!
=========
有了平面方程,已知两个坐标值,求出第三个坐标值就可以实现gsp转换.
其它公式对作图作用不是很大,用于设法控制转角以观察效果等等.
当然,如果可以转到指定平面,则可能可以通过几何方法而免除复杂计算而得到平面方程...
更正:平面方程
A(x-x0)+B(y-y0)+C(z-z0)=0
或Ax+By+Cz+D=0
A(x-x0)+B(y-y0)+C(z-z0)=0
过三点的平面方程
Ax+By+Cz+D=0
(a1,a2,a3),(b1,b2,b3),(c1,c2,c3)
令D=1,
Solve[{A*a1+B*a2+C*a3+1==0,
A*b1+B*b2+C*b3+1==0,
A*c1+B*c2+C*c3+1==0},{A,B,C}]

A=-((-(a3*b2)+a2*b3+a3*c2-b3*c2-a2*c3+
b2*c3)/(-(a3*b2*c1)+a2*b3*c1+a3*b1*c2-
a1*b3*c2-a2*b1*c3+a1*b2*c3))
B=-((-(a3*b1)+a1*b3+a3*c1-b3*c1-a1*c3+
b1*c3)/(a3*b2*c1-a2*b3*c1-a3*b1*c2+a1*b3*c2+
a2*b1*c3-a1*b2*c3))
C=-((a2*b1-a1*b2-a2*c1+b2*c1+a1*c2-b1*c2)/
(a3*b2*c1-a2*b3*c1-a3*b1*c2+a1*b3*c2+
a2*b1*c3-a1*b2*c3))
你是说表示形式吧?
我寻找gsp可接受的格式啊,
公式复杂,gsp计算不接受粘贴,现在只能手工输入了...
公式先放一边了,因为想做空间坐标度量,需要做平行线,需要缩放操作,这使我对底层又不满意了,因为对x和y轴0长度投影时不放心,我现在在找象我的z轴一般投影永远是直线[单位线除外].
===========
论坛强手如林,我做的都是小儿科,我自己能有一些起码的流畅应用就行了.比如下面这个就还没有思路:
如何旋转空间坐标系,使得给定三点的面的法向量垂直于屏幕
---------
我学历低,行列式仅仅曾经知道一点规则,很生手.
因对教材的严密性系统性不满意,我是高中退学的,自学能力强,当时最适合我的是图书馆环境.我有若干个人思想想要发展.
下面文件里也有一点自我介绍.
----
最好的语言:知集语
http://agufana.blog.163.com/blog/static/7200259201021405024455/
是啊,有看法吗?
错误声明:
1,z轴的方向和单位长度由单位点的投影表现,投影点明显就是翻滚角的正弦值.
应是"正弦值的相反数",暂时不更新绘图器了.
2,前面计算平面方程系数的方法是错误的.不可以任意指定D值.计算出非0的D值后方程可以除以D而已.
我暂时并没有应用它.
3,这些算是普通错误,是我而非别人发现的,可见真正感兴趣的人不多.
错误分析,1只是瑕疵
2错在没考虑过原点时的平面,解决办法:
法向量不允许使用0向量,我们任意指定A,B,C中一个为1即可[这也许算是原创方法].
过三个不同点的平面方程
Ax+By+Cz+D=0
(a1,a2,a3),(b1,b2,b3),(c1,c2,c3)
令C=1,
Solve[{A*a1+B*a2+a3+D==0,
A*b1+B*b2+b3+D==0,
A*c1+B*c2+c3+D==0},{A,B,D}]
令M=(a1*(c2-b2)+b1*(a2-c2)+c1*(b2-a2))

A=(a2*(c3-b3)+b2*(a3-c3)+c2*(b3-a3))/M
B=(a3*(c1-b1)+b3*(a1-c1)+c3*(b1-a1))/M
D=(a1*(b2*c3-b3*c2)+a2*(b3*c1-b1*c3)+a3*(b1*c2-b2*c1))/M
返回列表