求助一个数学问题

本帖最后由 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
Share |
Share

有意思。。抛砖引玉吧,我猜用中学的线性规划?

先把终点坐标确定,然后把坐标代入所有边的直线方程。。看点究竟处在边的上边还是下边(左边或者右边)

TOP

本帖最后由 爱满人间 于 2012-5-28 00:55 编辑

对于固定的模长v,落在三角形2中的情况的alpha的允许范围是可以轻易表达出来的(alpha(v)的函数表达出来),如果alpha落在这个区域里那自然就满足条件了。
你把原点和234三个三角形的那个交点(右上那个点)链接起来不难得到一个等式:
cos(alpha/2)*v+sin(alpha/2)*v*(3^0.5)=1/(3^0.5)
你可以用万能公式也可以用和差化积也可以直接合并起来,对付这东西的办法非常多,当然程序更容易实现
然后发挥你的编程才能把~这东西还是非常简单的。。。
There are still a few men who love desperately. J.D.Salinger

TOP

具体一下,
1.先比较大三角形的左腰、右腰和x轴,看看点究竟落不落在大三角形区域内(若题设已经说明点一定落在这个区域,则此步省略。。)
2.比较三角形2上侧水平边,在上侧则落在三角形4内,下侧则继续判断
3.同2,比较三角形1右腰。。
4.同2、3,比较三角形3左腰。。

我的想法。。不知道是不是露怯了,,抛砖引玉抛砖引玉。。

TOP

3楼,碉堡了。。

TOP

回复 3# 爱满人间
谢谢你的回复。
这种方法我考虑过,也考虑过通过v*cos(a)和v*sin(a)来确定v的位置,但老感觉有点复杂(我编程就半桶水:) ,而且这部分也只是我程序的一小部分,所以想尽可能简单点)

TOP

没有任何计算的猜想...是不是比较下到各个顶点的距离之和就可以判断是在哪个三角形里?
BYR!

TOP

回复 4# 朴实无华
谢谢回复,这跟我通过v*cos(a)和v*sin(a)来确定v的位置想法基本一致,步骤1可省略,2比较容易,就是觉得2,3有点麻烦(可能受限于本人拙 劣的编程水平吧

TOP

回复 7# Darkpriest
这个听上去好哦!!好像比较容易实现!我再想一下,先谢谢了!!!

TOP

回复 8# was_denn_los?

每步一个if语句就能解决了。。

TOP