Chinaunix首页 | 论坛 | 博客
  • 博客访问: 315082
  • 博文数量: 46
  • 博客积分: 1517
  • 博客等级: 上尉
  • 技术积分: 530
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-31 18:21
文章分类

全部博文(46)

文章存档

2012年(1)

2011年(1)

2010年(3)

2009年(2)

2008年(25)

2007年(13)

2006年(1)

我的朋友

分类: C/C++

2008-04-10 17:10:11

最近在用win32编写一个画图板程序,要求实现对图形的选择,其中图形包括椭圆(标准椭圆,就是长轴或短轴都是水平或者垂直的)。
当鼠标左键点击时,要判断点击点 是否在椭圆上是比较困难的(像素比较小,点击点可能离椭圆有一个像素的距离),所以要改为判断点距椭圆边框的距离小于某个值(我是用的是5,用眼睛瞪着屏幕看看5个像素是多长)
这就要求点到椭圆的最短距离了,N年没这些几何图形了,一点概念都没有了(没到啥地步?就是求点到直线距离公式也花了我半个多小时时间,相当年我做题....).
不过在我实现鼠标选择矩形时,灵感来了,这里的矩形,边都是水平或者垂直的,因此判断 点 到矩形距离小于某个5像素,直接进行简单的加减和比较就能实现。示意图如下,只要判断点落在黄色区域就行了。


那么椭圆能不能这么判断呢,当然可以了,看了下图,就明白了,

只要判断点在那两个椭圆之间就可以了,至于判断点在椭圆内外,就是带入公式(椭圆标准方程)和1比较就可以了(<1在椭圆内,>1在椭圆外)
阅读(2821) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~