数学高手请进!(200分)

  • 主题发起人 主题发起人 thesadfrog
  • 开始时间 开始时间
T

thesadfrog

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个多变形,求:多变形向外扩张一个常数所产生的多变形坐标.
即:产生的新多变形的各个边 与 对应的旧多变形的边 平行
procedure MyCreatePolygon(const sourcePolygon array of TPoint;const distance:integer;var targetPolygon:array of TPoint);
begin

end;
 
如果是凸多边形,很容易解决(换算成极座标即可)。如果是凹的......
 
有一个多变形,求:多变形向外扩张一个常数所产生的多变形坐标.
即:产生的新多变形的各个边 与 对应的旧多变形的边 平行
procedure MyCreatePolygon(const sourcePolygon array of TPoint;const distance:integer;var targetPolygon:array of TPoint);
begin

end;

注:多边形各点坐标次序相连
 
不是太难啊,
以前做过类似的东西,给你个思路,自己写几个有用的函数
1。通过两个点P(x,y)得到平行与他们的线段的两端的点的坐标,距离他们的长度为你的常数
这一共有四个点(根据向内还是向外扩张 只需要其中的两个就行了,如为p1,p2)
2。通过4个点(上面1提到的p1,p2,还有重复1得到的p3,p4)得到线L1(p1,p2)与线L2(p3,p4)的交点p
这个函数形式为Function LpL(p1,p2,p3,p4……):TPoint;
这样就差不多了吧,对你的原来的点的集合进行1,2运算就可以得到以后的结果了,
不明白可以继续问
 
多人接受答案了。
 
后退
顶部