CN114546555A - 一种基于空间几何的图形拾取方法、装置及介质 - Google Patents
一种基于空间几何的图形拾取方法、装置及介质 Download PDFInfo
- Publication number
- CN114546555A CN114546555A CN202210135837.1A CN202210135837A CN114546555A CN 114546555 A CN114546555 A CN 114546555A CN 202210135837 A CN202210135837 A CN 202210135837A CN 114546555 A CN114546555 A CN 114546555A
- Authority
- CN
- China
- Prior art keywords
- picking
- circle
- frame
- points
- straight line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 98
- 230000000007 visual effect Effects 0.000 claims abstract description 58
- 238000004590 computer program Methods 0.000 claims description 17
- 206010034701 Peroneal nerve palsy Diseases 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000009466 transformation Effects 0.000 description 6
- 238000010998 test method Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 239000003086 colorant Substances 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
Abstract
本发明提供了一种基于空间几何的图形拾取方法,其包括如下步骤:S1,获取输入的任意两个点,并以所述两个点构成拾取框;S2,判断所述拾取框的框选方向,若所述框选方向为从左上角至右下角则执行步骤S3,若所述框选方向为从右下角至左上角则执行步骤S4;S3,如图元是直线段,所述直线段的起点与终点在拾取框构成的视椎体内则所述直线段被拾取;S4,如图元是直线段,拾取框构成的视椎体的6个面至少存在1个面与直线段存在交点,则所述直线段被拾取。本发明根据拾取框的方向不同来执行不同的拾取判断方法;通过世界坐标系中图形几何特征与选框的关系进行拾取,判断方法准确并且仅针对图形本身,不会拾取冗余信息。
Description
技术领域
本发明涉及图形技术领域,具体来说,涉及一种基于空间几何的图形拾取方法、装置及介质。
背景技术
图形拾取是指根据用户使用鼠标等定位设备进行点击操作的位置或者进行框选操作的区域,返回拾取的几何图形的ID等相关信息的过程。根据图形拾取的结果,再进行进一步的交互操作,例如对拾取的图元进行平移、旋转、镜像等操作,因此图形拾取是交互式图形应用的关键技术之一,在CAD软件、游戏、图形用户界面等方面有着广泛应用。
图形拾取方式分为单体拾取和块拾取两种。单体拾取使用鼠标点击选取单个图形对象;而块拾取使用鼠标键按下后拖动形成的矩形框选取位于矩形框内部的图形对象。
现有的三维几何图元拾取方法主要有以下三种:
(1)旧版OpenGL中提供的拾取方法
该方法提供了一种基于名称堆栈和拾取矩阵的拾取方法。主要步骤为:设置名称缓存,进入选择模式,初始化名称堆栈,设置拾取矩阵,进行拾取绘制,返回常规模式,处理命中记录。拾取的原理是利用拾取矩阵修改投影变换,将视椎体限制在以鼠标位置为中心的拾取块内,绘制时,如果图形对象未被完全裁减掉,则根据当前名称堆栈中的名称信息在名称缓存中记录一次命中信息。该方法需要为不同的图形对象设置不同的ID,并在绘制相应对象前更新名称堆栈(进行名称的压入与弹出操作)。
该方法的缺点是:频繁地进行名称堆栈的压入与弹出操作,严重影响拾取的效率;另外对于场景中含有大量几何图元的情况,名称堆栈容易产生溢出;此外,该方法仅能得到拾取到的图形对象ID,得不到命中该对象的具体位置信息。
(2)射线相交测试法
射线相交测试法将鼠标拾取的点从屏幕坐标系逆变换到世界坐标系得到投影点,然后以视点为起点,经投影点构造一条垂直指向屏幕的射线。在世界坐标系下,对这条射线与场景中的各个几何图元进行相交性测试,得到拾取的图元。进行块拾取时,通过多条射线进行相交性测试。
基于射线相交测试法的改进方法主要有以下三种:
屏幕坐标系测试法
原有射线相交测试方法将鼠标位置变换至世界坐标,再进行进一步判断。而该方法将鼠标位置信息和图元顶点坐标变换至规范化设备坐标系,如屏幕坐标系,根据变换后的二维图元与鼠标位置或选择框的关系,得到拾取结果。该方法的缺点是将图元变换至屏幕坐标系时,即三维图元变换为二维图元,丢失了图形信息,容易造成拾取判断失误。并且该方法并未给出复杂图形的判断方法和框选的判断方法。
网格碰撞测试法
该方法在块拾取时通过选框以及相机近平面、远平面得到视椎体,通过包围盒是否在视椎体内部以及网格碰撞体与视椎体的碰撞结果作为拾取的判断方法。该方法主要通过图形的外边界进行判断和拾取,因此不适用于图形的局部拾取。
3、基于离屏渲染的拾取方法
此方法是将图形对象ID等信息编码为颜色,在进行拾取时进行次额外的绘制,将不同对象以不同的颜色绘制到离屏缓存中,绘制完成后根据鼠标位置读取离屏缓存中相应位置像素的颜色值,从而获得拾取到的物体信息。该方法的步骤如下:首先进行初始化,创建离屏缓存对象FBO以及对图形对象ID等信息进行颜色编码;然后在拾取时进行一次额外的绘制,绘制时使用与正常模式一样的变换,保证渲染得到的图像中物体位置与正常模式下一致,但绘制时每个对象使用不同的单一颜色;绘制结束后,从离屏缓存中读取与鼠标位置对应的像素的颜色,对其解码从而获得物体的ID等信息。该方法每次渲染都需要进行一次额外的绘制,须耗费一定时间;再者对象信息编码容量受到离屏缓存位深的限制;此外相对前两种方法,该方法能够获取到的拾取对象信息非常有限,例如只能拾取到位于最前方的对象,而获取不到位于拾取位置后方被遮挡的对象。
本文提供的背景描述用于总体上呈现本公开的上下文的目的。除非本文另外指示,在该章节中描述的资料不是该申请的权利要求的现有技术并且不要通过包括在该章节内来承认其成为现有技术。
发明内容
针对相关技术中的上述技术问题,本发明提出了一种基于空间几何的图形拾取方法,其包括如下步骤:
S1,获取输入的任意两个点,并以所述两个点构成拾取框;
S2,判断所述拾取框的框选方向,若所述框选方向为从左上角至右下角则执行步骤S3,若所述框选方向为从右下角至左上角则执行步骤S4;
S3,如图元是直线段,所述直线段的起点与终点在拾取框构成的视椎体内则所述直线段被拾取;
S4,如图元是直线段,拾取框构成的视椎体的6个面至少存在1个面与直线段存在交点,则所述直线段被拾取。
具体的,步骤S3还包括:
S31,如图元是圆形,根据圆所在平面法向量与圆所在平面与视椎体面的交线的单位向量叉乘得到圆所在平面上与交线垂直的向量H,将圆心至视椎体的距离d除以所述向量H与视椎体面法向量的余弦值α得到沿向量方向的圆心距视椎体面的距离h,通过所述距离h与圆半径r的大小判断圆是否被拾取;
步骤S4还包括:
S41,根据圆所在平面法向量与圆所在平面与视椎体面的交线的单位向量叉乘得到圆所在平面上与交线垂直的向量H,将圆心至视椎体的距离d除以向量H与视椎体面法向量D的余弦值得到沿向量方向的圆心距视椎体面的距离h,根据该距离得到圆心在交线上的垂足;根据圆心与该垂足的距离与圆半径计算得到交线与圆的两个交点P1、P2;通过该交点与相邻两个面的位置判断该点在视椎体内,存在一个视椎体面上的一个交点在视椎体内则认为该圆被拾取。
具体的,步骤S3还包括:
S32,若圆弧所在的圆满足步骤S31的拾取条件,则该圆弧被拾取;
步骤S4还包括:
S42:若圆弧所在的圆满足步骤S41的拾取条件,且圆弧处于包含的那一部分圆,则圆弧被拾取。
具体的,步骤S3还包括:
S33,判断视椎体是否包含文字包围盒的斜对角的两个顶点,如是则文字被拾取;
步骤S4还包括:
S43,文字包围盒是否存在顶点处于视椎体内,如是则文字被拾取。
具体的,步骤S3还包括:
步骤S34,计算多线段的所有端点以及所有端点有线宽时表示线宽的矩形的4个顶点,通过判断这些点是否在视椎体内;
步骤S4还包括:
S44,依次遍历多线段的所有直线段,判断该直线段与视椎体6个面是否有交点;若多线段有线宽,将通过表示线宽的矩形的四条边与视椎体是否有交点进行判断。
具体的,步骤S3还包括:
S35,点通过组表示,组包括点以及圆,判断视椎体是否包含点及圆,如是则点被拾取;
步骤S4还包括:
S45,视椎体包含点或者与圆相交,则点被拾取。
具体的,步骤S3还包括:
S36,视椎体包含面域所有点,则面域被拾取。
步骤S4还包括:
S46,若面域的边界线与视椎体有交点,或者鼠标点击位置与空间中面域的交点,通过交点到各个边界线的垂足的向量与各边方向的叉乘向量,若该向量方向一致,说明该点在面域内,否则该点在面域之外。
第二方面,本发明的另一个实施例公开了一种基于空间几何的图形拾取方法,其包括如下步骤:
S10,获取输入的任意两个点,并以所述两个点构成拾取框;
S20,获取图元;
S30,根据图元的几何特征与拾取框的方向进行拾取判断;
S40,若所述图元被拾取,则将所述图元添加到被选中的对象组中,获取下一个图元;
S50,重复执行步骤S30-S40;
第三方面,本发明的另一个实施例公开了一种基于空间几何的图形拾取装置,其包括如下单元:
拾取框获取单元,用于获取输入的任意两个点,并以所述两个点构成拾取框;
拾取框方向判定单元,用于判断所述拾取框的框选方向,若所述框选方向为从左上角至右下角则执行全部包含判断单元,若所述框选方向为从右下角至左上角则执行部分包含判断单元;
全部包含判断单元,用于如图元是直线段,所述直线段的起点与终点在拾取框构成的视椎体内则所述直线段被拾取;
部分包含判断单元,用于如图元是直线段,拾取框构成的视椎体的6个面至少存在1个面与直线段存在交点,则所述直线段被拾取。
第四方面,本发明的另一个实施例公开了一种非易失性存储介质,所述非易失性存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明首先判断拾取框的方向,并根据拾取框的方向不同来执行不同的拾取判断方法,在拾取框为从左上角至右下角进行框选,则调用图元的全部包含方法判断;若从右下角至左上角进行框选,则调用图元的部分包含方法判断。本发明解决了图形从三维变换至二维信息丢失的问题,通过世界坐标系中图形的几何特征进行判断,不存在判断失误问题。该方法解决了包围盒除了图形本身还存在很多冗余信息,因此会出现选择包围盒内空白区域也会拾取成功的情况。本发明通过世界坐标系中图形几何特征与选框的关系进行拾取,判断方法准确并且仅针对图形本身,不会拾取冗余信息。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供一种基于空间几何的图形拾取方法流程示意图;
图2是本发明实施例提供拾取框方向的示意图;
图3是本发明实施例提供圆心至视椎体六个面距离大于圆半径的示意图;
图4是本发明实施例提供的空间圆与视椎体位置关系示意图;
图5是本发明实施例提供的空间圆与视椎体位置关系示意图;
图6是本发明实施例提供的空间圆与视椎体位置关系示意图;
图7是本发明实施例提供的圆的部分包含方法示意图
图8是本发明实施例提供的一种基于空间几何的图形拾取方法流程示意图;
图9是本发明实施例提供的一种基于空间几何的图形拾取装置的示意图;
图10是本发明实施例提供的一种基于空间几何的图形拾取设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
参考图1,本实施例公开了一种基于空间几何的图形拾取方法,其包括如下步骤:
S1,获取输入的任意两个点,并以所述两个点构成拾取框;
具体的,本实施例的基于空间几何的图形拾取方法可用于图形系统,图形系统具有一个用户界面,可以显示需要进行拾取的图形。本实施例的显示的用户界面可以是在LCD屏幕或者是触摸屏幕上。
在显示在LCD屏幕上时,其输入方式可以是鼠标,本实施例对输入方式不做具体限制。在使用鼠标作为输入方式时,用户使用鼠标点击屏幕上任意两个点,例如可以先点击一个点,并移动到另外一个位置在点击一次,则以点击的两个点作为输入的两个点。
此外,在使用触摸屏幕时,则可以使用触摸的方式来获取任意两个点,其不同仅在于输入的介质不同,例如可以使用触摸笔或者是手指来获取输入的点。
本实施例根据输入的任意两个点,并以所述两个点构成拾取框。具体的,以输入任意两个点为对角构成矩形拾取框。
S2,判断所述拾取框的框选方向,若所述框选方向为从左上角至右下角则执行步骤S3,若所述框选方向为从右下角至左上角则执行步骤S4;
本实施例的拾取框的框选方向为根据输入的两个点的先后顺序进行判断。
具体的,对于输入的两个点其由先后顺序,参考图2,图2(a)用户先点击X1,后点击Y1,则由X1,Y1构成的拾取框的框选方向为从左上角至右下角;图2(b)用户用户先点击X2,后点击Y2,则由X2,Y2构成的拾取框的框选方向为从右下角至左上角。
S3,如图元是直线段,所述直线段的起点与终点在拾取框构成的视椎体内则所述直线段被拾取;
本实施例的步骤S3为直线段的全部包含判断方法。
S4,如图元是直线段,拾取框构成的视椎体的6个面至少存在1个面与直线段存在交点,则所述直线段被拾取。
本实施例的步骤S4为直线段的部分包含判断方法。
具体的步骤S3还包括:
S31,如图元是圆形,根据圆所在平面法向量与圆所在平面与视椎体面的交线的单位向量叉乘得到圆所在平面上与交线垂直的向量H,将圆心至视椎体的距离d除以所述向量H与视椎体面法向量的余弦值α得到沿向量方向的圆心距视椎体面的距离h,通过所述距离h与圆半径r的大小判断圆是否被拾取(参考图4-5);
本实施例的步骤S31为圆的的全部包含判断方法。
若根据圆心至视椎体六个面的距离与圆的半径的大小判断是否包含圆(见图3),则会出现当从空间中另一个角度观察圆时,屏幕上的拾取框已包含圆,但是此时圆心到视椎体面的距离小于实际圆的半径,因此屏幕上并未显示圆已被拾取(见图6),不符合用户需求。该方法与第一种方法相比适用于空间中圆是否被拾取的判断。
步骤S4还包括:
S41,根据圆所在平面法向量与圆所在平面与视椎体面的交线的单位向量叉乘得到圆所在平面上与交线垂直的向量H,将圆心至视椎体的距离d除以向量H与视椎体面法向量D的余弦值得到沿向量方向的圆心距视椎体面的距离h,根据该距离得到圆心在交线上的垂足;根据圆心与该垂足的距离与圆半径计算得到交线与圆的两个交点P1、P2(参考图7);通过该交点与相邻两个面的位置判断该点在视椎体内,存在一个视椎体面上的一个交点在视椎体内则认为该圆被拾取。
具体的,P1点距面1向量与P1点距面2向量方向相反,即P1点位于视椎体内。
本实施例的本实施例的步骤S41为圆的部分包含判断方法。
步骤S3还包括:
S32,若圆弧所在的圆满足步骤S31的拾取条件,则该圆弧被拾取;
本实施例的步骤S32为圆弧的全部包含判断方法。
步骤S4还包括:
S42:若圆弧所在的圆满足步骤S41的拾取条件,且圆弧处于包含的那一部分圆,则圆弧被拾取。
本实施例的步骤S42为圆弧的部分包含判断方法。
本实施例的,圆弧的部分包含方法与圆的部分包含方法相比,增加了判断交线与圆的两个交点是否在圆弧上。
具体的步骤S3还包括:
S33,判断视椎体是否包含文字包围盒的斜对角的两个顶点,如是则文字被拾取。
步骤S4还包括:
S43,文字包围盒是否存在顶点处于视椎体内,如是则文字被拾取。
具体的步骤S3还包括:
步骤S34,计算多线段的所有端点以及所有端点有线宽时表示线宽的矩形的4个顶点,通过判断这些点是否在视椎体内。
步骤S4还包括:
S44,依次遍历多线段的所有直线段,判断该直线段与视椎体6个面是否有交点;若多线段有线宽,将通过表示线宽的矩形的四条边与视椎体是否有交点进行判断。
具体的步骤S3还包括:
S35,点通过组表示,组包括点以及圆,判断视椎体是否包含点及圆,如是则点被拾取;
步骤S4还包括:
S45,视椎体包含点或者与圆相交,则点被拾取。
具体的步骤S3还包括:
S36,视椎体包含面域所有点,则面域被拾取。
步骤S4还包括:
S46,若面域的边界线与视椎体有交点,或者鼠标点击位置与空间中面域的交点,通过交点到各个边界线的垂足的向量与各边方向的叉乘向量,若该向量方向一致,说明该点在面域内,否则该点在面域之外。
本实施例首先判断拾取框的方向,并根据拾取框的方向不同来执行不同的拾取判断方法,在拾取框为从左上角至右下角进行框选,则调用图元的全部包含方法判断;若从右下角至左上角进行框选,则调用图元的部分包含方法判断。本实施例解决了图形从三维变换至二维信息丢失的问题,通过世界坐标系中图形的几何特征进行判断,不存在判断失误问题。该方法解决了包围盒除了图形本身还存在很多冗余信息,因此会出现选择包围盒内空白区域也会拾取成功的情况。本方法通过世界坐标系中图形几何特征与选框的关系进行拾取,判断方法准确并且仅针对图形本身,不会拾取冗余信息。
实施例二
参考图8,图8本实施例公开了一种基于空间几何的图形拾取方法,其包括如下步骤:
S10,获取输入的任意两个点,并以所述两个点构成拾取框;
本实施例根据输入的任意两个点,并以所述两个点构成拾取框。具体的,以输入任意两个点为对角构成矩形拾取框。
S20,获取图元;
本实施例的获取图元对象,为获取当前显示界面内的所有图元,例如当前显示界面内的直线段、圆等图元。本实施例在获取到图元后,可以将图元存储到存储器中。
S30,根据图元的几何特征与拾取框的方向进行拾取判断;
具体的,本实施例中的步骤S30总的拾取框的方向从左上角至右下角或从右下角至左上角,并根据不同的拾取框的方向执行不同的拾取判断方法,本实施例的在拾取框方向为从左上角至右下角进行框选,则调用图元的全部包含方法判断;在拾取框方向为从右下角至左上角进行框选,则调用图元的部分包含方法判断。
具体的,全部包含方法为实施例1中的步骤S3,以及步骤S31-S31的判断方法,部分包含方位为实施例1中的步骤S4以及步骤S42-S46的判断方法,本实施例不在赘述。
具体的,根据图元的几何特征为图元为直线段、圆、圆弧、文字、多线段、点、面域。
其具体是否被拾取,参考实施例1中的步骤S3以及步骤S31-S31、步骤S4以及步骤S42-S46。
S40,若所述图元被拾取,则将所述图元添加到被拾取的对象组中,获取下一个图元;
S50,重复执行步骤S30-S40;
本实施例首先判断拾取框的方向,并根据拾取框的方向不同来执行不同的拾取判断方法,在拾取框为从左上角至右下角进行框选,则调用图元的全部包含方法判断;若从右下角至左上角进行框选,则调用图元的部分包含方法判断。本实施例解决了图形从三维变换至二维信息丢失的问题,通过世界坐标系中图形的几何特征进行判断,不存在判断失误问题。该方法解决了包围盒除了图形本身还存在很多冗余信息,因此会出现选择包围盒内空白区域也会拾取成功的情况。本方法通过世界坐标系中图形几何特征与选框的关系进行拾取,判断方法准确并且仅针对图形本身,不会拾取冗余信息。
实施例三
参考图9,图9是本实施例公开了一种基于空间几何的图形拾取装置,其包括如下单元:
拾取框获取单元,用于获取输入的任意两个点,并以所述两个点构成拾取框;
本实施例根据输入的任意两个点,并以所述两个点构成拾取框。具体的,以输入任意两个点为对角构成矩形拾取框。
拾取框方向判定单元,用于判断所述拾取框的框选方向,若所述框选方向为从左上角至右下角则执行全部包含判断单元,若所述框选方向为从右下角至左上角则执行部分包含判断单元;
本实施例的拾取框的框选方向为根据输入的两个点的先后顺序进行判断。
具体的,对于输入的两个点其由先后顺序,参考图2,图2(a)用户先点击X1,后点击Y1,则由X1,Y1构成的拾取框的框选方向为从左上角至右下角;图2(b)用户先点击X2,后点击Y2,则由X2,Y2构成的拾取框的框选方向为从右下角至左上角。
全部包含判断单元,用于如图元是直线段,所述直线段的起点与终点在拾取框构成的视椎体内则所述直线段被拾取;
部分包含判断单元,用于如图元是直线段,拾取框构成的视椎体的6个面至少存在1个面与直线段存在交点,则所述直线段被拾取。
具体的全部包含判断单元还包括:
第一圆形判断单元,用于如图元是圆形,根据圆所在平面法向量与圆所在平面与视椎体面的交线的单位向量叉乘得到圆所在平面上与交线垂直的向量H,将圆心至视椎体的距离d除以所述向量H与视椎体面法向量的余弦值α得到沿向量方向的圆心距视椎体面的距离h,通过所述距离h与圆半径r的大小判断圆是否被拾取(参考图4);
部分包含判断单元还包括:
第二圆形判断单元,用于根据圆所在平面法向量与圆所在平面与视椎体面的交线的单位向量叉乘得到圆所在平面上与交线垂直的向量H,将圆心至视椎体的距离d除以向量H与视椎体面法向量D的余弦值得到沿向量方向的圆心距视椎体面的距离h,根据该距离得到圆心在交线上的垂足;根据圆心与该垂足的距离与圆半径计算得到交线与圆的两个交点P1、P2(参考图5);通过该交点与相邻两个面的位置判断该点在视椎体内,存在一个视椎体面上的一个交点在视椎体内则认为该圆被拾取。
具体的,P1点距面1向量与P1点距面2向量方向相反,即P1点位于视椎体内。
全部包含判断单元还包括:
第一圆弧判断单元,用于若圆弧所在的圆满足第一圆形判断单元的拾取条件,则该圆弧被拾取;
部分包含判断单元还包括:
第二圆弧判断单元:用于若圆弧所在的圆满足第二圆形判断单元的拾取条件,且圆弧处于包含的那一部分圆,则圆弧被拾取。
本实施例的,圆弧的部分包含方法与圆的部分包含方法相比,增加了判断交线与圆的两个交点是否在圆弧上。
全部包含判断单元还包括:
第一文字判断单元,用于判断视椎体是否包含文字包围盒的斜对角的两个顶点,如是则文字被拾取。
部分包含判断单元还包括:
第二文字判断单元,用于文字包围盒是否存在顶点处于视椎体内,如是则文字被拾取。
全部包含判断单元还包括:
第一多线段判断单元,计算多线段的所有端点以及所有端点有线宽时表示线宽的矩形的4个顶点,通过判断这些点是否在视椎体内。
部分包含判断单元还包括:
第二多线段判断单元,依次遍历多线段的所有直线段,判断该直线段与视椎体6个面是否有交点;若多线段有线宽,将通过表示线宽的矩形的四条边与视椎体是否有交点进行判断。
全部包含判断单元还包括:
第一点判断单元,点通过组表示,组包括点以及圆,判断视椎体是否包含点及圆,如是则点被拾取;
部分包含判断单元还包括:
第二点判断单元,视椎体包含点或者与圆相交,则点被拾取。
全部包含判断单元还包括:
第一面域判断单元,视椎体包含面域所有点,则面域被拾取。
部分包含判断单元还包括:
第二面域判断单元,若面域的边界线与视椎体有交点,或者鼠标点击位置与空间中面域的交点,通过交点到各个边界线的垂足的向量与各边方向的叉乘向量,若该向量方向一致,说明该点在面域内,否则该点在面域之外。
本实施例首先判断拾取框的方向,并根据拾取框的方向不同来执行不同的拾取判断方法,在拾取框为从左上角至右下角进行框选,则调用图元的全部包含方法判断;若从右下角至左上角进行框选,则调用图元的部分包含方法判断。本实施例解决了图形从三维变换至二维信息丢失的问题,通过世界坐标系中图形的几何特征进行判断,不存在判断失误问题。该方法解决了包围盒除了图形本身还存在很多冗余信息,因此会出现选择包围盒内空白区域也会拾取成功的情况。本方法通过世界坐标系中图形几何特征与选框的关系进行拾取,判断方法准确并且仅针对图形本身,不会拾取冗余信息。
实施例四
参考图10,图10是本实施例的一种基于空间几何的图像拾取设备的结构示意图。该实施例的基于空间几何的图像拾取设备20包括处理器21、存储器22以及存储在所述存储器22中并可在所述处理器21上运行的计算机程序。所述处理器21执行所述计算机程序时实现上述方法实施例中的步骤。或者,所述处理器21执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器22中,并由所述处理器21执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述基于空间几何的图像拾取设备20中的执行过程。例如,所述计算机程序可以被分割成实施例二中的各个模块,各模块具体功能请参考上述实施例所述的装置的工作过程,在此不再赘述。
所述基于空间几何的图像拾取设备20可包括,但不仅限于,处理器21、存储器22。本领域技术人员可以理解,所述示意图仅仅是基于空间几何的图像拾取设备20的示例,并不构成对基于空间几何的图像拾取设备20的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述基于空间几何的图像拾取设备20还可以包括输入输出设备、网络接入设备、总线等。
所述处理器21可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器21是所述基于空间几何的图像拾取设备20的控制中心,利用各种接口和线路连接整个基于空间几何的图像拾取设备20的各个部分。
所述存储器22可用于存储所述计算机程序和/或模块,所述处理器21通过运行或执行存储在所述存储器22内的计算机程序和/或模块,以及调用存储在存储器22内的数据,实现所述基于空间几何的图像拾取设备20的各种功能。所述存储器22可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述基于空间几何的图像拾取设备20集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器21执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于空间几何的图形拾取方法,其包括如下步骤:
S1,获取输入的任意两个点,并以所述两个点构成拾取框;
S2,判断所述拾取框的框选方向,若所述框选方向为从左上角至右下角则执行步骤S3,若所述框选方向为从右下角至左上角则执行步骤S4;
S3,如图元是直线段,所述直线段的起点与终点在拾取框构成的视椎体内则所述直线段被拾取;
S4,如图元是直线段,拾取框构成的视椎体的6个面至少存在1个面与直线段存在交点,则所述直线段被拾取。
2.根据权利要求1所述的方法,步骤S3还包括:
S31,如图元是圆形,根据圆所在平面法向量与圆所在平面与视椎体面的交线的单位向量叉乘得到圆所在平面上与交线垂直的向量H,将圆心至视椎体的距离d除以所述向量H与视椎体面法向量的余弦值α得到沿向量方向的圆心距视椎体面的距离h,通过所述距离h与圆半径r的大小判断圆是否被拾取;
步骤S4还包括:
S41,根据圆所在平面法向量与圆所在平面与视椎体面的交线的单位向量叉乘得到圆所在平面上与交线垂直的向量H,将圆心至视椎体的距离d除以向量H与视椎体面法向量D的余弦值得到沿向量方向的圆心距视椎体面的距离h,根据该距离得到圆心在交线上的垂足;根据圆心与该垂足的距离与圆半径计算得到交线与圆的两个交点P1、P2;通过该交点与相邻两个面的位置判断该点在视椎体内,存在一个视椎体面上的一个交点在视椎体内则认为该圆被拾取。
3.根据权利要求1所述的方法,步骤S3还包括:
S32,若圆弧所在的圆满足步骤S31的拾取条件,则该圆弧被拾取;
步骤S4还包括:
S42:若圆弧所在的圆满足步骤S41的拾取条件,且圆弧处于包含的那一部分圆,则圆弧被拾取。
4.根据权利要求1所述的方法,步骤S3还包括:
S33,判断视椎体是否包含文字包围盒的斜对角的两个顶点,如是则文字被拾取;
步骤S4还包括:
S43,文字包围盒是否存在顶点处于视椎体内,如是则文字被拾取。
5.根据权利要求1所述的方法,步骤S3还包括:
步骤S34,计算多线段的所有端点以及所有端点有线宽时表示线宽的矩形的4个顶点,通过判断这些点是否在视椎体内;
步骤S4还包括:
S44,依次遍历多线段的所有直线段,判断该直线段与视椎体6个面是否有交点;若多线段有线宽,将通过表示线宽的矩形的四条边与视椎体是否有交点进行判断。
6.根据权利要求1所述的方法,步骤S3还包括:
S35,点通过组表示,组包括点以及圆,判断视椎体是否包含点及圆,如是则点被拾取;
步骤S4还包括:
S45,视椎体包含点或者与圆相交,则点被拾取。
7.根据权利要求1所述的方法,步骤S3还包括:
S36,视椎体包含面域所有点,则面域被拾取。
步骤S4还包括:
S46,若面域的边界线与视椎体有交点,或者鼠标点击位置与空间中面域的交点,通过交点到各个边界线的垂足的向量与各边方向的叉乘向量,若该向量方向一致,说明该点在面域内,否则该点在面域之外。
8.一种基于空间几何的图形拾取方法,其包括如下步骤:
S10,获取输入的任意两个点,并以所述两个点构成拾取框;
S20,获取图元;
S30,根据图元的几何特征与拾取框的方向进行拾取判断;
S40,若所述图元被拾取,则将所述图元添加到被选中的对象组中,获取下一个图元;
S50,重复执行步骤S30-S40。
9.一种基于空间几何的图形拾取装置,其包括如下单元:
拾取框获取单元,用于获取输入的任意两个点,并以所述两个点构成拾取框;
拾取框方向判定单元,用于判断所述拾取框的框选方向,若所述框选方向为从左上角至右下角则执行全部包含判断单元,若所述框选方向为从右下角至左上角则执行部分包含判断单元;
全部包含判断单元,用于如图元是直线段,所述直线段的起点与终点在拾取框构成的视椎体内则所述直线段被拾取;
部分包含判断单元,用于如图元是直线段,拾取框构成的视椎体的6个面至少存在1个面与直线段存在交点,则所述直线段被拾取。
10.一种非易失性存储介质,所述非易失性存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210135837.1A CN114546555A (zh) | 2022-02-14 | 2022-02-14 | 一种基于空间几何的图形拾取方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210135837.1A CN114546555A (zh) | 2022-02-14 | 2022-02-14 | 一种基于空间几何的图形拾取方法、装置及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114546555A true CN114546555A (zh) | 2022-05-27 |
Family
ID=81675972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210135837.1A Pending CN114546555A (zh) | 2022-02-14 | 2022-02-14 | 一种基于空间几何的图形拾取方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114546555A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102542611A (zh) * | 2010-12-27 | 2012-07-04 | 新奥特(北京)视频技术有限公司 | 一种三维空间物体拾取方法 |
CN102799378A (zh) * | 2012-07-13 | 2012-11-28 | Tcl集团股份有限公司 | 一种立体碰撞检测物体拾取方法及装置 |
CN103473814A (zh) * | 2013-09-23 | 2013-12-25 | 电子科技大学中山学院 | 一种基于gpu的三维几何图元拾取方法 |
CN108227928A (zh) * | 2018-01-10 | 2018-06-29 | 三星电子(中国)研发中心 | 一种虚拟现实场景中的拾取方法和装置 |
-
2022
- 2022-02-14 CN CN202210135837.1A patent/CN114546555A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102542611A (zh) * | 2010-12-27 | 2012-07-04 | 新奥特(北京)视频技术有限公司 | 一种三维空间物体拾取方法 |
CN102799378A (zh) * | 2012-07-13 | 2012-11-28 | Tcl集团股份有限公司 | 一种立体碰撞检测物体拾取方法及装置 |
CN103473814A (zh) * | 2013-09-23 | 2013-12-25 | 电子科技大学中山学院 | 一种基于gpu的三维几何图元拾取方法 |
CN108227928A (zh) * | 2018-01-10 | 2018-06-29 | 三星电子(中国)研发中心 | 一种虚拟现实场景中的拾取方法和装置 |
Non-Patent Citations (2)
Title |
---|
佚名: "CAD中你一定要知道的选择方式", pages 1 - 7, Retrieved from the Internet <URL:https://baijiahao.baidu.com/s?id=1672110673947124924&wfr=spider&for=pc> * |
佚名: "计算几何实践2.2:3D窗口的拾取操作", pages 1 - 7, Retrieved from the Internet <URL:https://blog.csdn.net/cloudqiu/article/details/79371635> * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9842425B2 (en) | System and method for rendering three-dimensional scenes by a computer graphics processor using orthogonal projection | |
CN112581629A (zh) | 增强现实显示方法、装置、电子设备及存储介质 | |
US7742061B2 (en) | Method and related apparatus for image processing | |
US7629972B2 (en) | Image-based protruded displacement mapping method and bi-layered displacement mapping method using the same | |
US11348308B2 (en) | Hybrid frustum traced shadows systems and methods | |
CN103310480B (zh) | 通过使用可置换的剔除程序提高图形性能的方法和装置 | |
JP2005100177A (ja) | 画像処理装置およびその方法 | |
CN109979013B (zh) | 三维人脸贴图方法及终端设备 | |
CN111583381B (zh) | 游戏资源图的渲染方法、装置及电子设备 | |
US7620234B2 (en) | Image processing apparatus and method for generating a three-dimensional model of an object from a collection of images of the object recorded at different viewpoints and segmented using semi-automatic segmentation techniques | |
JP2005100176A (ja) | 画像処理装置およびその方法 | |
CN110853488A (zh) | 一种poi标签显示方法、装置和设备 | |
CN1981306B (zh) | 用于渲染图形的图形管道 | |
US6831642B2 (en) | Method and system for forming an object proxy | |
CN107688426A (zh) | 选中目标物体的方法和装置 | |
CN114546555A (zh) | 一种基于空间几何的图形拾取方法、装置及介质 | |
US7595806B1 (en) | Method and system for implementing level of detail filtering in a cube mapping application | |
US7289117B2 (en) | Process for providing a vector image with removed hidden lines | |
JPH0636013A (ja) | 地形データの作成方法および装置 | |
CN102074004A (zh) | 空间实体遮挡类型的判定方法及装置 | |
CN112837416A (zh) | 基于三角剖分的多边形渲染方法、装置及存储介质 | |
CN111506680B (zh) | 地形数据生成、渲染方法及装置、介质、服务器、终端 | |
CN115494982A (zh) | 一种电子板擦滑动路径平滑方法、装置及介质 | |
CN117132695A (zh) | 三维绘图方法、装置、电子设备及存储介质 | |
JP3745152B2 (ja) | 画像表示装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |