精华内容
下载资源
问答
  • 计算共形几何课件,对应视频见b站,顾险峰】【中英字幕】计算共形几何系列课程
  • 计算几何 欢迎 :waving_hand: ... 计算共形几何 在线讲座 计算几何:算法和应用 书 学习进度 离散微分几何: 第01章概述 第02章组合曲面 第03章微分几何导论 第04章外微积分导论 第05章离散曲面
  • 计算机共形几何

    2017-12-27 20:38:28
    共形几何是纯数学中很多学科的交叉领域, 比如黎曼曲面理论、微分几何、代数曲 线、代数拓扑、偏微分方程、复分析等等. 它有很长的历史, 至今在现代几何与现代物理中仍然非常活跃. 比如超弦理论中的形场和理论物理...
  • 计算共形几何讲座笔记

    千次阅读 2017-08-28 11:36:43
    2)为什么研究共形几何?有哪些好处 3)能解决哪些问题?工程中有什么应用?现在还有哪些问题需要解决   现代几何在工程和医学中的应用   几何是研究各种变换群下的不变量。工程上常用的几何是 1)拓扑:...

    明白以下问题

    1)几何研究的是什么?有哪些

    2)为什么研究共形几何?有哪些好处

    3)能解决哪些问题?工程中有什么应用?现在还有哪些问题需要解决

    这是听顾险峰老师8.27日一次微信讲座中的 笔记记录,所有图片均来自顾老师的ppt截图。侵删。


    现代几何在工程和医学中的应用

     

    几何是研究各种变换群下的不变量。工程上常用的几何是

    1)拓扑:对应的变换群是拓扑同胚,比如把一个橡皮环,只要不拉破,他的拓扑是不变的

    2)黎曼几何:等距变换;这里的距是指测地距离。把一张长方形纸卷成圆柱,上面任意两点之间的最短距离不变。等距变换下,曲面的高斯曲率是不变的。用黎曼几何,无法把弯曲的东西变成平面,

    3)曲面的微分几何:一个曲面嵌入到三维空间中,那么它可以在三维空间中进行旋转和平移,它的高斯曲率不变,主曲率也不变。

    顾老师的研究介于拓扑和黎曼几何之间,由于经常需要对曲面进行大形变,比如把弯的曲面变成直的平面,此时曲率将不再被保持,所以黎曼几何不太适用。

     

     

    为什么要用共形几何?

    拓扑变换太剧烈,保留的信息太少,即太"软",黎曼几何太"硬",没办法把弯曲的变成平的。共形几何软硬适中,特别适合研究大的形变。

    共形几何特别适合研究3类问题

    1)曲面之间的映射;把一张脸变成另一张脸,动画中叫表情迁移,需要两个曲面的微分同胚

    2)曲面分类;比如表情识别,判断三维的人脸是什么表情,哭?笑?

    3)形状分析;得到人体的器官表面,判断其是否有肿瘤;判断大脑皮层的曲面判断是否有脑补疾病

     

     

    历史上共形几何是很多学科交叉的地方。历史上有一门科学是计算复分析,研究的重点是平面区域之间的保角变换。从平面到曲面是巨大的飞跃,用的理论完全不同。















    这个扫描仪可以达到每秒180帧,每张脸有上万个三角形,已经超过了游戏工业和电影工业的要求。

    为什么做计算共形几何的研究?

    从上世界90年代,三维扫描技术越来越成熟,我们可以很轻易的得到大量的三维数据,如何高效的处理这些数据?此外计算机的计算能力越来越强,为处理大量的数据提供了硬件支撑。

    计算共形几何中几个最基本的问题

    1)给定曲面上的黎曼度量,黎曼度量就会决定一个共形结构,如何计算该共形结构?

    2)随便给两个拓扑等价的曲面,他们之间不见得存在保角变换,如何计算不变量来判断两个曲面是否存在保角变换

    3)计算中通常需要找到简单的度量来简化计算,如何在共形结构中找到最简单的黎曼度量?

    4)给定想要高斯曲率,能否设计出一个黎曼度量?目的是通过计算一个黎曼度量张量来实现高斯曲率

    5)给定两个曲面,如何计算两个曲面的拟共形变换?

    6)两个拓扑等价但是不存在保角变换的曲面,能否找到一个映射,使他最接近保角变换,使得局部形状畸变达到全局最小。这些变换是否存在?是否唯一?计算起来是否稳定

     

    顾老师的基本著作:《计算共形几何》、《离散曲面的变分原理》、《Ricci流对于形状分析和曲面配准》

    核心的概念是保角变换,特性:1)拓扑发生巨大的变化;2)局部是保持形状的,用复变函数的说法:这个变换是双全纯变换,变换本身是全纯的,它的你映射也是全纯的

    另一个定义:把三维人脸映射到二维圆盘,三维人脸上画两条相交的曲线,交角在变换前后保持不变。这种变换成为保角变换

     

    经过保角变换后映射到一个平面长方形,这个映射的特性:1)改变了曲率,把弯曲的曲面变成了平直的平面;2)保持局部形状不变,比如眼睛、耳朵、发髻。这个变换称为保形变换,保角变换局部就是保形的。

    换句话说:在每个点取一个小邻域,限制在这个邻域上这个变换就是相似变换,每一点相似比不一样,所以不是一个整体的相似变换,但局部都是相似变换,所以局部形状不变

     

    这幅图解释共形变换和一般微分同胚的本质差别:把同一张三维人脸映射到单位圆盘上,上面一行共形变换是圆到圆,圆的大小发生变化,但是形状没有改变。这个变换称为黎曼映照,可以证明,从人脸到圆盘所有的共形变换彼此之间相差一个三维的群,也就是说有无穷多个变换,但这无穷多个变换可以用三个参数来刻画,因此维数有限

    下面一般微分同胚是椭圆到圆,微分同胚有无穷多个,构成的空间也是无穷多维

    这是最大的差别,共形变换三个参数就可以控制,而且有唯一性,这为工程上带来很多好处。

     

    共形变换把三维变成二维,而且局部保形,这是其第一个长处:降维;(便于硬件、算法处理、加速)

    另一个好处:大一统。世间所有形状都可以通过共形变换转化为三种标准形状:球面、欧式平面、双曲圆盘

    a)小女孩,亏格为0;b)小猫亏格为1,c)亏格为2

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 顾险峰教授的共形几何课PPT讲义,是计算机图形学很好的数学指导。可以配合他出版的书学习。
  • 共形几何代数是一种新的几何表示和几何计算工具,它具有直观、简洁、高效、统一、雅致等特性。在简单介绍外积、内积和几何积等基本概念之后,重点论述了共形几何代数在图形反射、旋转、平移等变换和刚体运动、螺旋...
  • 目前,可以使用多向量进行基本计算。 许多运算符都非常繁重,因此您可以像在数学软件中一样,用C#源代码编写计算。 还有一个扩展库,提供了可以可视化多个向量的控件。 可视化通过OpenTK库基于OpenGL。 目前,我...
  • 解三角形三角形中几何计算.ppt
  • ACM 计算几何模板

    2014-05-09 14:51:37
    ACM 很全的计算几何模板 基础部分 1.几何公式 5 1.1三角形 5 1.2四边形 5 1.3正n边 5 1.4圆 5 1.5棱柱 6 1.6棱锥 6 1.7棱台 6 1.8圆柱 6 1.9圆锥 6 1.10圆台 7 1.11球 7 1.12球台 7 1.13球扇形 7 2.直线与线段 7 ...
  • 以平面并联机构为题,应用5维几何代数(共形几何代数)方法对该平面并联机构进行了分析,建立了运动 学正解模型,并编制了 Maple的计算程序,求出了6组位姿结果,最后将分析结果与采用吴方法得到的分析结果进 行对照,证明了...
  • 主要介绍了Java计算几何图形面积的实例代码,需要的朋友可以参考下
  • 利用角形几何特征和计算机视觉技术确定岩羊年龄的新方法.pdf
  • 计算几何统一库 该库包含两个文件夹。 这个想法是,一个用于测试目的,另一个文件夹是您拖入项目的文件夹。 确保所有输入坐标都标准化为0-1范围,以避免浮点精度问题! 有一个“ Normalizer”对象,可以帮助您进行...
  • ACM 计算几何模板 点在三角形内

    千次阅读 2015-08-07 23:08:16
    如何判断点在三角形内 使用叉乘判断 //点b[l],在a[i],a[j],a[k]构成...//前面已经判断了三点不线,可以构成三角形 if (cross(a[j]-a[i],b[l]-a[i])*cross(a[k]-a[i],b[l]-a[i])) if (cross(a[i]-a[j],b[l]-a[j])*c
    如何判断点在三角形内
    

    使用叉乘判断

    //点b[l],在a[i],a[j],a[k]构成的三角形内,则sum++
    //前面已经判断了三点不共线,可以构成三角形
     if (cross(a[j]-a[i],b[l]-a[i])*cross(a[k]-a[i],b[l]-a[i])<=0)
                            if (cross(a[i]-a[j],b[l]-a[j])*cross(a[k]-a[j],b[l]-a[j])<=0)
                                sum++;

    画图如下:


    四边形同理

    另外,高效方法统计三角形内点的个数:

    http://blog.csdn.net/nickwong_/article/details/47347027

    展开全文
  • 高二数学三角形中几何计算PPT课件.pptx
  • .Net 的简单轻量级计算几何库 GeometRi 库的主要用途是对基本几何图元进行操作,例如 3D 空间中的点、线、平面、球体、三角形:平移和旋转操作、距离计算、相交、一个对象到另一个对象的正交投影等。可以在全局坐标...
  • 题目链接: ...分析: 给出平面上的N个点,在其中找出三个点,使得其构成的三角形的面积最大。 题解: 先用找出凸包上的所有点,然后一次枚举遍历即可。 1.求凸包:int cmp(point a, point b) //水平排序 ...
    • 题目链接:
      http://acm.hdu.edu.cn/showproblem.php?pid=2202

    • 分析:
      给出平面上的N个点,在其中找出三个点,使得其构成的三角形的面积最大。

    • 题解:
      先用找出凸包上的所有点,然后一次枚举遍历即可。

    1.求凸包:

    int cmp(point a, point b)  //水平排序
    {
        if(a.x==b.x)return a.y<b.y;
            return a.x<b.x;
    }
    int convex(int n, point P[], point res[])//n为总点数,P 为点集,res为输出凸包上点的点集
    {
        sort(P, P+n,cmp);
        int m=0,i,j,k;
        //求得下凸包,逆时针
        //已知凸包点m个,如果新加入点为i,则向量(m-2,i)必定要在(m-2,m-1)的逆时针方向才符合凸包的性质
        //若不成立,则m-1点不在凸包上。
        for(i=0;i<n;i++)
        {
            while(m>1&&multiply(res[m-1],P[i],res[m-2])<=0)m--;
            res[m++]=P[i];
        }
        k=m;
        //求得上凸包
        for(i=n-2;i>=0;i--)
        {
            while(m>k&&multiply(res[m-1],P[i],res[m-2])<=0)m--;
            res[m++]=P[i];
        }
        if(n>1) m--;//起始点重复。
        return m;
    }

    2.三角形面积:

    double multiply(point sp, point ep, point op) //三角形三个点的坐标
    {
        return((sp.x-op.x)*(ep.y-op.y)-(ep.x-op.x)*(sp.y-op.y));
    }
    • AC代码:
    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    int N;
    
    
    struct point
    {
        double x;
        double y;
    }P[50100],res[50100];
    
    int cmp(point a, point b)
    {
        if(a.x==b.x)return a.y<b.y;
            return a.x<b.x;
    }
    
    double multiply(point sp,point ep,point op)
    {
        return((sp.x-op.x)*(ep.y-op.y)-(ep.x-op.x)*(sp.y-op.y));
    }
    
    int convex(int n, point [], point res[])
    {
        sort(P, P+n,cmp);
        int m=0,i,j,k;
        //求得下凸包,逆时针
        //已知凸包点m个,如果新加入点为i,则向量(m-2,i)必定要在(m-2,m-1)的逆时针方向才符合凸包的性质
        //若不成立,则m-1点不在凸包上。
        for(i=0;i<n;i++)
        {
            while(m>1&&multiply(res[m-1],P[i],res[m-2])<=0)m--;
            res[m++]=P[i];
        }
        k=m;
        //求得上凸包
        for(i=n-2;i>=0;i--)
        {
            while(m>k&&multiply(res[m-1],P[i],res[m-2])<=0)m--;
            res[m++]=P[i];
        }
        if(n>1)m--;//起始点重复。
        return m;
    }
    
    
    double Max(double a, double b)
    {
        return a>b?a:b;
    }
    
    int main()
    {
        while(scanf("%d", &N)!=EOF)
        {
            for(int i=0;i<N;i++)
            {
                scanf("%lf%lf", &P[i].x, &P[i].y);
            }
    
            int len = convex(N, P, res);
            double S = 0;
            for(int i =0;i<len;i++)
            {
                for(int j=i+1;j<len;j++)
                {
                    for(int k=j+1;k<len;k++)
                    {
                        //printf("%.2lf\n", multiply( res[i],res[j],res[k] ));
                        S = Max(S, multiply( res[i],res[j],res[k] ) );
                    }
                }
            }
            printf("%.2lf\n",S*0.5);
    
        }
    }
    展开全文
  • 转自: ... ...[摘]已知三角形三点坐标,求三角形的面积。 (2009-12-10 22:14:58...推荐:在二维的时候使用叉乘公式,三维的时候使用海伦公式~~~不过如果是需要符号的情况时,就只能使用行列式的计算公式了。

    转自:http://blog.sina.com.cn/s/blog_455b20c10100gdm6.html


    [摘]已知三角形三点坐标,求三角形的面积。 (2009-12-10 22:14:58)转载▼
    标签: 三角形 面积 叉乘 向量 海伦公式 it 分类: 程序设计
    [来源:已知三角形三点坐标,求三角形的面积]
    ---------------------
        先介绍一下三维中的两点之间距离之式,和二维的几乎一样:
        d = sqrt((x0-x1)^2 + (y0-y1)^2 + (z0-z1)^2)
        再介绍叉乘,中心内容!叉乘在定义上有:两个向量进行叉乘得到的是一个向量,方向垂直于这两个向量构成的平面,大小等于这两个向量组成的平行四边形的面积。
     
        在直角座标系[O;i,j,k]中,i、j、k分别为X轴、Y轴、Z轴上向量的单位向量。设P0(0,0,0),P1(x1,y1,z1),P2(x2,y2,z2)。因为是从原点出发,所以向量P0P1可简记为P1,向量P0P2可简记为P2。依定义有:
               |i  j  k |
          P1×P2 = |x1 y1 z1|
               |x2 y2 z2|
    展开,得到:
    上式 = iy1z2 + jz1x2 + kx1y2 - ky1x2 - jx1z2 - iz1y2
       = (y1z2 - y2z1)i + (x2z1 - x1z2)j + (x1y2 - x2y1)k
    按规定,有:单位向量的模为1。可得叉积的模为:
    |P1×P2| = y1z2 - y2z1 + x2z1 - x1z2 + x1y2 - x2y1
         = (y1z2 + x2z1 + x1y2) - (y2z1 + x1z2 + x2y1)
     
        开始正式内容。我们设三角形的三个顶点为A(x0,y0,z0),B(x1,y1,z1),C(x2,y2,z2)。我们将三角形的两条边AB和AC看成是向量。然后,我们以A为原点,进行坐标平移,得到向量B(x1-x0,y1-y0,z1-z0),向量C(x2-x0,y2-y0,z2-z0)。
     
    ①在三维的情况下,直接代入公式,可得向量B和向量C叉乘结果的模为:
    |B×C| = ((y1-y0)*(z2-z0) + (z1-z0)*(x2-x0) + (x1-x0)*(y2-y0)) -
         ((y2-y0)*(z1-z0) + (z2-z0)*(x1-x0) + (x2-x0)*(y1-y0))
         |  1     1     1  |
        = |x1-x0 y1-y0 z1-z0|
         |x2-x0 y2-y0 z2-z0|
    它的一半即为所要求的三角形面积S。
     
        还有一种比较简单的写法。将向量AB和AC平移至原点后,设向量B为(x1,y1,z1),向量C为(x2,y2,z2),则他们的叉乘所得向量P为(x,y,z),其中:
        |y1 z1|     |z1 x1|     |x1 y1|
    x = |     | y = |     | z = |     |
        |y2 z2|     |z2 x2|     |x2 y2|
    然后用三维中的两点之间距离公式,求出(x,y,z)与(0,0,0)的距离,即为向量P的模,它的一半就是所要求的面积了。
    以上公式都很好记:x分量由y,z分量组成,y分量由z,x分量组成,z分量由x,y分量组成,恰好是循环的。坐标平移一下就好了。
     
    ②在二维的情况下,我们可以取z = 0这个平面,即令z1 = z2 = 0,且
    |P1×P2| = x1y2 - x2y1
          |x1 y1| 
         = |     |
          |x2 y2|
    所以:      
    |B×C| = (x1-x0)*(y2-y0)-(x2-x0)*(y1-y0)
         |x1-x0 y1-y0|
        = |           |
         |x2-x0 y2-y0|
    它的一半即为所要求的三角形的面积S。
        注意,用行列式求出来的面积是带符号的。如果A,B,C是按顺时针方向给出,则S为负;按逆时针方向给出,则S为正。
     
    以二维的情况为例,三维亦同:
    A(0,0) B(0,1) C(1,0) (A,B,C按顺时针方向给出)
    S = ((x1-x0)*(y2-y0)-(x2-x0)*(y1-y0))/2;
      = ((0 - 0)*(0 - 0)-(1 - 0)*(1 - 0))/2
      = -0.5
    A(1,0) B(0,1) C(0,0) (A,B,C按逆时针方向给出)
    S = ((x1-x0)*(y2-y0)-(x2-x0)*(y1-y0))/2;
      = ((0 - 1)*(0 - 0)-(0 - 1)*(1 - 0))/2
      = 0.5
    如果你不需要符号的话,再求一下绝对值就好了。这样也不用去管给出的点的顺序了。
     
    以上是利用叉乘。其实还有一招,那就是海伦公式:
        利用两点之间距离公式,求出三角形的三边长a,b,c后,令p = (a+b+c)/2。再套入以下公式就可以求出三角形的面积S :
        S = sqrt(p*(p-a)*(p-b)*(p-c))
    看起来好像比上面的都要简单…… -.-b 各位看客不要打我!
     
    推荐:在二维的时候使用叉乘公式,三维的时候使用海伦公式~~~不过如果是需要符号的情况时,就只能使用行列式的计算公式了。

    展开全文
  • 本文在严格的数学基础上,通过显式使用压头几何形状,而不是在世界范围仍使用的迭代“接触深度”,采用弹性理论并且违反了力学原理,在严格的数学基础上分析了圆锥,棱锥,楔形和球形压痕的力与深度载荷曲线。...
  • 为了快速地自动计算非规则几何光栅的衍射效率,使用MatLab软件模拟各种槽,自动荻取槽参数,并根据这些槽参数运用严格耦合波分析方法,计算光栅的衍射效率。结果表明所设计的计算程序能够快速自动分析非规则...
  • 算法-计算几何- 二维几何基础- 三角形的面积(包含源程序).rar
  • 【转载】计算几何题目集锦

    千次阅读 2018-07-04 18:04:44
    之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的算法,在很多领域有着重要的用途 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很...
  • 我们提供了三维引力的边界条件,包括增强的Rindler时空,代表了非极端黑洞或平面空间宇宙学的近视几何。 这些边界条件迫使我们做出一些不同寻常的选择,例如对延迟时间内的规范边界电流进行积分并定期识别后者。 ...
  • 在平面几何中,三角形三顶点的坐标为:三角形的重心(形心)坐标计算公式: 在平面几何中,四边形四顶点的坐标为:按逆时针方向排列,四边形的重心(形心)坐标计算公式: 参考文献: [1]常胜利.多边形...
  • ACM计算几何

    万次阅读 多人点赞 2018-08-19 01:24:05
    1.1 计算几何算法 1.2 计算几何题目特点及要领 1.3 预备知识 2 凸包 2.1 定义 2.1.1 凸多边形 2.1.2 凸包 2.2 颜料配色问题 2.2.1 问题描述 2.2.2 问题简化 2.2.3 问题抽象 2.2.4 数学抽象 2.2....
  • 根据卫星模型太阳能帆板平面相对卫星主体较大的特点,提出了共形边界的概念,即总场边界、外推边界和吸收边界的几何形状与目标外形轮廓相同.并把它应用在卫星模型时域有限差分(FDTD)计算中,以减少FDTD计算及存储...
  • 计算机几何算法总结

    千次阅读 2019-01-28 10:08:43
    ... 计算几何算法概览 一、引言  计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来...作为计算机科学的一个分支,计算几何主要研究解决几何问题的算法。在现代...
  • 这种结构的核心是对这个问题的简单而有趣的回答:AdS中的哪个对象计算出保块? 答案是“测地维滕图”,它本质上是一个普通的交换维滕图,除了三次顶点不集成在所有AdS上,而仅集成在连接边界算子的大地测地上。 ...
  • 利用一个到圆上的双曲空间的共形图,我们在偶数维共形场理论中计算了一个球体对真空缠结熵(EE)的普遍贡献。 由于缺乏对轨迹异常中适当边界项的了解,阻碍了以前以此方式导出EE的尝试。 在本文中,我们表明EE的通用...
  • 其中包括多种不同形式的几何计算,例如圆形,直线等。 Installa Gogeom-用于Go编程语言的几何库。 这是Go语言的几何库。 其中包括多种不同形式的几何计算,例如圆形,直线等。 安装使用go get完成安装。 go get -u ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,481
精华内容 18,592
关键字:

计算共形几何