C++实现不规则封闭曲线绘制、面积、长短轴计算方案总结(二)

在总结(一)

C++实现不规则封闭曲线绘制、面积、长短轴计算方案总结(一)_Calarence的博客-CSDN博客

的基础上进行了测试,发现实现功能所存在的问题:

1.点靠近进行交换时无法生效:分析其原因,在一定角度下靠近,会优先使得被靠近点处于夹角范围内,从而被靠近点被淹没。所以没有办法进行交换。

2.移动曲线是为了面积测量,所以操作上要更加灵活,当拖动某一点移动时,移动远离或者靠近封闭曲线中心点时,应该自动淹没位于一定范围下的离散采样点,当移动离开被淹没点时,应该恢复被淹没的点,但若确定淹没某点,如弹起鼠标时,即为淹没生效。

实现过程:

1.采样点集A,Ai为移动点,随着按住鼠标移动而实时变化,当Ai靠近Aj(i!=j),且处于和中心点一定的角度a时,则判定为将其淹没,并将Aj标记为unUsed,若弹起鼠标,则淹没生效;若不弹起鼠标,继续移动,当Ai远离Aj,且超过和中心点一定的角度b后,则判定为将其露出水面,Aj标记为used。

2.在弹起鼠标后重新对采样点集A进行顺时针或者逆时针排序,然后根据总结(一)获得拟合曲线。其中采集点A排序采用夹角(0-360)的基准,实现可简单描述为:依据中心点建立坐标系,换算得到A的向量VA,以V(1,0)为基准向量,计算VA和V的夹角(根据点所处的象限)求取得到360度以内的夹角值,并排序得到对应的采样点集AA。

3.小问题汇总:

3.1 增加点时,点符合在曲线上的条件,则将曲线上的点加入到采样点集中,以避免增加点不在曲线上的问题。

3.2 增加点拖动时,先选中后点击演变成双击时间,使得应用时直接确定了结果,需要在双击事件中判断为重复点击,以避免演变成双击事件。

3.3 采样点经过B样条拟合得到的点集在一定的曲线形态下,会出现采样点和拟合点没有连接的情况,在绘制曲线时需要将收尾进行手动连接绘制。

遗留问题:

1.AA所产生的封闭曲线在增加点时,其他点间的曲线会有所变动。

2.产生的曲线在 一定的采样点拖动时,存在两点的曲线打结的现象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值