请教一个数学算法问题。(急)

love_c 2001-08-02 02:32:18
设有一凸N边型(n>=10)各顶点的位置已知,点P在N边型内部,点S在N边型外部,这两点的位置都已知,用线段连接点S和点P,线段SP和N边型相交于D点,求从P点到D点的距离。
主要的问题就是怎么求D点的位置。
...全文
95 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
valhalla 2001-08-03
这样计算量比较小
回复
valhalla 2001-08-03
求PD长度不一定要知道D的位置呀?
知道P和S坐标,可以以P旋转坐标系,使PS线水平,不妨使S在P的右面,同时得到相应的N边形各个顶点坐标.然后可以以P为0点,平移坐标系,得到S坐标为(Ys,0),和N个顶点座标(x,y).所以N个顶点可以以PS线分成上下两部分(y>0 or y<0),这两部分顶点中个自最右面的点(x max),之间的连线就是相交PS的边,而且和x轴的交点就是D,D的X坐标值就是PD。
当然,交点为顶点的情况还要考虑到。
坐标的旋转都可以用整数计算,最后除个因子就可以了。
回复
starfish 2001-08-03
我想知道,这个问题究竟难在什么地方呀,求线段交点的方法你不会不知道吧?
回复
goldcattle 2001-08-02
我个人觉得
你既然已经给出了,各点的坐标位子已经求出了,那么利用原来的坐标系,确定多边形各条边所在坐标系的范围,tg得值可得,
**********
* *
* P* ------* D---------S
* *
* *
*******
把各顶点的坐标存放在数组里面A[n][2],s点为s[2],p为p[2]
计算各点的tg值,记着保存,然后计算,tg ps 看他在那个范围,就知道他跟那根现相交
这几步编程很容易实现
然后我就觉得是老办法求两直线的交点,这个公式忘了好像高中课本上有过
你自己退一下不难
即一直四个点a b p s,
ab确定了一个方程
ps也读却定了一个方程
两个方程两个未知数会把那你把他写成公式,那编程就行了

回复
xzou 2001-08-02
可以求一条边所在直线与直线PN的交点,然后判断交点在不在边上和线段PN上,在的话就是交点了。不在的话继续求下一条边所在直线与直线PN的交点......
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2001-08-02 02:32
社区公告
暂无公告