精华内容
下载资源
问答
  • 数据库中的二维数据在坐标系中描绘其关系曲线Jsp网页
  •  1、flash中的二维坐标系  (1)、坐标的转换  flash中场景左上角为(0,0),而在数学中是场景中心为(0,0),怎样把它转成数学中的坐标系呢?假设场景宽度:550,高度400。  x=550/2+this.x;//x右移  y=400...
    flash的二维坐标系-webdesign-cn-iteye技术网站 
    
    2011年07月01日
       1、flash中的二维坐标系
      (1)、坐标的转换
      flash中场景左上角为(0,0),而在数学中是场景中心为(0,0),怎样把它转成数学中的坐标系呢?假设场景宽度:550,高度400。
      x=550/2+this.x;//x右移
      y=400/2-thix.y;//y下移
      如图1。
      图1:转换后的坐标系 图2:角度、弧度的转换
      (2)、角度的转换
      flash中角度的计算:如图2
      hudu = Math.atan2(y, x);
      // 利用公式tg a=y/x,计算a的值,flash中a是以
      弧度表示的 ,我们要把它转换成角度,设圆的半
      径r为1,整个弧长为2*pai*r,也就是说360度等于
      2*pai弧度,所以转成角度的公式为:
      jiaodu = hudu*180/Math.PI;
      // 把弧度转换为角度,公式为:角度=弧度*180/3.14,3.14为pai
      if (jiaodu
      
    展开全文
  • 前一篇文章讨论了二维坐标系下的判断,下面讨论三维的情况。 三维坐标下,对点的判断明显要复杂很多。如果google“Point in triangle”,第一个搜索结果就是这个网页,可惜的是,作者没有对结果进一步讨论,没有...

    原博:http://www.cnblogs.com/flyinghearts/archive/2011/07/14/2106892.html


    前一篇文章讨论了二维坐标系下的判断,下面讨论三维的情况。

    三维坐标下,对点的判断明显要复杂很多。如果google“Point in triangle”,第一个搜索结果就是这个,可惜的是,作者没有对结果进一步讨论,没有给出一个好的实现,而且其所有结论只在已知四点共面时才成立

     

     

     

     

    前面已经证明过,面积法和向量同向法是等价的。

    ab × ac = ab × ap + ap × ac + pb × pc

    |ab × ac| = |ab × ap| + |ap × ac| + |pb × pc|

    由于ab × ac、ab × ap、ap × ac、pb × pc这4个向量平行同向,因而可以先判断a、b、c、p这四点是否共面(通过计算混合积),若共面的话,则4个向量一定共线,接着只要判断后三个向量是否都和第一个向量(ab × ac)同向(可以通过判断后三个向量与第一个向量的点积的正负性来确定)

     

    代码:

     

    #include<cfloat>

    template<typename T> class Vec3 {

     T x, y, z;

    public:

     Vec3(T xx, T yy, T zz) : x(xx), y(yy), z(zz) {}

     Vec3 operator-(const Vec3& v) const { return Vec3(- v.x, y - v.y, z - v.z); }

     T dot(const Vec3& v) const { return x * v.+ y * v.+ z * v.z; }

     

     Vec3 cross(const Vec3& v) const {

        return Vec3(* v.- z * v.y, z * v.- x * v.z,* v.- y * v.x);

     }

    };

     

    typedef Vec3<double> V3d;

     

    //方法一

    bool is_in_triangle3a(const V3d& a, const V3d& b, const V3d& c, const V3d& p)

    {

     V3d ab(- a), ac(- a), ap(-a);

     if (fabs(ab.cross(ac).dot(ap)) >= DBL_EPSILON) return false; //四点不共面

     V3d abc = ab.cross(ac), abp = ab.cross(ap), apc = ap.cross(ac);

     double t0 = abc.dot(abc), t1 = abp.dot(abc), t2 = apc.dot(abc);

     

     //t1 >= 0     t2 >= 0    t1 + t2 <= t0       t0肯定大于0

     // return (t1 >= -DBL_EPSILON) & (t2 >= -DBL_EPSILON) & (t0 - t1 - t2 >= -DBL_EPSILON);

     double delta = fabs(t1) + fabs(t2) + fabs(t0 - t1 - t2) - t0;

      return fabs(delta) < DBL_EPSILON; 

    }

     

    方法一,需要30次乘法计算。即使在已知四点共面的情况下,仍需要27次乘法计算,仅节省了3次乘法计算。考虑到每次计算向量积需要6次乘法计算,而计算点积只要3次乘法计算,因而可以考虑消除向量积计算:

     

     

    利用公式:

     (a × b)· c = (c × a)· b       (混合积)

     a × (b × c) = b(a·c) c(a·b)  (拉格朗日公式)

    可得:

    (a × b)·(a × c) = ((a × c) × a)·b = ((a·a)c – (a·c)a)·b

    (a·a) * (b·c) – (a·c) * (a·b)

     

    利用这个展开式,可得:

     

    //方法二

    bool is_in_triangle3b(const V3d& a, const V3d& b, const V3d& c, const V3d& p)

    {

     V3d ab(- a), ac(- a), ap(-a);

     if (fabs(ab.cross(ac).dot(ap)) >= DBL_EPSILON) return false; //四点不共面

     V3d abc = ab.cross(ac), abp = ab.cross(ap), apc = ap.cross(ac);

     

     //double t0 = abc.dot(abc), t1 = abp.dot(abc), t2 = apc.dot(abc); //对这三个计算公式进行展开

     double v11 = ab.dot(ab), v22 = ac.dot(ac), v12 = ab.dot(ac);

     double v13 = ab.dot(ap), v23 = ac.dot(ap);

     double t0 = v11 * v22 - v12 * v12;

     double t1 = v11 * v23 - v12 * v13;

     double t2 = v22 * v13 - v12 * v23;

     

     double delta = fabs(t1) + fabs(t2) + fabs(t0 - t1 - t2) - t0;

     return fabs(delta) < DBL_EPSILON; 

    }

     

    方法二,需要30次乘法计算,但在已知四点共面时则只需要21次乘法计算

     

    上面的两种方法,方法一,容易记,容易实现,且在不能确定四点共面时,效率与方法二差不多(甚至可能略高);而方法二最大的优点,则是在已知四点共面时,比方法一少用6次乘法,但是实现起来实在麻烦。那么,是否存在更好的方法呢?答案是肯定的,这就是后面要提到的方法(多一次条件判断,只要13乘法(四点共面时只要8))。

     


    作者:  flyinghearts 
    出处:  http://www.cnblogs.com/flyinghearts/ 
    本文采用 知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    展开全文
  • } // 画第个竖着的格子! for(let j = 0; j gd.beginPath(); gd.moveTo(space*j-0.5,0) gd.lineTo(space*j-0.5,cHeight) gd.strokeStyle="#aaa" gd.stroke() } // 下面是画那个坐标! // 1, everPadding(坐标离 ...

    无论您是新手,还是老手,本教程都值得一读。

    网格

    #c1{

    border:1px solid black;

    }

    window.onload = function(){

    var oCanvas = document.getElementById('c1')

    var gd = oCanvas.getContext('2d')

    // 你要画一个表格:

    // 你得思考,每个格子多大!

    var space = 20

    // 1, 得到 画布的宽和高

    var cWidth = gd.canvas.width;

    var cHeight = gd.canvas.height;

    // 当你记不住api 的时候,就打印出来看看!

    var lines = Math.floor(cHeight/space)

    var cols = Math.floor(cWidth/space)

    for(let i = 0;i

    gd.beginPath()

    gd.moveTo(0,space*i-0.5)

    gd.lineTo(cWidth,space*i-0.5)

    gd.strokeStyle='#aaa'

    gd.stroke();

    }

    // 画第二个竖着的格子!

    for(let j = 0; j

    gd.beginPath();

    gd.moveTo(space*j-0.5,0)

    gd.lineTo(space*j-0.5,cHeight)

    gd.strokeStyle="#aaa"

    gd.stroke()

    }

    // 下面是画那个坐标!

    // 1, everPadding(坐标离 网格边界的上下左右的距离!)

    var everPadding = 40

    // 起点(坐标原点)

    var x0 = everPadding;

    var yo = cHeight -everPadding

    // x 轴,终点:

    var x1 = cWidth-everPadding;

    // 竖着方向:

    // 画着再说:

    gd.beginPath();

    gd.moveTo(x0,yo)

    gd.lineTo(x1,yo)

    gd.lineTo(x1-space,yo-space)

    gd.lineTo(x1-space,yo+space)

    gd.lineTo(x1,yo)

    gd.strokeStyle="red"

    gd.fillStyle="red"

    gd.stroke()

    gd.fill()

    gd.beginPath()

    gd.moveTo(x0,yo)

    gd.lineTo(x0,everPadding)

    gd.lineTo(x0-space,everPadding+space)

    gd.lineTo(x0+space,everPadding+space)

    gd.lineTo(x0,everPadding)

    gd.strokeStyle="red"

    gd.fillStyle="red"

    gd.stroke()

    gd.fill()

    }

    显示:

    4dfe7e1038bbfa5de0a846e4e6decd20.png

    相关推荐:

    展开全文
  • 前一篇文章讨论了二维坐标系下的判断,下面讨论三维的情况。 三维坐标下,对点的判断明显要复杂很多。如果google“Point in triangle”,第一个搜索结果就是这个网页,可惜的是,作者没有对结果进一步讨论,没有给出...

     

    前一篇文章讨论了二维坐标系下的判断,下面讨论三维的情况。

    三维坐标下,对点的判断明显要复杂很多。如果google“Point in triangle”,第一个搜索结果就是这个网页,可惜的是,作者没有对结果进一步讨论,没有给出一个好的实现,而且其所有结论只在已知四点共面时才成立

     

     

     

     

    前面已经证明过,面积法和向量同向法是等价的。

    ab × ac = ab × ap + ap × ac + pb × pc

    |ab × ac| = |ab × ap| + |ap × ac| + |pb × pc|

    由于ab × ac、ab × ap、ap × ac、pb × pc这4个向量平行同向,因而可以先判断a、b、c、p这四点是否共面(通过计算混合积),若共面的话,则4个向量一定共线,接着只要判断后三个向量是否都和第一个向量(ab × ac)同向(可以通过判断后三个向量与第一个向量的点积的正负性来确定)

     

    代码:

     

    #include<cfloat>

    template<typename T> class Vec3 {

     T x, y, z;

    public:

     Vec3(T xx, T yy, T zz) : x(xx), y(yy), z(zz) {}

     Vec3 operator-(const Vec3& v) const { return Vec3(x - v.x, y - v.y, z - v.z); }

     T dot(const Vec3& v) const { return x * v.x + y * v.y + z * v.z; }

     

     Vec3 cross(const Vec3& v) const {

        return Vec3(y * v.z - z * v.y, z * v.x - x * v.z,x * v.y - y * v.x);

     }

    };

     

    typedef Vec3<double> V3d;

     

    //方法一

    bool is_in_triangle3a(const V3d& a, const V3d& b, const V3d& c, const V3d& p)

    {

     V3d ab(b - a), ac(c - a), ap(p -a);

     if (fabs(ab.cross(ac).dot(ap)) >= DBL_EPSILON) return false; //四点不共面

     V3d abc = ab.cross(ac), abp = ab.cross(ap), apc = ap.cross(ac);

     double t0 = abc.dot(abc), t1 = abp.dot(abc), t2 = apc.dot(abc);

     

     //t1 >= 0     t2 >= 0    t1 + t2 <= t0       t0肯定大于0

     // return (t1 >= -DBL_EPSILON) & (t2 >= -DBL_EPSILON) & (t0 - t1 - t2 >= -DBL_EPSILON);

     double delta = fabs(t1) + fabs(t2) + fabs(t0 - t1 - t2) - t0;

      return fabs(delta) < DBL_EPSILON; 

    }

     

    方法一,需要30次乘法计算。即使在已知四点共面的情况下,仍需要27次乘法计算,仅节省了3次乘法计算。考虑到每次计算向量积需要6次乘法计算,而计算点积只要3次乘法计算,因而可以考虑消除向量积计算:

     

     

    利用公式:

     (a × b)· c = (c × a)· b       (混合积)

     a × (b × c) = b(a·c) c(a·b)  (拉格朗日公式)

    可得:

    (a × b)·(a × c) = ((a × c) × a)·b = ((a·a)c – (a·c)a)·b

    = (a·a) * (b·c) – (a·c) * (a·b)

     

    利用这个展开式,可得:

     

    //方法二

    bool is_in_triangle3b(const V3d& a, const V3d& b, const V3d& c, const V3d& p)

    {

     V3d ab(b - a), ac(c - a), ap(p -a);

     if (fabs(ab.cross(ac).dot(ap)) >= DBL_EPSILON) return false; //四点不共面

     V3d abc = ab.cross(ac), abp = ab.cross(ap), apc = ap.cross(ac);

     

     //double t0 = abc.dot(abc), t1 = abp.dot(abc), t2 = apc.dot(abc); //对这三个计算公式进行展开

     double v11 = ab.dot(ab), v22 = ac.dot(ac), v12 = ab.dot(ac);

     double v13 = ab.dot(ap), v23 = ac.dot(ap);

     double t0 = v11 * v22 - v12 * v12;

     double t1 = v11 * v23 - v12 * v13;

     double t2 = v22 * v13 - v12 * v23;

     

     double delta = fabs(t1) + fabs(t2) + fabs(t0 - t1 - t2) - t0;

     return fabs(delta) < DBL_EPSILON; 

    }

     

    方法二,需要30次乘法计算,但在已知四点共面时则只需要21次乘法计算

     

    上面的两种方法,方法一,容易记,容易实现,且在不能确定四点共面时,效率与方法二差不多(甚至可能略高);而方法二最大的优点,则是在已知四点共面时,比方法一少用6次乘法,但是实现起来实在麻烦。那么,是否存在更好的方法呢?答案是肯定的,这就是后面要提到的方法(多一次条件判断,只要13乘法(四点共面时只要8))。

     

    转载于:https://www.cnblogs.com/flyinghearts/archive/2011/07/14/2106892.html

    展开全文
  • 程序只要求输出小车最后的位置,第一个整数是x坐标,第个整数是y坐标。 输入 输入包含多个命令,每个命令由整数time和command组成,表示在时刻time发出命令command。command的取值范围1-3,含义如上所述。 输出 ...
  • CSS 坐标系

    2021-06-15 13:23:23
    概念:css3中网页不再是一个二维平面,而是一个三维空间,水平方向、竖直方向和垂直屏幕方向分别对应三维坐标系的x,y,z轴,如下图所示。箭头方向为正向,反之为负向(注意y轴方向与常规笛卡尔坐标系相反) ...
  • 如何将三地理坐标如(388691,4103865,4300)的(X,Y,Z)类型的坐标转化为在视口中能够被看见的地理坐标,在OpenGL中虽然可以转化,但是通过缩放之类的操作之后并没有成功,还是将图形或者点画在视口的范围之外,在...
  • Webg中三维坐标

    2019-08-09 16:05:08
    1 WebGL坐标系 在现实世界中,所有的事物都是三维的的,而计算机屏幕显示的是二维的图形,将三维和二维联系在一起的纽带就是坐标。 WebGL处理的是三维图形,所以它使用三维坐标系统,具有X轴、Y轴、Z轴。当你面像...
  • 看来需要快点熟悉cocos了3d2d效果随机生成不同位置和大小的box, 任意拖动一个box, 在拖动的过程中检测是否和其他box相交 主要思想, 将二维AABB检测转换为两个矩形的各两条边的交叉问题 由于一般情况下, 世界坐标系和...
  • 立体视觉入门指南(1):坐标系与相机参数

    千次阅读 多人点赞 2021-01-31 21:07:39
    本课程将带大家由浅入深的了解立体视觉的理论与实践知识。我们会从坐标系讲到相机标定,从被动式立体讲到主动式立体,甚至可能从深度恢复讲到网格构建与处理,感兴趣的同学们,来和我一起探索立体视觉的魅力吧!
  • 市面上的主流3D软件功能各有特色,所采纳的坐标系不尽相同,有时需要在彼此之间转换。 现在整理如下: 软件 官网链接 简介 类型 轴向 坐标系 ...
  • 欢迎关注”生信修炼手册”!常规的柱状图,散点图等展示形式,都是在笛卡尔坐标系中进行展示,是使用最为广泛的图表。这些图表在展示信息方面具有扎实的基础,但是却缺乏了一丝创意。通过极坐标转换,...
  • 由于书本和网页二维的缘故,使得无法很好的表现三维空间的变换,会变得很抽象难理解。如果还是看不太懂,可以去观看下面的动画,可以在空间中直观的理解。此动画时维基百科的D-H法推荐。 【搬运】关于机械臂D-H法...
  • handler.setInputAction(function (movement) { //通过指定的椭球或者地图对应的坐标系,将鼠标的二维坐标转换为对应椭球体三维坐标 cartesian = viewer.camera.pickEllipsoid(movement.position, ellipsoid);...
  • 二维 grid 布局

    2016-10-12 06:22:14
    grid 布局是针对 Web 布局的一个升级版,首先,回想一下,我们写 HTML 的时候,一个一个 div 像搭积木一样,完成我们最后的网页。当然,我们还需要使用 CSS 来配置我们每个 DOM 元素的具体位置,比如 navbar,s...
  • 每个局部坐标系(左下角的偏移和世界坐标的旋转)都在文件cameraInfo.xml 中设置。 该库将连接的相机连接到您的 PC(使用 openCV),因此它为您提供 XY 世界坐标中标记的位置和方向。 该算法在与您的主应用程序并行...
  • 三维变换到二维投影_OpenGL版本

    千次阅读 2012-12-11 17:05:39
    从三维物体到二维图象,就如同用相机拍照一样,通常都要经历以下几个步骤:  1、将相机置于三角架上,让它对准三维景物,它相当于OpenGL中调整视点的位置,即视点变换(Viewing Transformation)。  2、将三维...
  • 基于统计的方法:将人脸看作一个整体的模式:二维像素矩阵,从统计的观点通过大量人脸图像样本构造人脸模式空间,根据相似度量来判断人脸是否存在。主要包括主成分分析与特征脸、神经网络方法、支持向量机、隐...
  • 关键代码 document.elementFromPoint(300, 10).click(); 坐标是当前网页窗口坐标,不是整个屏幕坐标 自己记录一下 未允许不可转载
  • css3 2D转换

    2019-11-13 21:36:25
    2D转换 2D转换的概念: 转换(transform)是css3中具有颠覆性的特征之一,可以实现元素的位移、旋转、缩放等效果。...2D转换是改变标签在二维平面上的位置和形状的一种技术,先来学习二维坐标系 。 2. 2D...
  • & 教程 Matplotlib Matplotlib是Python数据可视化库中的泰斗,它已经成为python中公认的数据可视化工具,通过Matplotlib可以很方便的设计和输出二维以及三维的数据,其提供了常规的笛卡尔坐标,极坐标,球坐标,三...
  •  任意拖动一个box, 在拖动的过程中检测是否和其他box相交 主要思想, 将二维AABB检测转换为两个矩形的各两条边的交叉问题 由于一般情况下, 世界坐标系和元素坐标系都是直接按照像素来的, 所以我们可以通过简单的对比...
  • http://www.hcharts.cn/demo/ 支持多Y轴,饼状图,柱状图,三图等。 下载最新版,解压放置在网页目录下即可使用。 http://www.hcharts.cn/product/download.php
  • 从零开始搭二维激光SLAM --- 零基础如何入门激光SLAM

    千次阅读 多人点赞 2020-12-21 13:58:54
    这其中可能涉及到一些TF的知识,可以暂时不用管他,只要知道这是ROS帮助我们管理传感器坐标系与机器人坐标系间坐标变换关系的即可。TF也是十分必要的,是之后的必学项 这一阶段最多花费 1天 的时间。 2.4 第四步:...
  • webgl中的基本坐标系统

    千次阅读 2018-03-14 13:07:38
    在构造和显示场景的过程中会使用几个不同的笛卡尔坐标系:建模坐标系(几部坐标系): 在各自的坐标系统中构造每一个对象的形状,比如自己构造的车,树,花等模型。世界坐标系:一旦构建好模型后,就可以将对象放到...
  • 经纬度坐标和投影坐标的转换

    万次阅读 2015-12-11 09:28:22
    昨天,有朋友要我帮忙看看一个将经纬度坐标转换成墨卡托投影(墨卡托投影有很多变种,我也不知道他说的是哪一种)的程序,他说转换以后的坐标精度太差。当时,他的程序没怎么看懂,然后研究了一下Geotools,自己写了...
  • 实景三系列2 | 实景三模型的应用价值和意义目录 实景三模型有哪些有价值的信息? ...实景三建模效率和精度如何?...实景三建模可以应用于哪些领域?...实景三建模技术能够根据一系列...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,296
精华内容 1,718
关键字:

网页二维坐标系