计算几何---曲面三角形差值公式

1.对非平面的三角形面片进行差值,可以从指定的定点法相、或者边界切线方向开始进行差值,即从三个端点值,以及留个且向量使用Hermite差值完成。

  对于曲面三角形的任一条边,如上图所示。如果向量定点v0处的法向量n0没有给出通过标签<normal>给出,则通过计算v0点的两个边的切向量的叉积的方式,计算v0d的法相量n0。

其中,该曲面三角巷的曲率边通过标签<vertices>下的元素<edge>进行指定。

  计算重心点的且向量,通过使用二次Hermite曲线差值的方式,然后对切片法向量单位化处理。

  同理,然后计算定点v1。

  如果且向量也没有在<edge>中指定,则v0出的曲线且向量垂直于v0的顶点法向量与[V1 -V0]矢量的叉积结果。因此可以使用下面的公式:其中:d = V0V1向量。

2. 计算插值点的相关量

(1) 计算中点出的点v(0.5),通过二阶Hermite曲线差值来计算中点点的坐标。;

(2)通过二阶Hermite曲线差值函数的倒数来计算中点的且向量;

3. 划曲面三角形细分

  这样,三条曲线边就产生的三个新顶点,新法向量。将三角形划分成为4个三角形。

  递归处理,指导精度达到要求。

endl;

  

时间: 2024-11-08 17:50:19

计算几何---曲面三角形差值公式的相关文章

什么是差值查找?

1.插值查找与二分查找很类似,都是用于在有序的基础上查找某个元素 2.二分查找的原理是,每次都取一半,然后与mid值比较,再决定下一次查找的范围 3.设想在一本英文字典里查找某个单词,因为是根据字母序排列好的,你不会傻到采用二分查找的方法,先找到这本字典的一半,再取这本字典的四分之一...这样下去比较吧,这种效率显然不是最快的,此时就轮到我们的差值查找出场了. 4.差值公式的推导: 有序序列: 1 2,3,4,5,6,7,8,9,10 比例公式:   假设数组a[i]已经有序 (key-low)

Zoj 3598 Spherical Triangle 【计算几何】【曲面三角形】

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3598 题目大意:给出一个球体上的三点,三点的坐标以经纬度的形式给出,求曲面三角形的内角和. 即:给出ABC三个点的经纬度,求出 角A+ 角B+角C的值. 利用公式即可求得 cosa=cosb*cosc+sinb*sinc*cosA 其中小写a,b,c表示球面三角形边长所对应的圆心角 大写A表示三角形内角. 下面的难度就是求出abc角的大小即可. 网上看了一个写法

一维差值维护心得

一维差值维护是一种简单的小算法,该算法用一个巧妙地数列机制解决了多次对数列进行数据加减操作的复杂度,这个算法的思维偏向于动态规范.下面我们从一个问题开始入手介绍这个算法: 问题描述: 已知n个数的数列a,有m次操作,每次操作给定l,r,k三个数,使得al到ar内所有数加上k.注意l到r的区间包含al和ar两个数. 输入数据: 第一行n和m,接下来一行有n个数,表示数列a,接下来有m行,每行有三个数l,r,k,详细解释参考问题描述. 输出数据: 1行n个数,表示经过m次操作之后的数组a. 输入样例

阿里 2014-08-29 校招机试题 求一个存放整数的二叉树相差最大的两节点差值绝对值

题目:写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这颗二叉树中相差最大的两个节点间的差值绝对值.请注意程序效率. 如果是数值之差,感觉怎么着也得遍历一遍,直接修改下二叉树的基本遍历代码就可以. #include<stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node * left; struct Node * right; } BitNode, *BiTree; /* 求

查找(哨兵查找、二分查找、差值查找)

#include <iostream> using namespace std; #define N 10 int fib(int n) { if(n == 0) { return 0; } else if(n == 1) { return 1; } else { return (fib(n-1) + fib(n-2)); } } //普通查找: int sequenctial_Search(int *a,int n,int key) { int i; a[0] = key; i = n; w

Houdini中给火花渲染准确的运动模糊 - 给运动模糊做非线性差值的方法以及固定粒子点数的方法

估计大家都知道使用运动速度来进行运动模糊的渲染,但是往往这个方法得到的运动模糊都是线性变化的,虽然乍一看没什么问题,但是如果想要每一帧的模糊轨迹也是有曲线变化的而不是僵硬的直来直去的话,使用trail算个速度来做的运动模糊是永远做不到这一点的. 这里我想通过常用的火花(spark)的运动模糊来讲一讲我所了解的一些比较好的方法. 所谓渲染中的运动模糊无非就是差值算法.目前使用的比较多的主要有两种.第一种就是上面说到的直接使用速度来线性差值,这种方法会计算每一个点的速度方向,计算出前一帧或者后一帧的

华为机试—差值排序

对整形数组按照和指定整数的差值大小进行排序,按照差值升序排列返回. 要求实现方法: public staticint[] calcTimes(int[] num, int value); [输入] num:整型数组: value 指定的整数 [返回] 按照升序返回整型数组,排序按照各个整数和指定整数的差值大小 [注意]只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例 输入:num = {1,2,3,4,5,10,17,18,19}  value = 5 返回:{5,4,3,2,1,

二分查找的改进--差值查找

差值查找 在二分查找中,我们每次比较都可以排除一半的数据量,这个已经是很高效了.如果利用关键字本身的信息,每次排除的数据量充分依赖于关键字的大小,则查找会更高效,这就是差值查找的思想. 下面通过示例代码,比较二分查找和差值查找的不同,在不同中领略差值查找的改良之处. #include <stdio.h> #include <stdlib.h> int InterSearch(int *array, int n, int key) { if (array && n &

hdu1598find the most comfortable road(并查集+枚举,求起点到终点的边中最大边减最小边差值最小)

Problem Description XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流,每条SARS都对行驶在上面的Flycar限制了固定的Speed,同时XX星人对 Flycar的"舒适度"有特殊要求,即乘坐过程中最高速度与最低速度的差越小乘坐越舒服 ,(理解为SARS的限速要求,flycar必须瞬间提速/降速,痛苦呀 ), 但XX星人对时间却没那么多要求.要你找出一条城市间的最舒适的路径.(