葡京在线开户认清两漫漫轨道是否重合的思路(存储过程描述)

这是2003年宣告之一个Web3D作品。

文章版权由作者李晓晖同博客园共有,若转载请为大庭广众处于标明出处:http://www.cnblogs.com/naaoveGIS/。

页面及让出之介绍:

1.背景

要来零星久轨道,一长达是预约轨道,一长长的凡实在轨迹,分别吗L1、L2。L1由点(A1、A2、A3、…、AN)组成,L2由(B1、B2、B3、…、BM)组成。现在让出了一个容差范围,即L2上之点能与L1这漫漫预定路线的垂直容差范围Range,求L2达标满足要求的实际点。

这需求我们其实得分成两栽状态来考虑,一种植是这个需要就的只有是求得到同L1能发肯定匹配度的接触。但是,如果我们深入剖析,会发现L1作为同一长长的线,其自是发方向性的,如果我们还以丝之方向性考虑进去,即L2的触及不仅要当与L1的Range范围外,还要此时的点的提高方向和L1凡千篇一律之。

当然,我们通过AGS或者GeoServer之类的NA服务是可实现最邻路径生成的措施的,这个办法我们留下在本人的自底层谈WebGIS的宏图实现多重被及大家并追。这里我如果跟大家讨论同样种效率还强之办法,直接通过数据库的存储过程来实现。

自己在面提到的个别栽情景(不考虑方向性和设想方向性),这两者是稀罕递进的。我们首先考虑怎样通过不考虑方向性来解决。然后再进一步探讨如果出方向性,我们欠用啊思路去落实。

 

2.不考虑方向性的算法实现

课题研究:采用虚构现实技术演示与回复世界文化遗产

2.1更加简化问题

此地,首先我们用问题进一步简化,即什么判断一个沾是否获得于片个点构成的线的容差范围外,距离描述为:a点、b点零星个计划点,c点啊实际点,现在如咬定c点是否以a点及b点连接成的直线的容差范围外。

 – 南京明孝陵 VR 场景保护与回复研究 –

2.2化解简化问题的思绪

自己以解决步骤分为三步。分别吗:1.简短判断;2.判定是否获得于线外;3.垂线判断。

翔经过就是是:

A.粗略判断,c点和a点以及b点的连线是否当容差范围外,即ac或者bc是否以容差范围外。如果是,返回true。否则,进一步判断。

B.判断c点是否以ab直线的外侧,即c点交ab的流传足于ab的延长线上(如果是这种情形,只叫一个容差范围是颇不便确定是不是符合标准的,需要差不多个及容差有关的参数,比如水平容差和直容差等,为了简化,此种情形下,直接回false)。如果沿袭足于ab上,则展开下同样步。

C.算出c点至ab的垂线距离d。判断d是否以容差范围外,如果在,返回true;否则,返回false。

以线虚拟三维多用户网站

2.3贯彻判断点是否在线范围外(使用存储过程)

使用海伦公式求点到丝段的离。

传递的参数中。x0、y0、x1、y1为预约轨道的有数独坐标(P0,P1),x2、y2吗老三个坐标(实际位置S)的坐标,
fRange为比对相差,return 0 超出,return 1未超出。

 葡京在线开户 1                    

function getNearestDistance(x0 in number,y0 in number,x1 in
number,y1 in number,x2 in number,y2 in number,fRange in number :=
1,distance out number) return integer is 

    fa number(15,3);

    fb number(15,3);

    fc number(15,3);

    fl number(15,3);

    fs number(15,3);

  begin

    fa := sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

    fb := sqrt((x0-x2)*(x0-x2)+(y0-y2)*(y0-y2));

    fc := sqrt((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1));

    if fa < fRange then –当fa边长度小于警告距离时

      distance := fa;

      return 1;

    end if;

    if fb < fRange then –当fb边长度小于警告距离时

      distance := fb;

      return 1;

    end if;

    if fc < 0.01 then –当轨迹的个别个坐标点重合时

      return 0;

    end if;

if(fa*fa>=fb*fb+fc*fc) then  –P0处在角度也(钝(直)角),垂足于外 

      distance := fb;

      return 0;

end if;   

if(fb*fb>=fa*fa+fc*fc) then – P1介乎角度也(钝(直)角),垂足于他  

      distance := fa;

      return 0;

    end if; 

    –利用海伦公式要垂直距离

    fl := (fa+fb+fc)/2;     –周长的一半    

fs := sqrt(fl*(fl-fa)*(fl-fb)*(fl-fc));
 –海伦公式要面积,也可用矢量求    

    distance := 2*fs/fc; 

    if distance < fRance then

      return 1;

    end if;

    return 0;

  end;

编造明孝陵 – 入选 SIGGRAPH 的 VR 场景

2.4贯彻整个流程

事先查询得到方方面面预定路线的坐标,再查询有得判定的点S,遍历整个预定路线判断S是否以任何线路的某某条线段的容差范围外。

再也查询有实际线路被之次只实际点,重复上面的长河。

先是个经过的落实如下:

 

isOutOfRanceErr := 1;

open rs2 for select a.X,a.Y,b.X,b.Y,c.预警距离 from 坐标点表 a,
坐标点表 b, 轨迹表 c where a.轨迹ID=b.轨迹ID  and a.轨迹ID = c.轨迹ID
and a.坐标ID+1=b.坐标ID order by a.轨迹ID,a.坐标ID;

       loop

         Fetch rs2 into fP0X,fP0Y,fP1X,fP1Y,fToleRance;

         Exit when rs%Notfound;

           dummy :=
getNearestDistance(fP0X,fP0Y,fP1X,fP1Y,fCoordinateX,fCoordinateY,fToleRance,fDistance);

           if dummy = 1 then

              isOutOfRanceErr := 0;

              exit;

           end if;

         end loop;

       close rs2; 

 

 

3.考虑方向性的算法的实现

设若轨迹的对比还考虑方向性,即线路a-b-c-d与线路a-c-b-d是例外,其实,此时不过需要因此一个变量来号每一样次于可时,数组已经比及的地方,下次对待时应由标记处开始后推就会落实方向性问题了。

 

                                                                         
 —–欢迎转载,但保留版权,请吃大庭广众处于标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                          
如果您觉得本文确实帮了卿,可以微信扫一扫,进行小额的打赏和鞭策,谢谢
^_^

                                    葡京在线开户 2

 

自打自己沾虚拟现实到新兴以Web3D为主攻方向,这个作品一直是自己内心的No.1。尤其那篇背景音乐

古琴曲《秋水》,至今仍在自己耳旁回响。(引:琴音中正好醇和,高旷空澈,劲气饱满,余韵激响,空净醇澈,仿佛道心。取《庄子》篇名,借庄周迷梦蝴蝶的古典,表现道家天人合一的哲学思想。飘逸虚渺的音韵,给丁因飘逸尘滓之感。)

 

装浏览插件有只步骤,先装用于多用户聊天的 blaxxun
Contact,请到这里下载中文无乱码版
BC,然后下载最新的
BS Contact
VRML/X3D
(原始下载页面:http://www.bitmanagement.de/en/download ) 插件。

安装好以后,就可看编造明孝陵
了,网址:http://vr.mingxiaoling.org/。

 

葡京在线开户 3

 

前段时间这个网站曾无法开拓,但今天开拓后发现里头的景文件由位于
bitmanagement
公司服务器可能已于删掉,我曾email给创作作者看可不可以解决之题目。