ysq101 发表于 2014-12-28 20:29:08

llsheng_73 发表于 2014-12-26 15:01 static/image/common/back.gif
一个最简单的办法是如果中间那个点不在生成出来的ARC上,说明三个点的顺序需要反过来也就是起止角要反过来 ...

一个最简单的办法是如果中间那个点不在生成出来的ARC上,
这句是重点啊~~~~~~~~

我又想到一个办法了。。说说看对不对
因为ARC的中点我们是可以确定的。。所以这点不需要IF
我们只需要IF起点和中点
我的笨办法是用3点作3角形再IF新生成的ARC中点是否在3角形的线上

另外我看了一下帮助   好像有个VL系列有个函数是可以IF 点是否在对曲线上的
烦请指点一下

llsheng_73 发表于 2014-12-28 20:37:34

ysq101 发表于 2014-12-28 20:29 static/image/common/back.gif
一个最简单的办法是如果中间那个点不在生成出来的ARC上,
这句是重点啊~~~~~~~~



VL系列有个函数是可以IF 点是否在对曲线上办法很多,比如(vlax-curve-getdistatpoint obj pt)和(vlax-curve-getparamatpoint obj pt)如果pt不在obj上都会返回NIL直接根据这个返回结果是可以确实点是否在线上

但话说回来,真要根据前边我所说“最简单”而先生成ARC,经过判断后再决定要不要删掉重新画,从效率上说不如先进行判断后一次性处理来得直接。。。。前边的3Parc是可能直接利用的。。。。它的道理也难不到你不是

ysq101 发表于 2014-12-29 19:36:10

llsheng_73 发表于 2014-12-28 20:37 static/image/common/back.gif
VL系列有个函数是可以IF 点是否在对曲线上办法很多,比如(vlax-curve-getdistatpoint obj pt)和(vlax-cur ...

谢谢你的耐心指点
如果不经过时先生成ARC图元,凭我的水平还真难到我了
因为我从来没有写过关于多线段(或点表)顺逆时针的IF子程序

llsheng_73 发表于 2014-12-30 13:20:21

本帖最后由 llsheng_73 于 2014-12-30 13:32 编辑

ysq101 发表于 2014-12-29 19:36 static/image/common/back.gif
谢谢你的耐心指点
如果不经过时先生成ARC图元,凭我的水平还真难到我了
因为我从来没有写过关于多线段( ...
20楼的代码已经解决了你觉得的难点,第一个PLDIR是根据论坛众多高手的帖子写出来的,它可以判定一个点表所给定的坐标是顺时针方向还是逆时针方向,3Parc同样根据众多高手的一引起相关帖子写出来的,它计算三点所在圆的圆心,如果三点共直线,将返回nil
3Parc首先判定3点是否共直线,如果不是,则根据其方向决定用哪一个点与圆心计算起始角和终止角
你只需要把要处理的线的起点,中点,止点分别传递给p1,p2,p3,它就能直接给你绘制出你所需要的ARC
就算你把P1和P3给反了,它所绘制出来的ARC一定是P1,P2,P3都在ARC上。。。
也就是说(3parc p1 p2 p3)和(3parc p3 p2 p1)所绘制的ARC是完全一样的。。。那么还需要处理什么?

ysq101 发表于 2014-12-30 17:32:08

llsheng_73 发表于 2014-12-30 13:20 static/image/common/back.gif
20楼的代码已经解决了你觉得的难点,第一个PLDIR是根据论坛众多高手的帖子写出来的,它可以判定一个点表所 ...

汗。。。一言惊醒梦中人啊~~~~~~~
对不起了。。我没有细读你给出的源码
刚测试了一下   只要不把p2搞错
这段程序完全可以   代替了command arc了。。
速度极高啊。。。
再次谢谢老师指点
页: 1 2 [3]
查看完整版本: 程序卡壳了。。求思路。。高手指点一二