Board logo

标题: [求助] 有没有人知道这个问题的算法? [打印本页]

作者: quakeguobiao    时间: 2007-11-24 21:50     标题: 有没有人知道这个问题的算法?

有没有人知道这个问题的算法?
空间中有4个点,共面,相邻点与点距离一定。现已知3点坐标,已知相邻点的距离,如何求出第四点坐标?
希望能来个高手讨论下,我的数学已经还给学校了,只会写代码了……
前面描述不清,下面补充下。
已知3个postion,就是3个vector,和4个float。4个float是两两间距离,相邻的。

求第四个vector。
另,是个凸四边形。

[ 本帖最后由 quakeguobiao 于 2007-11-24 22:54 编辑 ]
作者: moonworm    时间: 2007-11-24 22:03

"空间中有4个点,共面"能不能直接说平面2字?
圆的交点.
作者: yalpbz    时间: 2007-11-24 22:04

我走到哪里了……
作者: quakeguobiao    时间: 2007-11-24 22:19

我想要方程……
已知的就是x1,y1,z1-到3,和3个float值,想求x4,y4,z4,请高手帮忙。
作者: opeth    时间: 2007-11-24 22:22

四个点,相邻点距离一样,那显然是个菱形,用矢量算最简单。。。。。
作者: quakeguobiao    时间: 2007-11-24 22:23

描述有误,我。距离一定,是指距离是知道的意思。就是知道4个float。向量如何计算?谢谢!不是菱形,是个普通的4边形。
作者: Kuzuryuusen    时间: 2007-11-24 22:28

问题就在“共面”的“面”字上。
如果这是平面,那么不存在第四个点;
如果这是球面,那……那就是个球的内接四面体嘛。
作者: ZZH123    时间: 2007-11-24 22:28

应该是指边长相等的四边形把,想象不出所有相邻点相等图形
作者: opeth    时间: 2007-11-24 22:29

距离知道,那矢量长度就知道了啊,把坐标转换为矢量坐标,一加不就出来了。。。。。
作者: NeoB    时间: 2007-11-24 22:33

lz问题表述的太差了
让人看得一头雾水
用矩阵论里迭代法试试
如果是四点共面,维数是2,条件数是3
方程组就是冗余的了

[ 本帖最后由 NeoB 于 2007-11-24 22:41 编辑 ]
作者: veryend    时间: 2007-11-24 22:34

全把数学还老师了…………

3个点画三个半径相等的圆,交点就是第四个点…………

明显的二维问题,因为同一个面Z坐标必然可写成X,Y的函数表达式…………

初中生都会,LZ高考数学肯定不及格
——————————————————————————
不同也没关系,只要知道的话,改个半径就可以了

[ 本帖最后由 veryend 于 2007-11-24 23:31 编辑 ]
作者: skycn111    时间: 2007-11-24 22:36

LS,LZ的意思是相邻点的距离是不同的,当然,即便如此,还是道基础的几何题,解法应该不少。
P.S. LZ的表述完全不清啊,看来数学确实都还给老师了
作者: opeth    时间: 2007-11-24 22:39

LZ应该这样表述:
同一平面上有ABCD四个点,已知ABC三点坐标,已知AB、BD、AC、CD长度,求D点坐标。。。。。
作者: cc0128    时间: 2007-11-24 22:44

如果在同一个平面。。那怎么可以有第4个点??
作者: Kuzuryuusen    时间: 2007-11-24 22:44

奇怪,平面上应该是不存在第四点啊……
头三点要符合两两距离相等的话就是个等边三角形,然后以边长画三个圆,交点都在三个顶点上嘛
作者: moonworm    时间: 2007-11-24 22:46

lz说不规则四边型? 老师要求用解析几何还是向量?
作者: tlwb    时间: 2007-11-24 22:47

我这是进了什么帖子啊
作者: 藕是张力    时间: 2007-11-24 22:49

共面还求屁的Z4

求X4,Y4用初中的二元二次方程
作者: quakeguobiao    时间: 2007-11-24 22:53

已知3个postion,就是3个vector,和4个float。求第四个vector。
4个float是两两间距离,相邻的。
是个凸四边形。
作者: moonworm    时间: 2007-11-24 22:54

sqrt(square(x1-x2)+square(y1- y2)+square(z1-z2)), 楼主要这个公式吧?
作者: 6533186dc    时间: 2007-11-24 22:54

.....什么玩艺??
作者: xtpl    时间: 2007-11-24 22:59

MB,现在看数学就是让我看天书啊……完全看不懂你们在说什么……

[ 本帖最后由 xtpl 于 2007-11-24 23:00 编辑 ]
作者: NeoB    时间: 2007-11-24 22:59

就是三元二次方程的求解问题
用语言写一般是用迭代法进行逼近
作者: NeoB    时间: 2007-11-24 23:05

楼主去看一下非线性方程组的牛顿迭代法
作者: cuberoot    时间: 2007-11-25 11:53

居然有人初中就会解三元二次方程。。。牛啊~~~

关于迭代的算法,matlab中的solve可以看到源代码。应该是改进型的牛顿迭代法,而且带全部异常处理,非常有参考价值。。。
mathmatics也可以求解,不过我没用过,不知道能不能看源码。。。
作者: 2047    时间: 2007-11-25 13:10

这是什么区?
作者: leonliu    时间: 2007-11-25 14:05

lz数学不行啊
作者: hww7    时间: 2007-11-25 14:45

I suggest that:
//a,b,c,d,e,f,are known,x,y are unknown;
//d={d1,d2,d3,d4}are known;

(a,b),(c,d),(e,f),(x,y)
--------------------------------
sqrt((a-c)^2+(b-d)^2)=>D1

then match D1 with d set

then may delete the same one in d set;
----------------------------------

sqrt((a-e)^2+(b-f)^2)=>D2

then match D2 with d set

then may delete the same one in d set;
--------------------------------------
sqrt((c-e)^2+(d-f)^2)=>D3

then match D3 with d set

then may delete the same one in d set;
---------------------------------------
you can delete 2 elements of d set,
So lets make a assumption D1=d1,D2=d2, then D3 is obvious, (c,d),(e,f) are both two colsest piont to the unknown point.

then use the ur junior high math skill^v^
solve the equations:

sqrt((x-c)^2+(y-d)^2)=d3\
                                       => (x,y)============\
sqrt((x-e)^2+(y-f)^2)=d4/                                      \
or                                                                          \   
sqrt((x-e)^2+(y-f)^2)=d3\                                      /  choose the real one
                                      => (x,y)============/
sqrt((x-c)^2+(y-d)^2)=d4/   



but the question has some ambiguity in the distance of two points.

[ 本帖最后由 hww7 于 2007-11-25 14:49 编辑 ]
作者: 7788    时间: 2007-11-25 21:53

真的是综合讨论区阿
作者: cuberoot    时间: 2007-11-26 09:29

引用:
原帖由 hww7 于 2007-11-25 14:45 发表
I suggest that:
//a,b,c,d,e,f,are known,x,y are unknown;
//d={d1,d2,d3,d4}are known;

(a,b),(c,d),(e,f),(x,y)
--------------------------------
sqrt((a-c)^2+(b-d)^2)=>D1

then match D1 with d  ...
按照你这个思路没必要这么麻烦,可以先求已知三点的所在平面的过原点的法线方程,计算旋转角度,然后旋转坐标系,这样已知三点将位于新的坐标系的x1 o y1平面内,再解二元二次方程组即可,这个方程组两个变量是分离的,容易求解。
作者: qustttt    时间: 2007-11-26 13:30

不懂
作者: shixn    时间: 2007-11-26 13:43

画个图出来.把尺寸标上.

然后三角函数推导,应该不难,就是麻烦一点.....
作者: 道童    时间: 2007-11-26 14:07

有意思啊~~~~很亲切的感觉,高中计算类的码字题
提供另外一个方法,简单说说~~~~~就是用三角函数
A,B,C三点已知求D
先ABD组成三角形,通过三边长度,用余弦定理公式求得AB和AD得夹角余弦值,由余弦很容易就得到了这个夹角的正切值.
直线AB斜率也基本已知(可口算),再和夹角的正切值,通过夹角定理公式,旧可求出AD的斜率(两个解).
通过AD斜率,和A点坐标,AD距离,很容易就得到D点坐标了~~~~~~~~得到两个解,通过C点验证距离,舍掉一个.就是答案

这个比三元二次方程烦琐,但计算起来相对简单初级很多~~~~~`:D
作者: 788414    时间: 2007-11-26 14:20



矩形

圆面

我也还给老师啦
作者: rocktyt    时间: 2007-11-26 17:37

这是游戏区?我




欢迎光临 TGFC Lifestyle (http://club.tgfcer.com/) Powered by Discuz! 6.0.0