求助一个数学问题

本帖最后由 was_denn_los? 于 2012-5-28 11:19 编辑

一个边长为2/3的等边三角形,由四个边长均为1/3的等边三角形组成(编号1,2,3,4)。一任意vector,其模长和角度a已知(见附图),有什么简单的方法(或适合编程的方法,因最终要编程实现)确定vertor v 的终点(箭头处)位于哪个小等边三角形(1,2,3,4)内呢?
****************************************************
问题应该算是解决了,特别感谢14楼和16楼提供的思路,14楼提到的方法很不错,我还查了一下,还有面积法,重心法什么的(我这编程底子浅的就想学习一下编程功底深的都用什么方法去解决这类问题)。16楼提供的思路对本问题应该是最有效的。
我还在研究能不能用14楼提到的叉积法去实现16提到的判断点在线段哪边。
再次谢谢各位参与讨论,提供帮助,提供新思路!
3eck1.png

是不是也可以这么算,
1,计算点“V”到六个顶点的距离
2,对大等边三角形的三个顶点,取离“V”最近的顶 ...
newbear 发表于 2012-5-29 16:03

谢谢你提供的思路。
我查了一下,其实这问题在计算机图形处理技术里是很普通的问题,只是本人编程底子太薄,刚开始不明就里罢了。
经过研究我还是比较偏向通过叉积判断点在线段左侧或右侧的方法,这样最多只要比较3次就可以确定v落在哪个小等边三角形里了(如果再加上角度判断则最多只要2次就行了)
谢谢

TOP

本帖最后由 newbear 于 2012-5-29 16:30 编辑

是不是也可以这么算,
1,计算点“V”到六个顶点的距离
2,对大等边三角形的三个顶点,取离“V”最近的顶点极其对角点(排除另外两个顶点的三角形),做第二次距离比较。就可以判断落点了。

举例来说,对三个大顶点,“V”距离“O”点最近,取“O”点和"B"点,比较到“V”的距离,“V”离“B”近,于是落点在以“B”为顶点的三角形。

简单的理解就是,当“V”到某顶点的距离比到对边三个点的距离都小时,以这个点为顶点的三角形是落点所在的三角形。当“V”到某顶点的距离只比到对边两个端点的距离小,而比到对边中点距离大时,中间的三角形就是落点所在的三角形。

TOP

本来是想说你可以用三个角都是钝角来解这个问题,但是你极坐标建在那边。。。。。。
There are still a few men who love desperately. J.D.Salinger

TOP

可以把问题换算到baryzentrische Koordinaten后再判断。 应该在三角坐标系中会简单不少

TOP

本帖最后由 was_denn_los? 于 2012-5-28 11:09 编辑
直接编个程序 判断落点位于2号三角形三条边的哪一侧 就可以判断出位于那个区了吧
boom 发表于 2012-5-28 08:45
研究了一下,这方法应该是最简单快捷的,谢谢了
只要编几行程序,分别判断点在线段AB,BC,CA的左侧还是右侧就好
再次感谢楼上各位提供不同的思路,谢谢各位帮忙 3eck1.png

TOP

回复 16# boom
听上去就是这样哦,可惜本人编程功底浅,不知道如何下手,得14楼指点才算开窍
如果大侠能详细指点不胜感激!

TOP

直接编个程序 判断落点位于2号三角形三条边的哪一侧 就可以判断出位于那个区了吧

TOP

可以把问题简化成确定一个点是否在三角形内。
    点在内的话,那么一定在各个边的左边(逆时针 ...
sagood 发表于 2012-5-28 02:04

又一个大侠出现
老实讲,我发此贴就是期待这样的答案(请上面提供过帮助的同学不要见怪,实在没有冒犯的意思,只是sagood的思路是在让人眼前一亮,大家一起学习学习哦
再次感谢提供这么好的思路,我再研究一下,希望大侠能继续提供意见帮助!

TOP

本帖最后由 sagood 于 2012-5-28 02:09 编辑
回复  jiejiedog
大侠既然看透了能支一下招吗? 诚心请教。
was_denn_los? 发表于 2012-5-28 01:54



    可以把问题简化成确定一个点是否在三角形内。
    点在内的话,那么一定在各个边的左边(逆时针方向看的话)。
    而判断点是否则一条射线的左边,可以通过向量叉积的正负来判断。。

                                 A
                                 D
                            B        C

      那么 P(A,B,D) >= 0 && P(B,C,D)  >=0 && P(C, A, D) >=0
      P(m, n, p) = (n.x - m.x) * (p.y - m.y) - (p.x - m.x) * (n.y - m.y)

TOP