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

love_c 2001-08-02 02:32:18
设有一凸N边型(n>=10)各顶点的位置已知,点P在N边型内部,点S在N边型外部,这两点的位置都已知,用线段连接点S和点P,线段SP和N边型相交于D点,求从P点到D点的距离。
主要的问题就是怎么求D点的位置。
...全文
164 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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的交点......

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧