热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

三维坐标系中的两个相同的三角形,如何旋转其中一个,使其和另一个平行

三维坐标系中任意摆放着的两个相同的三角形,如何旋转其中一个,使其和另一个平行?每个三角形的坐标都是已知量。这基本上是个数学问题,还望有知道算法的大侠指点!
三维坐标系中任意摆放着的两个相同的三角形,如何旋转其中一个,使其和另一个平行?


每个三角形的坐标都是已知量。


这基本上是个数学问题,还望有知道算法的大侠指点!

92 个解决方案

#1


求同一长度的两端点的x坐标的差值,乘以一个角a的cos值等于另一个三角形的同一长度边的两端点的x坐标差值

#2


引用 1 楼 xiuxianshen 的回复:
求同一长度的两端点的x坐标的差值,乘以一个角a的cos值等于另一个三角形的同一长度边的两端点的x坐标差值

这个角"a"是什么呢,a如何在这个x,y,z构成的三维坐标系中表示呢?

#3


补充一下,所谓的平行,是两个三角形相同的边都平行

#4


说的再好理解一下,就是平行后的两个三角形,可以只通过移动,而无需选择合并成一个三角形

#5


要旋转的话首先要确定你旋转的中心轴是什么,轴定下来以后就可以确定不动点,然后根据两三角面的法向量了计算旋转角度

#6


引用 5 楼 wuhuwy 的回复:
要旋转的话首先要确定你旋转的中心轴是什么,轴定下来以后就可以确定不动点,然后根据两三角面的法向量了计算旋转角度

轴是x,y,z坐标轴

#7


用同一长度的两端点的x坐标的差值,乘以一个角a的cos值等于另一个三角形的同一长度边的两端点的x坐标差值

#8


引用 7 楼 yincheng01 的回复:
用同一长度的两端点的x坐标的差值,乘以一个角a的cos值等于另一个三角形的同一长度边的两端点的x坐标差值

二楼的朋友也是用的这种方法,但是我不太明白这种方法怎么在程序中表示。能跟我说一下为什么这么做吗,或者给我相关的资料我自己看也行。多谢啦!

#9


Mark先。

#10


友情支持,三颗心关照,up~up~up~!!

#11


先算出两个三角形的角度差,然后在每个轴上用三角函数进行任意角度旋转的运算。具体函数的定义是:一个点(,,)饶某个轴旋转X度后的坐标。然后对三角形的每个点调用这个函数就行了。还要考虑坐标精度,建议函数写成浮点的
还有个问题,全等还可以是镜像啊,不一定能够完全重合的。

#12


引用 11 楼 zhoujk 的回复:
先算出两个三角形的角度差,然后在每个轴上用三角函数进行任意角度旋转的运算。具体函数的定义是:一个点(,,)饶某个轴旋转X度后的坐标。然后对三角形的每个点调用这个函数就行了。还要考虑坐标精度,建议函数写成浮点的
还有个问题,全等还可以是镜像啊,不一定能够完全重合的。

谢谢ls朋友的热心帮助,不过还是有2个问题想问一下:
1、怎么算3维坐标系下的两个三角形的角度差呢,这个角度差是指相对x、y还是z轴呢,或者还是三角形的某条边呢?
2、“全等还是可以是镜像”,这个“镜像”是什么意思啊?

#13


1.3D的旋转和2D的不一样,先把一个平面上的角度旋转正确了,再从另一个角度旋转,可能会导致原来的平面上的角度有变化。3D的东东没玩过,还真不太知道
2.形状 [_  和  _] 应该是全等吧,但是不能重合哈! 

#14


引用 13 楼 zhoujk 的回复:
1.3D的旋转和2D的不一样,先把一个平面上的角度旋转正确了,再从另一个角度旋转,可能会导致原来的平面上的角度有变化。3D的东东没玩过,还真不太知道
2.形状 [_ 和 _] 应该是全等吧,但是不能重合哈!

谢谢了!还是希望有更容易编程实现的方法出现:)

#15


楼主的旋转,是什么意思,是可以在三维空间里面,可以按照任意方向、以任意点为中心的旋转么?
如果是这样,楼主这样做:
1、是让两个三角形所的面先成平行的两个平面!
2、找到对应的顶点,比如三角形分别是abc与 ABC;其中,aA,bB,cC是互相对应的顶点!
3、以A点为基准点,用平移法,将三角形abc移动到ABC上,A与a重合,记录移动量v.
4、求出ab与AB的角度,旋转一下(如果需要角度的话,这时需要记录)。
5、将三角形abc平移-v

#16


1中,是平面间的旋转
4中,旋转后,两个三角形应该重复!

#17


不懂 路过 来学一下个

#18


该回复于2010-05-07 16:34:37被版主删除

#19


俺脚着得先给顶点进行编号,笨方法如下

1)三角形A为标准,将顺时针给顶点编号,并计算每个顶点所对应的角度。
2)随机取三角形B的一个顶点为起点,顺时针编号,计算每个顶点所对应的角度,如果与三角形A不一致,那么轮换顶点编号,直到两个三角形的顶点编号一致。


然后就是旋转了。

#20


没看见三维,前面发的请无视。

#21


不懂 路过 来学一下个

#22


关注更好的方法。UP```

#23


先让两个的法向量平行
然后再以法向量为轴旋转
过程:...

#24


法向量的算法:两相交向量叉乘
然后就是通过向量夹角构造旋转矩阵1,...

#25


条件欠定,解不唯一。

#26


问题问得不明不白啊,你是直接要最后的坐标还是要一步步先后以某个点或边做旋转达到平行呢?

#27


问题问得不明不白啊,你是直接要最后的坐标还是要一步步先后以某个点或边做旋转达到平行呢?

#28


灌水~~~~~~~~~~~~~~~~~~~~

#29


灌水~~~~~~~~~~~~~~~~~~~~

#30


三角形ABC的法线向量为N1,三角形DEF的法线向量为N2。
N1叉乘N2得到公垂线N3.
然后在求得N1到N2的夹角alpha。
由N3与alpha得到旋转矩阵或者旋转四元数可以使三角形ABC旋转至与DEF平行。
补充:为了计算方便,可以把N1和N2先单位化。
关于求三角形法线向量就不多说了,两个边的向量叉乘即可。
个人愚见,还望有更优算法的达人指正。

#31


引用 3 楼 jiabin_007 的回复:
补充一下,所谓的平行,是两个三角形相同的边都平行

这样的话,根据线性变换的矩阵就是变换后的基向量。
对三角形ABC和三角形DEF建立局部坐标系,使得这2个三角形相同的顶点有相同的坐标值,坐标轴必须是基向量。
计算三角形ABC的局部坐标系的坐标轴在三角形DEF局部坐标系坐标轴的坐标。
由这3个坐标组成的矩阵M就是假设原来三角形ABC与DEF平行到当前三角形ABC的变换矩阵。
所以,求M的逆矩阵即可。
由于M显然是旋转变换,所以M的逆矩阵就是M的转置矩阵。
M的转置矩阵就可以把三角形ABC直接变换到与DEF平行。
个人愚见,还望有更优算法的达人指正。

#32


ddddddddddddddddddd

#33


要证明两个三角形平行,就是证明一个三角形的两条直线与两外一个三角形所在的平面平行。
所以这个问题就转化为分别证明两条直线与一个平面平行皆可。

下面是证明一条直线与一个平面平行的。
直线平行于平面,则直线的方向向量垂直于平面的法向量。 
在空间直角坐标系中,平面的一般式为:Ax+By+Cz+D=0, 
直线的一般方程(两个平面的交线)为: 
A1x+B1y+C1z+D1=0 
A2x+B2y+C2z+D2=0 
可知:平面的法向量为:(A,B,C);直线的方向向量为: 
(A1,B1,C1)X(A2,B2,C2),若直线平行于平面,则两向量垂直 (X表示叉乘) 
若直线为点向式:(x-a)/m=(y-b)/n=(z-c)/p,则直线的方向向量为:(m,p,q) 
例:平面方程为:-x-2y+z+3=0,直线方程为: 
(x-5)/2=(y-3)/3=(z-7)/8,则平面的法向量为: 
(-1,-2,1),直线的方向向量为:(2,3,8) 
因为:(-1,-2,1)*(2,3,8)=-2-6+8=0 
所以两向量垂直,所以直线平行于平面 

#34


要证明两个三角形平行,就是证明一个三角形的两条直线与两外一个三角形所在的平面平行。
所以这个问题就转化为分别证明两条直线与一个平面平行皆可。

下面是证明一条直线与一个平面平行的。
直线平行于平面,则直线的方向向量垂直于平面的法向量。 
在空间直角坐标系中,平面的一般式为:Ax+By+Cz+D=0, 
直线的一般方程(两个平面的交线)为: 
A1x+B1y+C1z+D1=0 
A2x+B2y+C2z+D2=0 
可知:平面的法向量为:(A,B,C);直线的方向向量为: 
(A1,B1,C1)X(A2,B2,C2),若直线平行于平面,则两向量垂直 (X表示叉乘) 
若直线为点向式:(x-a)/m=(y-b)/n=(z-c)/p,则直线的方向向量为:(m,p,q) 
例:平面方程为:-x-2y+z+3=0,直线方程为: 
(x-5)/2=(y-3)/3=(z-7)/8,则平面的法向量为: 
(-1,-2,1),直线的方向向量为:(2,3,8) 
因为:(-1,-2,1)*(2,3,8)=-2-6+8=0 
所以两向量垂直,所以直线平行于平面  

#35


我也来学习了,些许

#36


如果是一样的话
只要算出其中一个对应的点的距离,然后可以算出另外两个点的坐标
比如A三角形坐标(0,0,0),(0,1,1),(0,0,2)
如果B三角形的的一个坐标为(1,0,0)
那么另外两个点的坐标就为(1,1,1),(1,0,2)

#37


1中,是平面间的旋转
4中,旋转后,两个三角形应该重复!

#38


gfhfgh 

#39


还不清楚,

#40


我记得旋转问题都是构造旋转矩阵来解决,不过用矩阵来旋转会造成万向锁的问题,最好用四元数来旋转。

#41


先留个脚印。

#42


不懂,学习学习,呵呵。这个问题有意思。

#43


该回复于2010-12-02 13:04:18被版主删除

#44


一个角的面平等就行了。。

#45


看看。。

#46


当然要先通过数学计算知道计算过程是怎样的才好编程啊。程序中的算法都是在数学公式的基础上的。

#47


想了一下,2维3维都一样的,编好号,然后某点不动,算一下其他两点的新位置。

#48


不懂啊!!!

#49


是不太懂啊!

#50


不懂  不清楚

推荐阅读
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 本文介绍了如何将CIM_DateTime解析为.Net DateTime,并分享了解析过程中可能遇到的问题和解决方法。通过使用DateTime.ParseExact方法和适当的格式字符串,可以成功解析CIM_DateTime字符串。同时还提供了关于WMI和字符串格式的相关信息。 ... [详细]
author-avatar
孝敏敏__216
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有